SVM学习笔记

18 阅读3分钟

原文

www.blogjava.net/zhenandaci/… blog.csdn.net/a738779675/… blog.csdn.net/v_july_v/ar… #内容 ##定义 1.分类超平面

wTx+b=0w^Tx+b=0,令g(x)=wTx+bg(x)=w^Tx+bwwxx通通都是向量,bb为一个数。

2.样本点、点

Di=(xi,yi)D_i=(x_i,y_i)

说明:xix_i为向量,yiy_i为类别标记,二元的线性分类中,标记只有两个值,+1(正类)和-1(负类),

3.样本点与超平面关系

wTxi+b>0w^Tx_i+b>0表示按照超平面分,xix_i属于正类;反之yiy_i属于负类。

在样本完全可分的条件下,存在超平面使得yi(wTxi+b)y_i(w^Tx_i+b)总是大于0,yi(wTxi+b)>0恒成立,等于0拒绝判断y_i(w^Tx_i+b)>0恒成立,等于0拒绝判断

4.间隔

对于样本点Di=(xi,yi)D_i=(x_i,y_i),δi=g(x)=yi(wTxi+b)δ_i=|g(x)|=y_i(w^Tx_i+b)

5.几何间隔

对于样本点Di=(xi,yi)D_i=(x_i,y_i)δi=1wg(x)δ'_i=\frac{1}{||w||}|g(x)|,即点到面距离。

6.支撑向量、支撑点:离分类超平面最近的样本点。 ##SVM优化目标

1.口语化支撑点确定的条件下,最大化几何间隔,即离分类超平面最近的样本与分类超平面的距离尽量远。

假设离分割线最近的样本(支撑向量、支撑点)为(xk,yk)(x_k,y_k),过支撑点的且与分类超平面平行的面为 yk(wTxk+b)=Ky_k(w^Tx_k+b)=K,不存在比(xk,yk)(x_k,y_k)距离, 超平面wTx+b=0w^Tx+b=0更近的点,即yi(wTxi+b)<Ky_i(w^Tx_i+b)<K 不成立。

2.形式化表述:

设支撑点为(xk,yk)(x_k,y_k)

优化目标为

maxw,byk(wTxk+b)w (1)s.t. yi(wTxi+b)K i=1,2,..,nmax_{w,b}\frac{y_k(w^Tx_k+b)}{||w||}\ (1)\\ s.t.\ y_i(w^Tx_i+b)\geq K\ i=1,2,..,n
maxw,bKws.t. yi(wTxi+b)K i=1,2,..,nmax_{w,b}\frac{K}{||w||}\\ s.t.\ y_i(w^Tx_i+b)\geq K \ i=1,2,..,n

解释:之所以加上约束条件,是因为没有比(xk,yk)(x_k,y_k)这个支撑点距离超平面wTx+b=0w^Tx+b=0更近的点了。

有的地方写: maxw,b{yk(wTxk+b)wmink[yi(wTxi+b)]} max_{w,b}\{\frac{y_k(w^Tx_k+b)}{||w||}min_k[y_i(w^Tx_i+b)]\} 这是一样的,这把支撑点的寻找也算进去了。

3.化简变换

w=wK w'=\frac{w}{K}
b=bKb'=\frac{b}{K}

将其带入(1)得:

