SVM支持向量机原理推导

SVM是一个非常经典的监督学习算法。下面给出SVM对于二值分类的原理及推导过程。

1、问题转化

如下图所示:
SVM支持向量机原理推导想要找一条直线wx+b=0wx+b=0将图中红蓝两类样本区分开,假设将这条线向左和向右分别平移,接触到样本点停止,得到两条新的直线,设它们分别为wx+b=c  wx+b=c\;wx+b=cwx+b=-c
w=wc,b=bcw=\frac{w}{c},b=\frac{b}{c},则这两条直线转化为wx+b=1  wx+b=1\;wx+b=1wx+b=-1。此时,令wx+b=0wx+b=0也左右同时除以cc,仍得到wx+b=0wx+b=0
SVM的目的即找到直线wx+b=0wx+b=0,使得wx+b=1  wx+b=1\;wx+b=1wx+b=-1之间的距离2d=2w2d=\frac{2}{||w||}最大。
所以,只要保证:
min12w2min\quad \frac{1}{2}||w||^{2}
由于在上图中红线的上方wx+b<0  wx+b<0\;,且标签y=1y=-1;而在红线的下方有wx+b>0  wx+b>0\;,且标签y=1y=1,故有约束条件:
(wxi+b)yi1(wx_{i}+b)y_{i}\geq1
到这里,此问题已被转化为一有约束的优化问题:
{min  12w2(wxi+b)yi1\begin{cases} min\; \frac{1}{2}||w||^{2} \\ (wx_{i}+b)y_{i}\geq1 \end{cases}
对于小样本问题,可以用拉格朗日乘子法解决。
详细解法参照 https://blog.****.net/qq_36758914/article/details/103324074

2、拉格朗日对偶

此处引入拉格朗日对偶的概念。

1) 原始问题

假设f(x),ci(x),hj(x)f_{(x)}, c_{i(x)}, h_{j(x)}是定义在RnR^{n}上的连续可微函数,考虑约束最优化问题:
minxRnf(x)\mathop{min}\limits_{x\in R^{n}}f_{(x)}
s.t.ci(x)0  ,i=1,2,,k;hj(x)=0  ,i=1,2,,ls.t.\quad c_{i(x)}\leq0\;,i=1,2,…,k;\quad h_{j(x)}=0\;,i=1,2,…,l
称此约束最优化问题为原始最优化问题或原始问题。
首先,引进广义拉格朗日函数:
L(x,α,β)=f(x)+i=1kαici(x)+j=1lβjhj(x)L_{(x,\alpha,\beta)}=f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}+\sum_{j=1}^{l}\beta_{j}h_{j(x)}
这里,x=(x(1),x(2),,x(n))TRnx=(x^{(1)},x^{(2)},…,x^{(n)})^{T}\in R^{n}αi,  βj\alpha_{i},\; \beta_{j}是拉格朗日乘子,αi0\alpha_{i}\geq0。考虑xx的函数:
θp(x)=maxα,  β,  αi0L(x,α,β)\theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)}
假设给定某个xx,如果xx违反原始问题的约束条件,即存在某个ii使得ci(x)>0  c_{i(x)}>0\;或者存在某个jj使得hj(x)0h_{j(x)}\ne0,那么就有:
θp(x)=maxα,  β,  αi0[f(x)+i=1kαici(x)+j=1lβjhj(x)]=+\theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}[f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}+\sum_{j=1}^{l}\beta_{j}h_{j(x)}]=+\infty
因为若某个ii使得ci(x)>0c_{i(x)}>0,则可以令αi+\alpha_{i}\rightarrow+\infty,若某个jj使hj(x)0h_{j(x)}\ne0,则可令βj+\beta_{j}\rightarrow+\infty。以上两种情况均可以使  θp(x)=+\;\theta_{p(x)}=+\infty
相反地,若xx满足约束条件,则:
θp(x)=maxα,  β,  αi0[f(x)+i=1kαici(x)]\theta_{p(x)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}[f_{(x)}+\sum_{i=1}^{k}\alpha_{i}c_{i(x)}]
由于αi0\alpha_{i}\geq0ci(x)0c_{i(x)}\leq0,故i=1kαici(x)0\mathop{\sum}\limits_{i=1}^{k}\alpha_{i}c_{i(x)}\leq0。所以:
θp(x)=f(x)\theta_{p(x)}=f_{(x)}
即:
θp(x)={f(x),x  满足原问题约束+,其他\theta_{p(x)}=\begin{cases} f_{(x)}, & \text {x\;满足原问题约束} \\ +\infty, & \text {其他} \end{cases}
如果考虑极小化问题
minxθp(x)=minxmaxα,  β,  αi0L(x,α,β)\mathop{min}\limits_{x}\theta_{p(x)}=\mathop{min}\limits_{x} \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)}
θp(x)\theta_{p(x)}的表达式可知,minxθp(x)\mathop{min}\limits_{x}\theta_{p(x)}是与原始最优化问题等价的,也就是说它们的解相同。问题minxmaxα,  β,  αi0L(x,α,β)\mathop{min}\limits_{x} \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}L_{(x,\alpha,\beta)}被称为广义拉格朗日函数的极小极大问题。

