持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
支持向量机需要的理论知识:
- 拉格朗日乘数法,需要了解这种方法能用于求多元函数最值,
尽管可能解不出来
我们先从一个类似的模型切入,单层感知机。单层感知机是通过画一条线分割,三维则是面,更多维没法想象,称之为超平面。用来将对应的散点图分层两个区域(最简单的情况)
表达式上下就是两类。
而支持向量机是一个类似的想法。但是它是想找一个尽量宽的间隔带分割数据集,具体来说就是找到满足上面表达式的y 取 +1 和 -1的值,同时满足其他点在这两条线之外。这个时候。满足条件的x称之为 支持向量。
这个时候我们其实已经有了约束条件和目标。要做的就是求解这个优化问题。
注意,取值为 +1和-1的两条直线实际上是平行的。而我们想要让它们尽量分开,所以需要求较大值的函数如下:
y=∣∣w∣∣∣1−(−1)∣=∣∣w∣∣2
第一次问题转化在这之上,求y的最大值,就是求其倒数的最小值。又因为目标是一个范数,所以平方不改变其极值点。
所以目标变为:
y=2∣∣w∣∣2
并且取值范围为
y⋅y^≥1
在这里就引入拉个朗日乘数法,再次改变目标函数。
L=2∣∣w∣∣2+i=1∑nλi(1−yi⋅y^i)
y^的预测值实际上包含了w和b。
通过求偏导取各偏导为0的值解出w和b。带回目标。结果就会得到经典的所谓svm的对偶问题。
i=1∑nλi−21i=1∑nj=1∑nλiλjyiyjxiTxj
约束条件i=1∑nλiyi=0(由偏导得0得到)
其中得 xiTxj就是核函数做手脚的地方。因为仅仅只需要点积了,所有可以把特征映射简化成直接两个向量的某种运算,最后结果相当于点积就可以了。