maxKwT,Kbyk(KwTxk+Kb)Kws.t. yi(KwTxi+Kb)K i=1,2,..,nmax_{K{w'}^T,Kb'}\frac{y_k(K{w'}^Tx_k+Kb')}{K||w'||}\\s.t.\ y_i(K{w'}^Tx_i+Kb')\geq K\ i=1,2,..,n
maxKw,Kbyk(wTxk+b)ws.t. yi(wTxi+b)1 i=1,2,..,nmax_{Kw',Kb'}\frac{y_k({w'}^Tx_k+b')}{||w'||}\\ s.t.\ y_i({w'}^Tx_i+b')\geq 1\ i=1,2,..,n
maxw,byk(wTxk+b)ws.t. yi(wTxi+b)1 i=1,2,..,nmax_{w',b'}\frac{y_k({w'}^Tx_k+b')}{||w'||}\\ s.t.\ y_i({w'}^Tx_i+b')\geq 1\ i=1,2,..,n
maxw,b1ws.t. yi(wTxi+b)1 i=1,2,..,nmax_{w',b'}\frac{1}{||w'||}\\ s.t.\ y_i({w'}^Tx_i+b')\geq 1\ i=1,2,..,n

这是把所谓的间隔δi=g(x)=yi(wTxi+b)δ_i=|g(x)|=y_i(w^Tx_i+b)固定为1的推导?

去掉'得:

maxw,b1ws.t. yi(wTxi+b)1 i=1,2,..,nminw,bwmax_{w,b}\frac{1}{||w||} \\ s.t.\ y_i(w^Tx_i+b)\geq 1\ i=1,2,..,n\\ min_{w,b}||w||
minw,b12w2 (2)s.t. yi(wTxi+b)1 i=1,2,..,nmin_{w,b}\frac{1}{2}{||w||}^2 \ (2)\\ s.t.\ y_i(w^Tx_i+b)\geq 1\ i=1,2,..,n

至此得出(2)为我们熟悉的SVM优化目标.

疑问:支撑点如何确定?

SVM求解

运用拉格朗日乘子法,定义拉格朗日函数如下:

L(w,b,α)=12w2i=1nαi(yi(wTxi+b)1)s.t. αi0 yi(wTxi+b)>=1 i=1,2,..,nL(w,b,α)=\frac{1}{2}||w||^2−\sum_{i=1}^{n}{α_i(y_i(w^Tx_i+b)−1)}\\ s.t.\ α_i\geq 0\ y_i(w^Tx_i+b)>=1\ i=1,2,..,n

(xi,yi)(x_i,y_i)是支撑向量,则i=1nαi(yi(wTxi+b)1)\sum_{i=1}^{n}{α_i(y_i(w^Tx_i+b)−1)}为0,因为支撑向量的间隔为1。 目标:(1)既要对对乘子αα最大化LL,maxαL(w,b,α)max_{α}L(w,b,α) (2)又要对参数(w,b)(w,b)最小化LL(解SVM要求),minw,bL(w,b,α)min_{w,b}L(w,b,α)。(1)(2)是有顺序的

结合一下得:

minw,b{maxαL(w,b,α)}s.t. αi0 ,yi(wTxi+b)>=1 i=1,2,..,nmin_{w,b}\{max_{α}L(w,b,α)\}\\ s.t.\ α_i\geq 0\ , y_i(w^Tx_i+b)>=1\ i=1,2,..,n

为什么αi0α_i\geq 0?,若αi<0α_i<0i=1nαi(yi(wTxi+b)1)\sum_{i=1}^{n}{α_i(y_i(w^Tx_i+b)−1)}恒小于0,求maxαL(w,b,α)max_{α}L(w,b,α),α尽量小就行了,maxαL(w,b,α)max_{α}L(w,b,α)无穷大,求个毛的最大值。 一正(12w20)\frac{1}{2}||w||^2\geq 0)一负(i=1nαi(yi(wTxi+b)1)0\sum_{i=1}^{n}{α_i(y_i(w^Tx_i+b)−1)}\leq0)才好求极值。

minw,b{maxαL(w,b,α)}min_{w,b}\{max_{α}L(w,b,α)\}中需要先求maxαL(w,b,α)max_{α}L(w,b,α),再求minw,bL(w,b,α)min_{w,b}L(w,b,α)。由于αα是有约束的,无法先求maxαL(w,b,α)max_{α}L(w,b,α)。能不能先求minw,bL(w,b,α)min_{w,b}L(w,b,α)再求maxαL(w,b,α)max_{α}L(w,b,α)

即把minw,b{maxαL(w,b,α)}min_{w,b}\{max_{α}L(w,b,α)\}变为 maxα{minw,bL(w,b,α)}max_{α}\{min_{w,b}L(w,b,α)\}?即变成先求minw,bL(w,b,α)min_{w,b}L(w,b,α),再求maxαL(w,b,α)max_{α}L(w,b,α)

答案是可以的。

证明如下: 任取αα',显然有maxαL(w,b,α)L(w,b,α)max_αL(w,b,α)≥L(w,b,α'),因此,有: minw,bmaxαL(w,b,α)minw,bL(w,b,α) (3)min_{w,b}max_αL(w,b,α)≥min_{w,b}L(w,b,α′)\ (3) 又因为αα'是任取的,也就是说: minw,bmaxαL(w,b,α)maxαminw,bL(w,b,α) (4)min_{w,b}max_αL(w,b,α)≥max_{α'}min_{w,b}L(w,b,α')\ (4) αα'是任取的,当然也可以去掉那一撇。(3)转化为(4)的口语化表达是:a大于等于任意的b,则a大于等于b的最大值,maxαL(w,b,α)max_αL(w,b,α)是a,minw,bL(w,b,α)min_{w,b}L(w,b,α′)为任意的b,maxaminw,bL(w,b,α)max_a'min_{w,b}L(w,b,α′)为b的最大值。 以上过程对应弱对偶性,即对偶问题(不等式右边)是原问题(不等式左边)的下界。

事实上(3)中左边和右边满足强对偶性,minw,bmaxαL(w,b,α)=maxαminw,bL(w,b,α)min_{w,b}max_{α}L(w,b,α)=max_{α}min_{w,b}L(w,b,α)

若原始问题(对偶问题)有一个确定的最优解,那么对偶问题(原始问题)也有一个确定的最优解,而且这两个最优解所对应的目标函数值相等,这就是强对偶性

证明如下:

minw,b{maxαL(w,b,α)}=minw,b{maxα{12w2i=1nαi(yi(wTxi+b)1)}}=minw,b12w2maxα{minw,bi=1nαi(yi(wTxi+b)1)}=minw,b12w2根据条件显然后面那个式子等于0=maxα{minw,bL(w,b,α)}min_{w,b}\{max_{α}L(w,b,α)\}\\ =min_{w,b}\{max_{α}\{\frac{1}{2}||w||^2−\sum_{i=1}^{n}{α_i(y_i(w^Tx_i+b)−1)}\}\}\\ =min_{w,b}\frac{1}{2}{||w||}^2−max_α\{min_{w,b}\sum_{i=1}^{n}{α_i(y_i(w^Tx_i+b)−1)}\}\\ =min_{w,b}\frac{1}{2}||w||^2 根据条件显然后面那个式子等于0 \\ =max_{α}\{min_{w,b}L(w,b,α)\}

优化目标变为

maxα{minw,bL(w,b,α)}s.t. αi0yi(wTxi+b)>=1 i=1,2,..,nmax_{α}\{min_{w,b}L(w,b,α)\}\\ s.t.\ α_i\geq 0\,y_i(w^Tx_i+b)>=1\ i=1,2,..,n

此时,先求里层的minw,bL(w,b,α)min_{w,b}L(w,b,α),只需让L(w,b,α)L(w,b,α)分别对wwbb求偏导,再令其为0就可以。

Lw=wi=1nαiyixi=0Lb=i=1nαiyi=0w=i=1nαiyixi (5)i=1nαiyi=0 (6)\frac{\partial L}{\partial w}=w- \sum_{i=1}^{n}{α_iy_ix_i}=0 \\ \frac{\partial L}{\partial b}=- \sum_{i=1}^{n}{α_iy_i}=0 \\ w=\sum_{i=1}^{n}{α_iy_ix_i}\ (5) \\ \sum_{i=1}^{n}{α_iy_i}=0\ (6)

将(5)(6)带入格朗日函数L得:

minw,bL(w,b,α)=i=1nαi12i=1nj=1n(αiαjyiyj<xixj>)min_{w,b}L(w,b,α)=\sum_{i=1}^{n}{α_i}-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}(α_iα_jy_iy_j<x_i•x_j>)

< • ><\ •\ >表示内积。

推导过程如下:

L(w,b,α)=12w2i=1nαi(yi(wTxi+b)1)=12wTwwTi=1nαiyixibi=1nαiyi+i=1nαi=12wTi=1nαiyixiwTi=1nαiyixib0+i=1nαiL(w,b,α)=\frac{1}{2}{||w||}^2-\sum_{i=1}^{n}{α_i(y_i(w^Tx_i+b)−1)}\\ =\frac{1}{2}w^Tw-w^T\sum_{i=1}^{n}{α_iy_ix_i}-b\sum_{i=1}^{n}{α_iy_i}+\sum_{i=1}^{n}{α_i}\\=\frac{1}{2}w^T\sum_{i=1}^{n}{α_iy_ix_i}-w^T\sum_{i=1}^{n}{α_iy_ix_i}-b*0+\sum_{i=1}^{n}{α_i}

将(5),(6)带入

=i=1nαi12wTi=1nαiyixi=i=1nαi12(j=1nαjyjxj)Ti=1nαiyixi=\sum_{i=1}^{n}{α_i}-\frac{1}{2}w^T\sum_{i=1}^{n}{α_iy_ix_i}\\ =\sum_{i=1}^{n}{α_i}-\frac{1}{2}{(\sum_{j=1}^{n}{α_jy_jx_j})}^T\sum_{i=1}^{n}{α_iy_ix_i}

将(5)带入

=i=1nαi12i=1nj=1n(αiαjyiyj<xixj>)=\sum_{i=1}^{n}{α_i}-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}(α_iα_jy_iy_j<x_i•x_j>)

