[机器学习算法推导与总结] SVM

SVM前人已经研究得很透了,在学习了惊呼——SVM支持向量机三重境界!之后,觉得有必要整理一下思路。

分类函数

SVM是使用一个分类超平面来分类的:
f ( x ) = ω T x + b f(x)=\omega^T x+b f(x)=ωTx+b
  其中 ω \omega ω为分类超平面的法向量。因此样本到分类超平面的距离(Margin)是有正负之分的。当样本到分类超平面的距离>0时,类别为1,距离<0时,类别为-1。距离是这样计算的:
d ( x i ) = ω T x i + b ∣ ∣ ω ∣ ∣ d(x_i)=\frac{\omega^T x_i+b}{||\omega||} d(xi)=ωωTxi+b
  如果想计算距离的绝对值,就可以利用样本的类别标签 y i y_i yi(前提是假设所有样本zai f ( x ) = ω T x + b f(x)=\omega^T x+b f(x)=ωTx+b下都分类正确)

目标函数

目标是使间隔最大化,这隐含了一个最大化函数(最大化支持向量到分类超平面的间隔),和一个约束条件(所有样本都能正确分类,且所有样本到分类超平面的距离不大于间隔):
m a x &ThinSpace;&ThinSpace; ( ω T x m + b ) ∣ ∣ ω ∣ ∣ y m s . t . &ThinSpace;&ThinSpace; ( ω T x i + b ) ∣ ∣ ω ∣ ∣ y i ≥ ( ω T x m + b ) ∣ ∣ ω ∣ ∣ y m &ThinSpace;&ThinSpace; , i = 1 , 2 , . . . , M max\,\, \frac{(\omega^T x_m+b)}{||\omega||}y_m \\ s.t. \,\, \frac{( \omega^T x_i+b)}{||\omega||}y_i \geq \frac{(\omega^T x_m+b)}{||\omega||}y_m\,\,,i=1,2,...,M maxω(ωTxm+b)yms.t.ω(ωTxi+b)yiω(ωTxm+b)ym,i=1,2,...,M
  同时对 ω \omega ω b b b按比例缩放,不会改变分类超平面,如果我们假设 ω \omega ω b b b按比例缩放到一定程度,此时Margin,即 ( ω T x m + b ) y m (\omega^T x_m+b)y_m (ωTxm+b)ym刚好为1,那么目标函数变为:
m a x &ThinSpace;&ThinSpace; 1 ∣ ∣ ω ∣ ∣ s . t . &ThinSpace;&ThinSpace; ( ω T x i + b ) ∣ ∣ ω ∣ ∣ y i ≥ 1 ∣ ∣ ω ∣ ∣ &ThinSpace;&ThinSpace; , i = 1 , 2 , . . . , M max\,\, \frac{1}{||\omega||} \\ s.t. \,\, \frac{( \omega^T x_i+b)}{||\omega||}y_i \geq \frac{1}{||\omega||}\,\,,i=1,2,...,M maxω1s.t.ω(ωTxi+b)yiω1,i=1,2,...,M  
  约束条件左右两边的分母都可以去掉:
m a x &ThinSpace;&ThinSpace; 1 ∣ ∣ ω ∣ ∣ s . t . &ThinSpace;&ThinSpace; ( ω T x i + b ) y i ≥ 1 &ThinSpace;&ThinSpace; , i = 1 , 2 , . . . , M max\,\, \frac{1}{||\omega||} \\ s.t. \,\, ( \omega^T x_i+b)y_i \geq 1\,\,,i=1,2,...,M maxω1s.t.(ωTxi+b)yi1,i=1,2,...,M
  目标函数$ \frac{1}{||\omega||}$求导数比较复杂,可以变为:
m i n &ThinSpace;&ThinSpace; 1 2 ∣ ∣ ω ∣ ∣ 2 s . t . &ThinSpace;&ThinSpace; ( ω T x i + b ) y i ≥ 1 &ThinSpace;&ThinSpace; , i = 1 , 2 , . . . , M min\,\, \frac{1}{2}||\omega||^2 \\ s.t. \,\, ( \omega^T x_i+b)y_i \geq 1\,\,,i=1,2,...,M min21ω2s.t.(ωTxi+b)yi1,i=1,2,...,M
  这就得到了SVM最终的目标函数啦。

求解过程

