SVM是一个非常经典的监督学习算法。下面给出SVM对于二值分类的原理及推导过程。
1、问题转化
如下图所示:
想要找一条直线
wx+b=0将图中红蓝两类样本区分开,假设将这条线向左和向右分别平移,接触到样本点停止,得到两条新的直线,设它们分别为
wx+b=c和
wx+b=−c。
令
w=cw,b=cb,则这两条直线转化为
wx+b=1和
wx+b=−1。此时,令
wx+b=0也左右同时除以
c,仍得到
wx+b=0。
SVM的目的即找到直线
wx+b=0,使得
wx+b=1和
wx+b=−1之间的距离
2d=∣∣w∣∣2最大。
所以,只要保证:
min21∣∣w∣∣2
由于在上图中红线的上方
wx+b<0,且标签
y=−1;而在红线的下方有
wx+b>0,且标签
y=1,故有约束条件:
(wxi+b)yi≥1
到这里,此问题已被转化为一有约束的优化问题:
{min21∣∣w∣∣2(wxi+b)yi≥1
对于小样本问题,可以用拉格朗日乘子法解决。
详细解法参照 https://blog.csdn.net/qq_36758914/article/details/103324074
2、拉格朗日对偶
此处引入拉格朗日对偶的概念。
1) 原始问题
假设
f(x),ci(x),hj(x)是定义在
Rn上的连续可微函数,考虑约束最优化问题:
x∈Rnminf(x)
s.t.ci(x)≤0,i=1,2,…,k;hj(x)=0,i=1,2,…,l
称此约束最优化问题为原始最优化问题或原始问题。
首先,引进广义拉格朗日函数:
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)
这里,
x=(x(1),x(2),…,x(n))T∈Rn,
αi,βj是拉格朗日乘子,
αi≥0。考虑
x的函数:
θp(x)=α,β,αi≥0maxL(x,α,β)
假设给定某个
x,如果
x违反原始问题的约束条件,即存在某个
i使得
ci(x)>0或者存在某个
j使得
hj(x)=0,那么就有:
θp(x)=α,β,αi≥0max[f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)]=+∞
因为若某个
i使得
ci(x)>0,则可以令
αi→+∞,若某个
j使
hj(x)=0,则可令
βj→+∞。以上两种情况均可以使
θp(x)=+∞。
相反地,若
x满足约束条件,则:
θp(x)=α,β,αi≥0max[f(x)+i=1∑kαici(x)]
由于
αi≥0,
ci(x)≤0,故
i=1∑kαici(x)≤0。所以:
θp(x)=f(x)
即:
θp(x)={f(x),+∞,x满足原问题约束其他
如果考虑极小化问题
xminθp(x)=xminα,β,αi≥0maxL(x,α,β)
由
θp(x)的表达式可知,
xminθp(x)是与原始最优化问题等价的,也就是说它们的解相同。问题
xminα,β,αi≥0maxL(x,α,β)被称为广义拉格朗日函数的极小极大问题。
2)对偶问题
定义
θD(α,β)=xminL(x,α,β)
再考虑极大化
θD(α,β),即:
α,β,αi≥0maxθD(α,β)=α,β,αi≥0maxxminL(x,α,β)
问题
α,β,αi≥0maxxminL(x,α,β)称为广义拉格朗日函数的极大极小问题。
若目标函数与所有约束函数皆为凸函数,则原始问题和它的对偶问题是等价的。
而对于
SVM,其所有函数皆为凸函数。
3、SVM的对偶问题
{min21w2(wxi+b)yi≥1
其广义拉格朗日函数为:
L(w,b,α)=21w2+i=1∑Nαi[1−(wxi+b)yi]
原问题:
w,bminαi≥0maxL(w,b,α)
对偶问题:
αi≥0maxw,bminL(w,b,α)
先对
L(x,α,β)求极小值:
∂w∂L=0⇒w=i=1∑Nαixiyi
∂b∂L=0⇒i=1∑Nαiyi=0
将结果带入对偶问题,可将其转化为下式:
αi≥0max21(i=1∑Nαixiyi)2+i=1∑Nαi[1−((j=1∑Nαjxjyj)xi+b)yi]
=αi≥0max21(i=1∑Nαixiyi)2+i=1∑Nαi[1−(j=1∑Nαjxjyj)xiyi]
=αi≥0max21(i=1∑Nαixiyi)2+i=1∑Nαi−i=1∑Nj=1∑Nαixiyiαjxjyj
=αi≥0max−21i=1∑Nj=1∑Nαiαjyiyj<xixj>+i=1∑Nαi
约束条件为:
i=1∑Nαiyi=0αi≥0
KKT条件为:
αi[1−(wxi+b)yi=0
故原始问题被转化为:
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧αi≥0max−21i=1∑Nj=1∑Nαiαjyiyj<xixj>+i=1∑Nαii=1∑Nαiyi=0αi≥0αi[1−(wxi+b)yi=0
4、SMO算法(序列最小优化算法)
优化此问题时采用SMO算法。
假设此问题中只有
α1到
α10,则SMO算法的步骤如下。
1)先固定
α3到
α10,则最优化函数变为:
αi≥0max−21i=1∑2j=1∑2αiαjyiyj<xixj>+i=1∑2αi
约束条件变为:
α1y1+α2y2=−i=3∑10αiyi为一常数
则此优化问题变成了一个二维变量(
α1,α2)的优化问题,使原来的十维优化问题大大简化。
这时,可以先算出最优的
α1和
α2。
2)固定
α1和
α4到
α10,重复以上操作并代入最优的
α1,得到最优的
α2和
α3。
3)固定
α1,
α2和
α5到
α10,重复以上操作并代入最优的
α1和
α2,得到最优的
α3和
α4。
……
4)得到所有的最优
α,将其代入
w=i=1∑10αixiyi,得到最优的
w值。
5)若得到的
αi=0,则表示第
i个约束条件不起作用;若得到的
αi=0,则它对应的
xi和
yi就是支持向量。
6)通过
y=(i=1∑Nαixiyi)Tx=i=1∑NαiyixiTx得到某样本点对应的标签。
5、线性不可分核函数
对于一些线性不可分的样本,如下图(左),不能找出一条直线来分类样本。此时需要做空间的变换。
设原空间为
χ⊂Rn,x=(x(1),x(2))T∈χ,新空间为
Z⊂R2,z=(z(1),z(2))T∈Z,定义从原空间到新空间的变换(映射):
z=ϕ(x)=((x(1))2,(x(2))2)T
经过变换
z=ϕ(x),原空间
χ⊂Rn变换为新空间
Z⊂R2,原空间中的点相应地变换为新空间中的点,原空间中的椭圆
w1(x(1))2+w2(x(2))2+b=0
变换为新空间中的直线
w1z(1)+w2z(2)+b=0
即由下图中的左图变为右图。
实际上我们并不需要知道经过空间变换后的
z1和
z2的具体值,因为由
y=(i=1∑Nαixiyi)Tx=i=1∑NαiyixiTx知,我们只需要知道
xi和
x的点积即可。
常用的空间变换有:
1)多项式核函数:
K(x,z)=(x⋅z+1)p
对应的支持向量机是一个
p次多项式的分类器。此时,分类决策函数变成:
f(x)=sign(i=1∑Nαiyi(xi⋅x+1)p+b)
2)高斯核函数:
K(x,z)=e−2σ2∣∣x−z∣∣2
对应的支持向量机是高斯径向基函数分类器。此时,分类决策函数变成:
f(x)=sign(i=1∑Nαiyie−2σ2∣∣xi−x∣∣2+b)