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.****.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)