2)对偶问题

定义
θD(α,β)=minxL(x,α,β)\theta_{D(\alpha,\beta)}=\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}
再考虑极大化θD(α,β)\theta_{D(\alpha,\beta)},即:
maxα,  β,  αi0θD(α,β)=maxα,  β,  αi0minxL(x,α,β)\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\theta_{D(\alpha,\beta)}=\mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}
问题maxα,  β,  αi0minxL(x,α,β)  \mathop{max}\limits_{\alpha,\; \beta,\; \alpha_{i}\geq0}\mathop{min}\limits_{x}L_{(x,\alpha,\beta)}\;称为广义拉格朗日函数的极大极小问题。
若目标函数与所有约束函数皆为凸函数,则原始问题和它的对偶问题是等价的。
而对于SVMSVM,其所有函数皆为凸函数。

3、SVM的对偶问题

{min  12w2(wxi+b)yi1\begin{cases} min\; \frac{1}{2}w^{2} \\ (wx_{i}+b)y_{i}\geq1 \end{cases}
其广义拉格朗日函数为:
L(w,b,α)=12w2+i=1Nαi[1(wxi+b)yi]L_{(w,b,\alpha)}=\frac{1}{2}w^{2}+\sum_{i=1}^{N}\alpha_{i}[1-(wx_{i}+b)y_{i}]
原问题:
minw,  bmaxαi0L(w,b,α)\mathop{min}\limits_{w,\;b} \mathop{max}\limits_{\alpha_{i}\geq0}L_{(w,b,\alpha)}
对偶问题:
maxαi0minw,  bL(w,b,α) \mathop{max}\limits_{\alpha_{i}\geq0}\mathop{min}\limits_{w,\;b}L_{(w,b,\alpha)}
先对L(x,α,β)L_{(x,\alpha,\beta)}求极小值:
Lw=0w=i=1Nαixiyi\frac{\partial L}{\partial w}=0\Rightarrow w=\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i}
Lb=0i=1Nαiyi=0\frac{\partial L}{\partial b}=0\Rightarrow \sum_{i=1}^{N}\alpha_{i}y_{i}=0
将结果带入对偶问题,可将其转化为下式:
maxαi0  12(i=1Nαixiyi)2+i=1Nαi[1((j=1Nαjxjyj)xi+b)yi]\mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}[1-((\sum_{j=1}^{N}\alpha_{j}x_{j}y_{j})x_{i}+b)y_{i}]
=maxαi0  12(i=1Nαixiyi)2+i=1Nαi[1(j=1Nαjxjyj)xiyi]=\mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}[1-(\sum_{j=1}^{N}\alpha_{j}x_{j}y_{j})x_{i}y_{i}]
=maxαi0  12(i=1Nαixiyi)2+i=1Nαii=1Nj=1Nαixiyiαjxjyj=\mathop{max}\limits_{\alpha_{i}\geq0}\;\frac{1}{2}(\sum_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{2}+\sum_{i=1}^{N}\alpha_{i}-\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}x_{i}y_{i}\alpha_{j}x_{j}y_{j}
=maxαi0  12i=1Nj=1Nαiαjyiyj<xixj>+i=1Nαi=\mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\sum_{i=1}^{N}\alpha_{i}
约束条件为:
i=1Nαiyi=0αi0\sum_{i=1}^{N}\alpha_{i}y_{i}=0\quad \alpha_{i}\geq0
KKTKKT条件为:
αi[1(wxi+b)yi=0\alpha_{i}[1-(wx_{i}+b)y_{i}=0
故原始问题被转化为:
{maxαi0  12i=1Nj=1Nαiαjyiyj<xixj>+i=1Nαii=1Nαiyi=0αi0αi[1(wxi+b)yi=0\begin{cases} \mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\mathop{\sum}\limits_{i=1}^{N}\mathop{\sum}\limits_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\mathop{\sum}\limits_{i=1}^{N}\alpha_{i} \\ \mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}=0\quad \alpha_{i}\geq0 \\ \alpha_{i}[1-(wx_{i}+b)y_{i}=0 \end{cases}

4、SMO算法(序列最小优化算法)

优化此问题时采用SMO算法。
假设此问题中只有α1\alpha_{1}α10\alpha_{10},则SMO算法的步骤如下。
1)先固定α3\alpha_{3}α10\alpha_{10},则最优化函数变为:
maxαi0  12i=12j=12αiαjyiyj<xixj>+i=12αi\mathop{max}\limits_{\alpha_{i}\geq0}\;-\frac{1}{2}\mathop{\sum}\limits_{i=1}^{2}\mathop{\sum}\limits_{j=1}^{2}\alpha_{i}\alpha_{j}y_{i}y_{j}<x_{i}x_{j}>+\mathop{\sum}\limits_{i=1}^{2}\alpha_{i}
约束条件变为:
α1y1+α2y2=i=310αiyi  为一常数\alpha_{1}y_{1}+\alpha_{2}y_{2}=-\sum_{i=3}^{10}\alpha_{i}y_{i}\text{\;为一常数}
则此优化问题变成了一个二维变量(α1α2\alpha_{1},\alpha_{2})的优化问题,使原来的十维优化问题大大简化。
这时,可以先算出最优的α1\alpha_{1}α2\alpha_{2}
2)固定α1\alpha_{1}α4\alpha_{4}α10\alpha_{10},重复以上操作并代入最优的α1\alpha_{1},得到最优的α2\alpha_{2}α3\alpha_{3}
3)固定α1\alpha_{1}α2\alpha_{2}α5\alpha_{5}α10\alpha_{10},重复以上操作并代入最优的α1\alpha_{1}α2\alpha_{2},得到最优的α3\alpha_{3}α4\alpha_{4}
……
4)得到所有的最优α\alpha,将其代入w=i=110αixiyiw=\mathop{\sum}\limits_{i=1}^{10}\alpha_{i}x_{i}y_{i},得到最优的ww值。
5)若得到的αi=0\alpha_{i}=0,则表示第ii个约束条件不起作用;若得到的αi0\alpha_{i}\ne0,则它对应的xix_{i}yiy_{i}就是支持向量。
6)通过y=(i=1Nαixiyi)Tx=i=1NαiyixiTx  y=(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{T}x=\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}x_{i}^{T}x\;得到某样本点对应的标签。

