SVM算法推导(先以二维平面点为例)
待解决问题:
设有个样本集合X={(x11,x21),(x12,x22),(x13,x23),...,(x1n,x2n)}x1i,x2i∈R,X样本集合的标签为集合Y={y1,y2,y3,...,yn}yi∈{−1,1},则我们需要找到一条直线w1x1i+w2x2i+b=0将样本集合按照Y的标记分为两类(-1和1各一类),如下图所示:
分割线为: w1x1+w2x2+b=0
红色正样本边界且与分割先平行的直线: w1x1+w2x2+b=1
绿色负样本边界且与分割先平行的直线: w1x1+w2x2+b=−1
所有正样本满足: w1x1+w2x2+b≥1
所有负样本满足: w1x1+w2x2+b≤−1

最大间隙
如下图可以看出,要将样本一分为二的直线有无数多个,凭直觉来看,应该是蓝色的线条分割更为合理,如果有新的测试数据输入,则被准确分割的概率更大,而橘色和绿色的虚线则准确率不会很高

那么什么样的直线才是最优的直线呢,试想一下,如果将两种样本分离得越远(也就是便捷的间隙越大)则划分就是最优的,从而也就将问题转换为正负样本集合离分割先最近的点到分界线的距离越远越好,如图:

从上图中d1,d2为正负样本的边界到绿色直线的距离,r1,r2为正负样本到蓝色直线的距离,容易看出d1+d2 < r1+r2的,因此蓝色直线的划分要比绿色直线的划分更为合理.
如何找到最合理的直线
这里我们假定已经找到直线w1x+w2y+b=0,那么正负样本到分割先的距离都应该为(根据平行线间距离公式可得):
r1=w12+w22∣∣1−0∣∣=w12+w221r2=w12+w22∣∣−1−0∣∣=w12+w221
则,两个分类的边界间隙则为:
r=r1+r2=w12+w222
那么问题就转换为求解:
maxw12+w222
由于w12+w22≥0,w12≥0,w22≥0因此上述问题也就是求解:
min21(w12+w22)
由于求出的解需要让所有的正样本满足:w1x1+w2x2+b≥1,且负样本都满足:w1x1+w2x2+b≤−1,那么我们可以将正负样本需要满足的不等式左右同时乘以他们的标签yi,则所有的样本都需要满足yi(w1x1i+w2x2i+b)≥1,则问题转换为:
min21(w12+w22)s.t.yi(w1x1i+w2x2i+b)≥1i∈{1,2,3,...,n}
也即:
min21(w12+w22)s.t.1−yi(w1x1i+w2x2i+b)≤0i∈{1,2,3,...,n}
注意:如果又n个样本,上述求解问题中的约束条件就应该有n个,也就是每组(x1i,x2i)都会构成一个约束条件
则,通过拉格朗日乘数法进行求解,对每个约束条件添加松弛变量αi,乘子ηi写出拉格朗日函数:
L(w1,w2,b,αi,ηi)=21(w12+w22)+i=1∑nηi[1−yi(w1x1i+w2i+b)+αi2]
对w1,w2,b,αi,ηi分别求偏导数,并在其为0的时候为极值点,得到一下方程组:
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧Δw1ΔL=w1−∑i=1nx1iyiηi=0Δw2ΔL=w2−∑i=1nx2iyiηi=0ΔbΔL=∑i=1nyiηi=0ΔαiΔL=2ηiαi=0ΔηiΔL=yi(w1x1i+w2i+b)+αi2=0
求解上述方程组,即可得到最优的w1,w2,b