为了简便,我们从二分类问题开始。
损失函数
为了将绿色方块的点和红色圆圈的点分开,我们需要找到超平面(在二维空间中是线,三维是平面)。在上图中,直觉告诉我们,
B1
的线更加好,因为它对训练样本局部扰动的“容忍”性最好。
我们可以用以下的线性方程组描述
B1
:
wTx+b=0
其中
w
就是该超平面的法向量,关于这点,我们可以任取在该超平面上的两个点
x1,x2
,减一下得到
wT(x1−x2)=0
,那么对于
x1,x2
所决定的直线,
w
都与它垂直,所以它就是法向量。
那么任意点到超平面的距离也就可以写成:
r=|wTx+b|||w||
关于这点,我们可以这么想,任取
B1
上任意一点
x'
(过渡的中间变量),那么对于任意一点
x
到超平面的距离为
x−x′
在法向量
w
上的投影长度:
r=|wT(x−x')|||w||=|wTx+b|||w||
那么对于一个分类器
y=wTx+b
,对一个样本
xi
我们可以令:
{wTx+b≥+1,yi=+1wTx+b≤−1,yi=−1
我们可以通过成倍的改变
w,b
来改变不等式右边的值,这里固定为1便于后面计算。
那几个让等号成立的点被称为支持向量,也就是图中的
b11
和
b12
,
那么:
margin γ=2||w||
svm就是想要找到最大margin的超平面,现在我们可以用数学语言来描述这个需求:
maxw,b2||w||s.t.yi(wTx+b)≥1,i=1,2,...,m.
yi
用于消除正负的影响。
上面的式子又等价于(为了简便):
minw,b12||w||2s.t.yi(wTx+b)≥1,i=1,2,...,m.
现在,我们有了SVM的数学描述,下面就是如何求解了。
拉格朗日乘子法
其实这就是一个凸二次优化问题,有现成的库可以直接求解,但是我们还有更优雅的数学上的解法。
”拉格朗日乘子法是一种经典的求解条件极值的解析方法,可将所有约束的优化模型问题转化为无约束极值问题的求解。“我们使用拉格朗日乘子法将上述问题转化为它的”对偶问题“,便于解决。
我们首先添加拉格朗日乘子
αi≥0
,从而得到:
L(w,b,α)=12||w||2+∑i=1mαi(1−yi(wTxi+b))
令
θ(w)=maxαi≥0L(w,b,α)
当所有的
yi(wTx+b)≥1
时,
θ(w)
显然取到最大值
12||w||2
,否则
θ(w)
能够取到
∞
。所以当满足所有约束条件时,最小化
θ(w)
就是最小化
12||w||2
。
也就是:
minw,bθ(w)=minw,bmaxαi≥0L(w,b,α)=p∗
这里我们是先对
α
求最大值,之后再对
w,b
求最小值。
下面我们先对
w,b
求最小,再对
α
求最大。
即:
maxαi≥0minw,bL(w,b,α)=d∗
因为最大值中的最小值肯定大于等于最小值中的最大值,所以
p∗≥d∗
当满足KKT条件时,
p∗=d∗
。
此处,kkt条件应为
α≥0yi(wTx+b)−1≥0αi(yi(wTxi+b)−1)=0
关于这点请参考
https://www.zhihu.com/question/23311674。
简单的说,在极值点
x∗
,目标函数增大的方向应该被排除在外。
因为先对
w,b
求最小,那么先令w和b的偏导等于0:
w=∑i=1mαiyixi∑i=1mαiyi=0
将w和b代入原式:
L(w,b,a)=∑i=1nαi−12∑i=1mαiαjyiyjxTixj
经过如上的转化,我们把问题转化为了:
maxa∑i=1nαi−12∑i=1mαiαjyiyjxTixjs.t.ai≥0,i=1,...,n∑i=1mαiyi=0
SMO
为了求出
α
,我们会使用SMO算法。
针对
∑i=1mαiyi=0
此式,我们假设
α1和α2
是变量,其他的
α
是常量。那么
α2=1y2(∑i=3nαiyi−α1y1)≜y2(K−α1y1)
将
α2
带回原目标函数中,就可以消去
α2
,那么整个目标函数就是一个关于
α1
的一元二次函数。同时因为
α1和α2
都有范围,所以可以得到
α1
的一个取值范围,在这个范围内,我们可以很快的对二次函数求最大值,即完成一次迭代。
软间隔
我们之前讨论的默认条件是数据是线性可分的。我们在样本空间中找到一个超平面将其完全分割开来,这个超平面是最大化margin来确定的。但是很多情况下,数据不是线性可分的,会有一些outlier,如果我们将这些outlier也算进去,那我们获得的超平面会有很大程度上的过拟合。
我们原来对所有的样本都要求
yi(wTxi+b)≥1
现在我们允许一些样本不满足上述约束,当然,这样的样本应该尽量的少。
我们改写原来的优化目标:
minw,b12||w||2+C∑i=1ml0/1(yi(wTxi+b)−1),C>0
这里的
C
用来控制第一项寻找margin最大的超平面和第二项保证数据量偏差最小之间的权重。上式中的
l01
是一个01损失函数,我们一般使用hinge loss来替换它:
lhinge(z)=max(0,1−z)
原本的分类平面是红色的线,对应的分别是蓝色和粉色的线。但是考虑到黑圈圈起来的蓝点,原来的超平面就偏移到黑色虚线那里了。
现在我们引入松弛变量
ξi≥0
,对应上图黑色线段,据此将约束条件改为
yi(wTxi+b)≥1−ξi
再重写上式
minw,b12||w||2+C∑i=1mξi
接下来同上面的拉格朗日乘子法,我们可以解得
maxαs.t.,∑i=1mαi–12∑i,j=1mαiαjyiyj⟨xi,xj⟩0≤αi≤C,i=1,…,m∑i=1mαiyi=0(25)(26)(27)
Reference
https://www.cnblogs.com/en-heng/p/5965438.html
《机器学习》 周志华
http://blog.pluskid.org/(kid神真的写的好啊)
https://www.cnblogs.com/90zeng/p/Lagrange_duality.html
https://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html(SMO,写的非常详细)