5、线性不可分核函数

对于一些线性不可分的样本,如下图(左),不能找出一条直线来分类样本。此时需要做空间的变换。
设原空间为χRn,x=(x(1),x(2))Tχ\chi \subset R^{n},x=(x^{(1)},x^{(2)})^{T} \in \chi,新空间为ZR2,z=(z(1),z(2))TZZ\subset R^{2},z=(z^{(1)},z^{(2)})^{T} \in Z,定义从原空间到新空间的变换(映射):
z=ϕ(x)=((x(1))2,(x(2))2)Tz=\phi_{(x)}=((x^{(1)})^{2},(x^{(2)})^{2})^{T}
经过变换z=ϕ(x)z=\phi_{(x)},原空间χRn\chi \subset R^{n}变换为新空间ZR2Z\subset R^{2},原空间中的点相应地变换为新空间中的点,原空间中的椭圆
w1(x(1))2+w2(x(2))2+b=0w_{1}(x^{(1)})^{2}+w_{2}(x^{(2)})^{2}+b=0
变换为新空间中的直线
w1z(1)+w2z(2)+b=0w_{1}z^{(1)}+w_{2}z^{(2)}+b=0
即由下图中的左图变为右图。
SVM支持向量机原理推导实际上我们并不需要知道经过空间变换后的z1z_{1}z2z_{2}的具体值,因为由y=(i=1Nαixiyi)Tx=i=1NαiyixiTx  y=(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}x_{i}y_{i})^{T}x=\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}x_{i}^{T}x\;知,我们只需要知道xix_{i}xx的点积即可。
常用的空间变换有:
1)多项式核函数:
K(x,z)=(xz+1)pK_{(x,z)}=(x\cdot z+1)^{p}
对应的支持向量机是一个pp次多项式的分类器。此时,分类决策函数变成:
f(x)=sign(i=1Nαiyi(xix+1)p+b)f_{(x)}=sign(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}(x_{i}\cdot x+1)^{p}+b)
2)高斯核函数:
K(x,z)=exz22σ2K_{(x,z)}=e^{-\frac{||x-z||^{2}}{2\sigma^{2}}}
对应的支持向量机是高斯径向基函数分类器。此时,分类决策函数变成:
f(x)=sign(i=1Nαiyiexix22σ2+b)f_{(x)}=sign(\mathop{\sum}\limits_{i=1}^{N}\alpha_{i}y_{i}e^{-\frac{||x_{i}-x||^{2}}{2\sigma^{2}}}+b)