此时优化目标变为:

maxα{i=1nαi12i=1nj=1n(αiαjyiyj<xixj>)}s.t. αi0 ,i=1nαiyi=0 i=1,2,..,nmax_{α}\{\sum_{i=1}^{n}{α_i}-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}(α_iα_jy_iy_j<x_i•x_j>)\}\\ s.t.\ α_i\geq 0\ ,\sum_{i=1}^{n}{α_iy_i}=0\ i=1,2,..,n

这个式子可以通过SMO等算法进行求解αα

求出αα后,根据

w=i=1nαiyixi (7)w=\sum_{i=1}^{n}{α_iy_ix_i} \ (7)

b=maxi:yi=1wTxi+mini:yi=1wTxi2 (8)b=-\frac{max_{i:y_i=-1}w^Tx_i+min_{i:y_i=1}w^Tx_i}{2} \ (8)

求出wwbb

(8)的意思是,分别找出正类的支撑向量(mini:yi=1min_{i:y_i=1})与负类的支撑向量maxi:yi=1max_{i:y_i=-1},求出各自的bb,然后求平均。

对于正类支撑向量xmx_m,过xmx_m且与分类超平面平行的平面H1H_1wTxm+bm=0w^Tx_m+b_m=0,bm=wTxmb_m=-w^Tx_m 对于正类支撑向量xnx_n,过xnx_n且与分类超平面平行的平面H2H_2wTxn+bn=0w^Tx_n+b_n=0,bn=wTxnb_n=-w^Tx_n 超平面正好夹在H1H_1H2H_2中间,b=bm+bn2b=-\frac{b_m+b_n}{2}

上述公式其实是一般的求法,包括了线性可分与线性不可分的情况,