这是个带约束的最小化问题,可以用拉格朗日数乘法,先写出拉格朗日函数:
L ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i = 1 M α i ( 1 − ( ω T x i + b ) y i ) &ThinSpace;&ThinSpace; , i = 1 , 2 , . . . , M , α i ≥ 0 L(\omega,b,\alpha)= \frac{1}{2}||\omega||^2+\sum_{i=1}^M \alpha_i(1- ( \omega^T x_i+b)y_i )\,\,,i=1,2,...,M,\alpha_i\geq0 L(ω,b,α)=21ω2+i=1Mαi(1(ωTxi+b)yi),i=1,2,...,M,αi0
  当我不管 ω \omega ω b b b的时候,我令 α i \alpha_i αi α i ≥ 0 \alpha_i\geq0 αi0的范围内变化,最大化 L ( ω , b , α ) L(\omega,b,\alpha) L(ω,b,α)
H ( ω , b ) = m a x α i ≥ 0 &ThinSpace;&ThinSpace; L ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ 2 H(\omega,b)=max_{\alpha_i\geq0} \,\, L(\omega,b,\alpha)= \frac{1}{2}||\omega||^2 H(ω,b)=maxαi0L(ω,b,α)=21ω2
  此时 H ( ω , b ) H(\omega,b) H(ω,b)就相当于原目标函数 1 2 ∣ ∣ ω ∣ ∣ 2 \frac{1}{2}||\omega||^2 21ω2。这是因为,对于所有样本来说,由于假设全部分类正确,那么一定有 ( 1 − ( ω T x i + b ) y i ) &lt; 0 (1- ( \omega^T x_i+b)y_i )&lt;0 (1(ωTxi+b)yi)<0,如果想让 α i \alpha_i αi α i ≥ 0 \alpha_i\geq0 αi0的范围内最大化 L ( ω , b , α ) L(\omega,b,\alpha) L(ω,b,α),那么 α i \alpha_i αi一定会让 α i ( 1 − ( ω T x i + b ) y i ) \alpha_i(1- ( \omega^T x_i+b)y_i ) αi(1(ωTxi+b)yi)负得最少,负得最少的时候刚好就是0,此时 L ( ω , b , α ) L(\omega,b,\alpha) L(ω,b,α)刚好等于 1 2 ∣ ∣ ω ∣ ∣ 2 \frac{1}{2}||\omega||^2 21ω2
  因此我们要最小化 1 2 ∣ ∣ ω ∣ ∣ 2 \frac{1}{2}||\omega||^2 21ω2就相当于:
m i n ω , b &ThinSpace;&ThinSpace; m a x α i ≥ 0 &ThinSpace;&ThinSpace; L ( ω , b , α ) min_{\omega,b} \,\, max_{\alpha_i\geq0} \,\, L(\omega,b,\alpha) minω,bmaxαi0L(ω,b,α)
  这个式子就包括了SVM的目标函数和约束条件了,下一步我们要求解这个式子。
  如果直接求解这个式子,首先要求内层的M个 α i \alpha_i αi,求解非常复杂。为了简化求解,我们可以把上述式子转化为它的对偶问题,它的对偶问题相对较好求解,而且对偶问题能引入核函数,后面再详细解释核函数:
m a x α i ≥ 0 &ThinSpace;&ThinSpace; m i n ω , b &ThinSpace;&ThinSpace; L ( ω , b , α ) max_{\alpha_i\geq0} \,\, min_{\omega,b} \,\,L(\omega,b,\alpha) maxαi0minω,bL(ω,b,α)  
  下面用精确求解法求解此对偶问题。让 L ( ω , b , α ) L(\omega,b,\alpha) L(ω,b,α) ω \omega ω b b b分别求导,让导数等于零:
d L ( ω , b , α ) d ω = d ( 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i = 1 M α i ( 1 − ( ω T x i + b ) y i ) ) d ω = ω − ∑ i = 1 M α i y i x i = 0 d L ( ω , b , α ) d b = ∑ i = 1 M α i y i = 0 \begin{aligned} \frac{dL(\omega,b,\alpha)}{d\omega}= &amp;\frac{d ( \frac{1}{2}||\omega||^2+\sum_{i=1}^M \alpha_i(1- ( \omega^T x_i+b)y_i ))}{d\omega} \\ =&amp; \omega - \sum_{i=1}^M \alpha_iy_i x_i \\ =&amp; 0 \\ \frac{dL(\omega,b,\alpha)}{d b}=&amp; \sum_{i=1}^M \alpha_iy_i \\ =&amp; 0 \end{aligned} dωdL(ω,b,α)===dbdL(ω,b,α)==dωd(21ω2+i=1Mαi(1(ωTxi+b)yi))ωi=1Mαiyixi0i=1Mαiyi0

