小白学习——支持向量机

前言

自己最近在看周志华的《机器学习》,想要和大家一起分享自己的学习过程。
这是自己第一次写博客,排版什么的可能会有不少问题,希望大家多多包涵。

支持向量机

背景

在支持向量机之前,就已经接触过了逻辑回归。在逻辑回归中,代价函数与每个点的值都相关,通过一个激活函数来决定这个点是否被良好分类。所以,最终得到的直线将和样本中所有的点有关。
而在支持向量机中,思想十分简单,就是找到在两类样本点中,距离最近的,然后取他们的中间线,来作为分界线。之前在看吴恩达老师的”机器学习“的时候,就感觉支持向量机的思想十分简单,但是在读了西瓜书之后,才明白,原来最重要的是思想背后的实现。尤其是通过拉格朗日乘子法求对偶问题和SMO算法求出最优解,都是支持向量机问题中的精髓。

间隔和支持向量

首先,可以用一个线性方程来描述这个划分超平面:
ω T x + b = 0. \boldsymbol\omega^{\mathbf T}\boldsymbol x+b=0. ωTx+b=0.
这个时候,空间中任意点x到这个平面的距离可以写成:
r = ∣ ω T x + b ∣ ∣ ∣ ω ∣ ∣ . r=\frac{\left|\boldsymbol\omega^{\mathbf T}\boldsymbol x+b\right|}{\left|\left|\boldsymbol\omega\right|\right|}. r=ωωTx+b.
这时候假设这个超平面 ( ω , b ) (\boldsymbol\omega,b) (ω,b),能够将样本正确分类,也就是说对于任意 ( x i , y i ) ∈ D (\boldsymbol x^i,y^i)\in D (xi,yi)D,都能得到,若yi=+1,则有 ω T x i + b > 0 \boldsymbol\omega^T{\boldsymbol x}_i+b>0 ωTxi+b>0;若yi=-1,则有 ω T x i + b < 0 \boldsymbol\omega^T{\boldsymbol x}_i+b<0 ωTxi+b<0。通过缩放变换,就可以使其满足:
{ ω T x + b ≥ + 1 ,      y i = + 1 ; ω T x + b ≤ − 1 ,      y i = − 1 ; \left\{\begin{array}{l}\omega^Tx+b\geq+1,\;\;y_i=+1;\\\omega^Tx+b\leq-1,\;\;y_i=-1;\end{array}\right. {ωTx+b+1,yi=+1;ωTx+b1,yi=1;
使等号成立的训练样本点叫做”支持向量“,这个时候的距离之和为:
γ = 2 ∥ ω ∥ \gamma=\frac2{\parallel\boldsymbol\omega\parallel} γ=ω2
它就被称为”间隔“。
支持向量与间隔
所以,为了找到一个最大间隔来作为划分超平面,这个时候需要来寻找合适的参数w和b的值来使得”间隔”最大化,即:
m a x ω , b 2 ∥ ω ∥ s . t .      y i ( ω T x i + b ) ≥ 1 ,      i = 1 , 2 , ⋯   , m \underset{\omega,b}{max}\frac2{\parallel\omega\parallel}\\s.t.\;\;y_i(\omega^Tx_i+b)\geq1,\;\;i=1,2,\cdots,m ω,bmaxω2s.t.yi(ωTxi+b)1,i=1,2,,m
为了计算方便,就需要等价为:
m a x 1 2 ω , b ∥ ω ∥ 2 s . t .      y i ( ω T x i + b ) ≥ 1 ,      i = 1 , 2 , ⋯   , m \underset{\omega,b}{max\frac12}\parallel\omega\parallel^2\\s.t.\;\;y_i(\omega^Tx_i+b)\geq1,\;\;i=1,2,\cdots,m ω,bmax21ω2s.t.yi(ωTxi+b)1,i=1,2,,m
这就得到了支持向量机的基本型了。

核函数与非线性支持向量机

为了在后面的优化计算过程中得到通式,这里就像介绍核函数。可以看到,采用上述方法,只能对线性可分的变量进行划分,这样的支持向量机叫做线性可分支持向量机,而对于线性不可分的样本,可以通过将样本从原始空间映射到更高维的特征空间,使其在这个空间内线性可分。这本书中讲到,如果原始空间是有限维,那么一定存在一个高位特征空间使样本可分。我们可以假设这个映射函数为 ϕ ( x ) \phi(x) ϕ(x),此时的模型就可以表示为:
f ( x ) = ω T ϕ ( x ) + b f(x)=\omega^T\phi(x)+b f(x)=ωTϕ(x)+b
此时我们的优化目标就变为:
m a x    1 2 ω , b ∥ ω ∥ 2 s . t .      y i ( ω T ϕ ( x i ) + b ) ≥ 1 ,      i = 1 , 2 , ⋯   , m \underset{\omega,b}{max\;\frac12}\parallel\omega\parallel^2\\s.t.\;\;y_i(\omega^T\phi(x_i)+b)\geq1,\;\;i=1,2,\cdots,m ω,bmax21ω2s.t.yi(ωTϕ(xi)+b)1,i=1,2,,m
在后续计算中,会涉及到 ϕ ( x i ) T ϕ ( x i ) \phi{(x_i)}^T\phi(x_i) ϕ(xi)Tϕ(xi),我们就定义一个函数:
K i j = κ ( x i , x j ) = ϕ ( x i ) ϕ ( x j ) K_{ij}=\kappa(x_i,x_j)=\phi(x_i)\phi(x_j) Kij=κ(xi,xj)=ϕ(xi)ϕ(xj)
而, κ ( ⋅ , ⋅ ) \kappa(\cdot,\cdot) κ(,)就是“核函数”。
常用的核函数有:
常用核函数

通过拉格朗日乘子法进行优化

对于上述问题,可以通过拉格朗日乘子法进行优化(具体拉格朗日乘子法和自行百度),求出其对偶问题,添加拉格朗日乘子 α i ≥ 0 \alpha_i\geq0 αi0,那么可以将拉格朗日函数写为:
L ( ω , b , α ) = 1 2 ∥ ω ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( ω T ϕ ( x i ) + b ) ) L(\omega,b,\alpha)=\frac12\parallel\omega\parallel^2+\sum_{i=1}^m\alpha_i(1-y_i(\omega^T\phi(x_i)+b)) L(ω,b,α)=21ω2+i=1mαi(1yi(ωTϕ(xi)+b))
这个时候对w和b求偏导并置0,可以得到:
ω = ∑ i = 1 m α i y i ϕ ( x i ) ∑ i = 1 m α i y i = 0 \omega=\sum_{i=1}^m\alpha_iy_i\phi(x_i)\\\sum_{i=1}^m\alpha_iy_i=0 ω=i=1mαiyiϕ(xi)i=1mαiyi=0
将这个两个式子代入上式,就可以得到:
L ( ω , b , α ) = 1 2 ∥ ω ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( ω T ϕ ( x i ) + b ) ) = 1 2 ∑ i = 1 m α i y i ϕ ( x i ) ∑ j = 1 m α j y j ϕ ( x j ) + ∑ i = 1 m α i − ∑ i = 1 m α i y i ( ∑ j = 1 m α j y j ϕ ( x j ) ) T ϕ ( x i ) − ∑ i = 1 m α i y i b      ( c o n s t ) = ∑ i = 1 m α i − ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) = ∑ i = 1 m α i − ∑ i = 1 m ∑ j = 1 m α i α j y i y j K i j L(\omega,b,\alpha)=\frac12\parallel\omega\parallel^2+\sum_{i=1}^m\alpha_i(1-y_i(\omega^T\phi(x_i)+b))\\=\frac12\sum_{i=1}^m\alpha_iy_i\phi(x_i)\sum_{j=1}^m\alpha_jy_j\phi(x_j)+\sum_{i=1}^m\alpha_i-\sum_{i=1}^m\alpha_iy_i(\sum_{j=1}^m\alpha_jy_j\phi{(x_j))}^T\phi(x_i)-\sum_{i=1}^m\alpha_iy_ib\;\;(const)\\=\sum_{i=1}^m\alpha_i-\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\phi{(x_i)}^T\phi(x_j)\\=\sum_{i=1}^m\alpha_i-\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jK_{ij} L(ω,b,α)=21ω2+i=1mαi(1yi(ωTϕ(xi)+b))=21i=1mαiyiϕ(xi)j=1mαjyjϕ(xj)+i=1mαii=1mαiyi(j=1mαjyjϕ(xj))Tϕ(xi)i=1mαiyib(const)=i=1mαii=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)=i=1mαii=1mj=1mαiαjyiyjKij
从而对偶问题为:
m a x α    ∑ i = 1 m α i − ∑ i = 1 m ∑ j = 1 m α i α j y i y j K i j s . t .    ∑ i = 1 m α i y i = 0 , α i ≥ 0 ,      i = 1 , 2 , … , m . \underset\alpha{max}\;\sum_{i=1}^m\alpha_i-\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jK_{ij}\\s.t.\;\sum_{i=1}^m\alpha_iy_i=0,\\\alpha_i\geq0,\;\;i=1,2,\dots,m. αmaxi=1mαii=1mj=1mαiαjyiyjKijs.t.i=1mαiyi=0,αi0,i=1,2,,m.
此时,我们通过求对偶问题,将一个三个参数的优化问题,转化成了仅有 α \alpha α的优化问题,并且能够解得 α \alpha α的最优值, ω \omega ω和b的最优值使用KKT条件来求得:
{ α i ⩾ 0 y i f ( x i ) − 1 ⩾ 0 α i ( y i f ( x i ) − 1 ) = 0 \left\{\begin{array}{c}\alpha_i\geqslant0\\y_if(x_i)-1\geqslant0\\\alpha_i(y_if(x_i)-1)=0\end{array}\right. αi0yif(xi)10αi(yif(xi)1)=0
将w的值代入原函数,此时原函数就变成了:
f ( x ) = ∑ i = 1 m α i y i κ ( x , x i ) + b f(x)=\sum_{i=1}^m\alpha_iy_i\kappa(x,x_i)+b f(x)=i=1mαiyiκ(x,xi)+b

SMO算法求解最优解

在上述对偶问题中,我们需要找到 α i \alpha_i αi的最优值,来使目标函数最大,这是一个二次规划问题,但是如果使用常规二次规划算法,开销将非常大。这时候就介绍了一种很高效的算法,SMO算法,由Platt在1998年提出来。
SMO的基本思路使先固定 α i \alpha_i αi之外的所有参数,然后求在 α i \alpha_i αi上的极值,但是由于存在约束 ∑ i = 1 m α i y i = 0 \sum_{i=1}^m\alpha_iy_i=0 i=1mαiyi=0,若固定 α i \alpha_i αi之外的变量,则 α i \alpha_i αi的值也可被导出。所以,SMO算法每次选择两个变量 α i \alpha_i αi α j \alpha_j αj,并固定其他参数,然后不断求出所有 α i \alpha_i αi的值。(SMO算法这块,西瓜书上讲的并不详细,我又参考了李航的《统计学习方法》,来将这块补充完整)这两个变量的选择使用的是启发式算法,一个是违反KKT条件最严重的那一个,一个是由约束条件确定,这里具体不多讲述,有兴趣可以自己查阅相关资料。下面是具体优化算法。
假设此时只有 α 1 \alpha_1 α1 α 2 \alpha_2 α2是变量,所以优化问题可以写成:
m i n α 1 , α 2      W (    α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 m α i y i K i 1 + y 2 α 2 ∑ i = 3 m α i y i K i 2 s . t .    α 1 y 1 + α 2 y 2 = − ∑ i = 3 m α i y i = ς , α i ≥ 0 ,      i = 1 , 2. \underset{\alpha_1,\alpha_2}{min}\;\;W(\;\alpha_1,\alpha_2)=\frac12K_{11}\alpha_1^2+\frac12K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2)+y_1\alpha_1\sum_{i=3}^m\alpha_iy_iK_{i1}+y_2\alpha_2\sum_{i=3}^m\alpha_iy_iK_{i2}\\s.t.\;\alpha_1y_1+\alpha_2y_2=\overset m{\underset{i=3}{-\sum}}\alpha_iy_i=\varsigma,\\\alpha_i\geq0,\;\;i=1,2. α1,α2minW(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2(α1+α2)+y1α1i=3mαiyiKi1+y2α2i=3mαiyiKi2s.t.α1y1+α2y2=i=3mαiyi=ς,αi0,i=1,2.
为了计算方便,我们令:
E i = ( ∑ i = 1 N α j y j K ( x j , x i ) + b ) − y i ,          i = 1 , 2 E_i=(\sum_{i=1}^N\alpha_jy_jK(x_j,x_i)+b)-y_i,\;\;\;\;i=1,2 Ei=(i=1NαjyjK(xj,xi)+b)yi,i=1,2
v i = ∑ j = 3 m α j y j K i j v_i=\sum_{j=3}^m\alpha_jy_jK_{ij} vi=j=3mαjyjKij
而由于 α 1 y 1 = ς − α 2 y 2 \alpha_1y_1=\varsigma-\alpha_2y_2 α1y1=ςα2y2以及 y i 2 = 1 y_i^2=1 yi2=1,可得:
α 1 = ( ς − y 2 α 2 ) y 1 \alpha_1=(\varsigma-y_2\alpha_2)y_1 α1=(ςy2α2)y1
从而最终得到一个关于 α 2 \alpha_2 α2的单变量优化目标函数:
W ( α 2 ) = 1 2 K 11 ( ς − α 2 y 2 ) 2 + 1 2 K 22 α 2 2 + y 2 K 12 ( ς − α 2 y 2 ) α 2 − ( ς − α 2 y 2 ) y 1 − α 2 + v 1 ( ς − α 2 y 2 ) + y 2 v 2 α 2 W(\alpha_2)=\frac12K_{11}(\varsigma-\alpha_2y_2)^2+\frac12K_{22}\alpha_2^2+y_2K_{12}(\varsigma-\alpha_2y_2)\alpha_2-(\varsigma-\alpha_2y_2)y_1-\alpha_2+v_1(\varsigma-\alpha_2y_2)+y_2v_2\alpha_2 W(α2)=21K11(ςα2y2)2+21K22α22+y2K12(ςα2y2)α2(ςα2y2)y1α2+v1(ςα2y2)+y2v2α2
这个时候只需对 α 2 \alpha_2 α2求导:
∂ W ∂ α 2 = K 11 α 2 + K 22 α 2 − 2 K 12 α 2 − K 11 ς y 2 + K 12 ς y 2 + y 1 y 2 − 1 − v 1 y 2 + y 2 v 1 \frac{\partial W}{\partial\alpha_2}=K_{11}\alpha_2+K_{22}\alpha_2-2K_{12}\alpha_2-K_{11}\varsigma y_2+K_{12}\varsigma y_2+y_1y_2-1-v_1y_2+y_2v_1 α2W=K11α2+K22α22K12α2K11ςy2+K12ςy2+y1y21v1y2+y2v1
令其为0,经过化简可以得到最终解:
α 2 n e w = α 2 + y 2 ( E 1 − E 2 ) η \alpha_2^{new}=\alpha_2+\frac{y_2(E_1-E_2)}\eta α2new=α2+ηy2(E1E2)
再通过约束求得 α 1 \alpha_1 α1,从而得到最终结果。

总结

在支持向量机中,最重要的是使用了拉格朗日乘子法和SMO算法。拉格朗日乘子法的重要作用是将w的计算提前并消除w,使得优化函数变为拉格朗日乘子的单一参数优化问题。而SMO提供了一种巧妙地方法来解决二次优化问题。
在KKT条件中,我们可以看到, α i = 0 \alpha_i=0 αi=0 y i f ( x i ) = 1 y_if(x_i)=1 yif(xi)=1,这就说明只与使等号成立的支持向量有关,这也是支持向量机和逻辑分类的区别。
在支持向量机中,还有一部分引入了软间隔的概念,提出了线性支持向量机,使得SVM能够处理一些出错样本。
随着我自己学习的深入,也会了解到更多更深的知识,这些东西以后再写把,这次就先到这里了。
公式纯手打,如有错误,敬请谅解。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值