因此求得
ω = ∑ i = 1 M α i y i x i ∑ i = 1 M α i y i = 0 \begin{aligned} &amp; \omega=\sum_{i=1}^M \alpha_iy_i x_i \\ &amp; \sum_{i=1}^M \alpha_iy_i=0 \end{aligned} ω=i=1Mαiyixii=1Mαiyi=0
  把这两个式子代回到 L ( ω , b , α ) L(\omega,b,\alpha) L(ω,b,α),得到:
L ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i = 1 M α i ( 1 − ( ω T x i + b ) y i ) = 1 2 ω T ω + ∑ i = 1 M α i − ∑ i = 1 M α i y i ω T x i − ∑ i = 1 M α i b y i = 1 2 ( ∑ i = 1 M α i y i x i T ) ( ∑ 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 ) x i − 0 = ∑ i = 1 M α i − 1 2 ∑ i = 1 M ∑ j = 1 M α i y i α j y j x i T x j = ∑ i = 1 M α i − 1 2 ∑ i = 1 M ∑ j = 1 M α i y i α j y j &lt; x i , x j &gt; \begin{aligned} L(\omega,b,\alpha)=&amp; \frac{1}{2}||\omega||^2+\sum_{i=1}^M \alpha_i(1- ( \omega^T x_i+b)y_i ) \\ = &amp; \frac{1}{2}\omega^T \omega+\sum_{i=1}^M \alpha_i-\sum_{i=1}^M \alpha_iy_i\omega^Tx_i-\sum_{i=1}^M \alpha_iby_i \\ =&amp; \frac{1}{2} (\sum_{i=1}^M \alpha_iy_i x_i^T)(\sum_{j=1}^M \alpha_jy_j x_j )+\sum_{i=1}^M \alpha_i-\sum_{i=1}^M \alpha_iy_i(\sum_{j=1}^M \alpha_jy_j x_j)x_i-0 \\ =&amp; \sum_{i=1}^M \alpha_i-\frac{1}{2} \sum_{i=1}^M\sum_{j=1}^M \alpha_iy_i \alpha_jy_j x_i^Tx_j \\ =&amp; \sum_{i=1}^M \alpha_i-\frac{1}{2} \sum_{i=1}^M\sum_{j=1}^M \alpha_iy_i \alpha_jy_j &lt; x_i,x_j&gt; \end{aligned} L(ω,b,α)=====21ω2+i=1Mαi(1(ωTxi+b)yi)21ωTω+i=1Mαii=1MαiyiωTxii=1Mαibyi21(i=1MαiyixiT)(j=1Mαjyjxj)+i=1Mαii=1Mαiyi(j=1Mαjyjxj)xi0i=1Mαi21i=1Mj=1MαiyiαjyjxiTxji=1Mαi21i=1Mj=1Mαiyiαjyj<xi,xj>
  由于要求 α i ≥ 0 \alpha_i\geq0 αi0,因此得到下一步优化的目标函数和约束条件:
m a x &ThinSpace;&ThinSpace; ∑ i = 1 M α i − 1 2 ∑ i = 1 M ∑ j = 1 M α i y i α j y j &lt; x i , x j &gt; s . t . &ThinSpace;&ThinSpace; α i ≥ 0 &ThinSpace;&ThinSpace; , i = 1 , 2 , . . . , M ∑ i = 1 M α i y i = 0 max\,\, \sum_{i=1}^M \alpha_i-\frac{1}{2} \sum_{i=1}^M\sum_{j=1}^M \alpha_iy_i \alpha_jy_j &lt; x_i,x_j&gt; \\ s.t. \,\, \alpha_i\geq0\,\, ,i=1,2,...,M \\ \sum_{i=1}^M \alpha_iy_i=0 maxi=1Mαi21i=1Mj=1Mαiyiαjyj<xi,xj>s.t.αi0,i=1,2,...,Mi=1Mαiyi=0
  具体怎么求 α i \alpha_i αi,要使用SMO算法。
  据说只有支持向量的 α i \alpha_i αi是不等于零的,其他样本对应的 α i \alpha_i αi都等于零。因为对于其他样本, ( 1 − ( ω T x i + b ) y i ) (1- ( \omega^T x_i+b)y_i ) (1(ωTxi+b)yi)都是小于零的,想要最大化 α i ( 1 − ( ω T x i + b ) y i ) \alpha_i(1- ( \omega^T x_i+b)y_i ) αi(1(ωTxi+b)yi),必须让它们的 α i \alpha_i αi都等于零。对于支持向量, ( 1 − ( ω T x i + b ) y i ) (1- ( \omega^T x_i+b)y_i ) (1(ωTxi+b)yi)都是等于零的,因此 α i \alpha_i αi是大于零的。

对偶形式下的分类函数

由于对偶问题给出了 ω = ∑ i = 1 M α i y i x i \omega=\sum_{i=1}^M \alpha_iy_i x_i ω=i=1Mαiyixi的结果,我们可以把这个结论代回去原来的分类函数,得到:
f ( x ) = ω T x + b = ∑ i = 1 M α i y i x i T x + b = ∑ i = 1 M α i y i &lt; x i , x &gt; + b \begin{aligned} f(x)= &amp; \omega^T x+b \\ =&amp; \sum_{i=1}^M \alpha_iy_i x_i^T x+b \\ =&amp; \sum_{i=1}^M \alpha_iy_i &lt;x_i, x&gt;+b \end{aligned} f(x)===ωTx+bi=1MαiyixiTx+bi=1Mαiyi<xi,x>+b

因此得到了对偶形式下的分类函数形式,由于只有支持向量的 α i \alpha_i αi是不等于零的,因此对于一个新样本 x x x,只要求支持向量与 x x x的内积,就可以预测其类别。

核函数

上面的分类函数可以写成:
f ( x ) = ∑ i = 1 M α i y i &lt; x i , x &gt; + b = ∑ i = 1 M α i y i ϕ ( x i , x ) + b \begin{aligned} f(x)= &amp; \sum_{i=1}^M \alpha_iy_i &lt;x_i, x&gt;+b \\ =&amp; \sum_{i=1}^M \alpha_iy_i \phi (x_i, x)+b \end{aligned} f(x)==i=1Mαiyi<xi,x>+bi=1Mαiyiϕ(xi,x)+b
  其中 ϕ ( x i , x ) \phi (x_i, x) ϕ(xi,x)可以是 x i , x x_i, x xi,x的内积,我们也可以用别的类似内积的函数替换,这就是核函数。它可以求两个样本的内积。 &lt; x i , x &gt; &lt;x_i, x&gt; <xi,x>相当于线性核函数。它可以是更复杂的函数,把变量映射到非线性的更高维空间里,这样做的好处是,可以把线性不可分的样本映射到更高维的空间里,有可能就可分了。核函数还可以用低维的简单计算式子去近似复杂的高维内积计算,简化计算复杂度。常见的核函数有以下几种,分别是多项式核,高斯核,线性核:
ϕ ( x 1 , x 2 ) = ( &lt; x 1 , x 2 &gt; + 1 ) 2 ϕ ( x 1 , x 2 ) = e − ∣ ∣ x 1 − x 2 ∣ ∣ 2 2 σ 2 ϕ ( x 1 , x 2 ) = ( &lt; x 1 , x 2 &gt; ) \begin{aligned} &amp;\phi(x_1,x_2)=(&lt;x_1,x_2&gt;+1)^2 \\ &amp;\phi(x_1,x_2)=e^{-\frac{||x_1-x_2||^2}{2\sigma^2}} \\ &amp;\phi(x_1,x_2)=(&lt;x_1,x_2&gt;) \end{aligned} ϕ(x1,x2)=(<x1,x2>+1)2ϕ(x1,x2)=e2σ2x1x22ϕ(x1,x2)=(<x1,x2>)
  这里重点说一下高斯核,它是把原样本点映射到无线维的,因为 e x e^x ex可以泰勒展开成无穷多项式,同理 e − ∣ ∣ x 1 − x 2 ∣ ∣ 2 2 σ 2 e^{- \frac {||x_1-x_2||^2} {2\sigma^2} } e2σ2x1x22也可以展开成无穷多项式,因此就是无穷维了。其中 σ \sigma σ较大时,两个不同的点经过映射后,成为高维空间上的同一个点(相互之间距离为0),这样一来,所有的样本点将被划分成同一个类,无法区分开来。 σ \sigma σ较小时,所有映射后的点彼此之间的距离都很大,这样一来每个样本点将被单独形成一个分类,容易过拟合。具体参考:关于支持向量机(SVM)的高斯核和惩罚因子C的理解(简单易懂)
  高斯核是映射到无穷维空间的原因参考

引入松弛变量

上面的分析都是基于这么一个假设:“所有样本是线性可分的”,但实际情况远没有这么理想,虽然通过核函数可以一定程度上解决线性不可分的问题,但有时导致这个问题可能是离群值,此时用核函数未必能完全可分。由于SVM的分类超平面完全由那几个支持向量决定,因此它对离群值挺敏感的,万一其中一个支持向量是离群值,它对分类超平面影响很大。
  为了解决这个问题,SVM允许数据点在一定程度上偏离一下超平面,具体来说,就是到超平面的距离可以小于1。因此目标函数和约束条件可以改为:
m i n &ThinSpace;&ThinSpace; 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 M ξ i s . t . &ThinSpace;&ThinSpace; ( ω T x i + b ) y i ≥ 1 − ξ i &ThinSpace;&ThinSpace; , i = 1 , 2 , . . . , M min\,\, \frac{1}{2}||\omega||^2+C \sum_{i=1}^M \xi_i \\ s.t. \,\, ( \omega^T x_i+b)y_i \geq 1- \xi_i\,\,,i=1,2,...,M min21ω2+Ci=1Mξis.t.(ωTxi+b)yi1ξi,i=1,2,...,M
  其中 ξ i \xi_i ξi是允许偏离的距离,称为松弛变量, ( 1 − ξ i ) (1- \xi_i) (1ξi)是样本点到超平面的距离。把 C ∑ i = 1 M ξ i C \sum_{i=1}^M \xi_i Ci=1Mξi放入目标函数可以尽量减少这种偏离, C C C是惩罚因子,这个惩罚类似于正则化惩罚项。

SVM多分类问题

例如对于5分类问题
one vs all:训练5个分类器,每个都是“类i or 非类i”。缺点是,存在分类重叠现象(超过一个分类器给出是)和不可分类现象(没有一个分类器给出是)
one vs one:训练 C 5 2 C_5^2 C52个分类器,对5个类两两组合,每个分类器都是“类i or 类j”。缺点是,存在分类重叠现象(但是可以通过投票决定),分类时调用 C 5 2 C_5^2 C52个分类器,太多了(但是可以通过构建有向无环图解决,DAGSVM)
参考此处

one vs all的损失函数,形式类似合页损失函数,假设样本的真实类别为 i i i g a p i gap_i gapi是样本距离 i i i分类超平面的距离(有正负),这里希望 g a p i gap_i gapi g a p k gap_k gapk大,而且至少大 Δ \Delta Δ那么多,否则就会有损失
m a x ( 0 , ∑ k ! = i Δ − ( g a p i − g a p k ) ) max(0, \sum_{k!=i} \Delta-(gap_i-gap_k)) max(0,k!=iΔ(gapigapk))
参考

另一个角度看SVM

软间隔最大化的目标(损失)函数还可以写为:
∑ i = 1 N [ 1 − y i ∗ ( w ⋅ x i + b ) ] + + λ ∣ ∣ w ∣ ∣ 2 \sum_{i=1}^N\left[1-y_i*(w\cdot x_i+b)\right]_++\lambda||w||^2 i=1N[1yi(wxi+b)]++λw2
这里依然令间隔为1,如果样本分类正确但离分类超平面的距离小于1,那么此样本的损失为 1 − 间 隔 1-间隔 1,如果分类错误,那么此样本的损失为 1 + 间 隔 1+间隔 1+,这里的间隔是有正负的。如下图所示,此损失函数成为合页损失函数(hinge损失),它不仅要求分类正确,还要求分类间隔要大于1,可以写成:
m a x ( 0 , 1 − y i ∗ ( w ⋅ x i + b ) ) max(0,1-y_i*(w\cdot x_i+b)) max(0,1yi(wxi+b))
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值