【机器学习算法】支持向量机SVM

线性可分

  在二维平面中,正样本和负样本可以由一条直线完全隔开。假设存在直线 y = ω 1 x + b y=\omega_1 x+b y=ω1x+b使得平面上 ω 1 x + b ≥ 0 \omega_1 x+b\ge 0 ω1x+b0处完全是正样本, ω 1 x + b &lt; 0 \omega_1 x+b&lt;0 ω1x+b<0完全是负样本,那么这条直线就是一个超平面,它将样本完全分开,并且这样的样本被称为线性可分

超平面

  超平面是推广到n维空间后的概念,在一维空间下,超平面就是一个点;在二维空间下,超平面就是一条直线;在三维平面下,超平面就是一个平面;…推广到n维情况,则统称为超平面

支持向量机

  在二维平面上,对于一组线性可分的数据,往往可以找到很多条直线作为超平面。支持向量机可以在这若干条直线中,找出最合适的一条直线作为决策边界。如何判断直线足够合适呢?对于一个决策边界,我们希望他能够具有较好的泛化能力。假如正样本均匀分布在y=0的直线上,负样本均匀分布在存在于y=9的直线上。假设我们取y=1,y=5,y=8作为超平面,从直觉上来讲,y=1,y=8两条直线都离一组样本过近,离另外一组样本过远,因此这两条直线都不合适。而y=5作为y=0和y=9的垂线,对于正样本和负样本都留有一定的余地,这使得模型的泛化能力变强。当出现一些噪声,比如y=2上出现了正样本,y=7上出现了负样本的情况,y=5都能够将其归为正确的分类。当然,并不是所有的样本都如我们期望的那样线性可分。
  总的来说,支持向量机(support vector machines)可以分为以下三种:

  1. 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分SVM。
  2. 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性SVM。
  3. 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机。

算法推导

几何间隔

  在超平面确定的情况下, ∣ ω x + b ∣ |\omega x+b| ωx+b表示点到超平面的距离,而函数最终预测输出的y(1和-1)与 ω x + b \omega x +b ωx+b 符号一致,因此可用 y ( ω x + b ) y(\omega x +b) y(ωx+b)来表示分类预测的准确程度。定义所有样本点最小的 y ( ω x + b ) y(\omega x +b) y(ωx+b)作为函数间隔,
  根据高中的知识,我们知道点到直线的距离公式为 d = ∣ a x 0 + b y 0 + c a 2 + b 2 ∣ d=|\frac{ax_0+by_0+c}{\sqrt{a^2+b^2}}| d=a2+b2 ax0+by0+c,点到平面的距离公式为 d = ∣ A x 0 + B y 0 + C z 0 + D A 2 + B 2 + C 2 ∣ d=|\frac{Ax_0+By_0+Cz_0+D}{\sqrt{A^2+B^2+C^2}}| d=A2+B2+C2 Ax0+By0+Cz0+D,如果用向量表示,设 ω = ( a , b ) \omega = (a,b) ω=(a,b), f ( x ) = ω T x + c f(x)=\omega ^Tx+c f(x)=ωTx+c,那么这个距离正是 ∣ f ( x ) ∣ ∣ ∣ ω ∣ ∣ \frac{|f(x)|}{||\omega||} ωf(x)

支持向量

  我们知道对于一个超平面恒有
y i ( w x i + b ) &gt; 0 y_i(wx_i+b) \gt 0 yi(wxi+b)>0
  则我们一定可以找到一个最小值 r r r
y i ( w x i + b ) = r y_i(wx_i+b)=r yi(wxi+b)=r
  对于 w x + b wx+b wx+b 2 w x + 2 b 2wx+2b 2wx+2b来说,对应的是相同的超平面,我们不妨令r=1,尽管最小值可能不是1,我们也可以通过缩放操作令其等于1,这样我们实际上也对w做了限制,使我们能够找到特定的解而不是无数解。
  满足 y ( ω T x + b ) = 1 y(\omega ^Tx+b)=1 y(ωTx+b)=1的样本点我们称之为支持向量。因为它们是撑开超平面的并且离超平面最近的点。对于其他不是支持向量的点,显然有 y ( ω T x + b ) &gt; 1 y(\omega ^Tx+b)&gt;1 y(ωTx+b)>1
  令 x ⃗ + \vec x_+ x + x ⃗ − \vec x_- x 表示两个正负支持向量,满足 y ( ω T x + b ) = 1 y(\omega ^Tx+b)=1 y(ωTx+b)=1,推出 { ω T x + = 1 − b ω T x − = − 1 − b \begin{cases}\omega ^Tx_+=1-b \\ \omega ^Tx_-=-1-b \end{cases} {ωTx+=1bωTx=1b。对于一正一负两个支持向量的间隔等于两个支持向量的差在 ω \omega ω上的投影,即
γ = x ⃗ + ⋅ ω ⃗ T ∣ ∣ ω ∣ ∣ − x ⃗ − ⋅ ω ⃗ T ∣ ∣ ω ∣ ∣ = x ⃗ + ⋅ ω ⃗ T − x ⃗ − ⋅ ω ⃗ T ∣ ∣ ω ∣ ∣ = 1 − b + ( 1 + b ) ∣ ∣ ω ∣ ∣ = 2 ∣ ∣ ω ∣ ∣ \gamma=\frac{\vec x_+·\vec \omega ^T}{||\omega||}-\frac{\vec x_-·\vec \omega ^T}{||\omega||}=\frac{\vec x_+·\vec \omega ^T-\vec x_-·\vec \omega ^T}{||\omega||}=\frac{1-b+(1+b)}{||\omega||}=\frac{2}{||\omega||} γ=ωx +ω Tωx ω T=ωx +ω Tx ω T=ω1b+(1+b)=ω2。因此,我们的目标就是最大化这个间隔,也就是
max ⁡ w , b 2 ∣ ∣ ω ∣ ∣ , s . t . y i ( ω T x i + b ) ≥ 1 ( i = 1 , 2 , . . . , m ) \max_{w,b}\frac{2}{||\omega||},s.t. y_i(\omega^Tx_i+b)\ge 1(i=1,2,...,m) w,bmaxω2,s.t.yi(ωTxi+b)1(i=1,2,...,m)
最大化 2 ∣ ∣ ω ∣ ∣ \frac{2}{||\omega||} ω2相当于最小化 ∣ ∣ ω ∣ ∣ ||\omega|| ω,为了计算方便,将上述式子转化为
min ⁡ w , b 1 2 ∣ ∣ ω ∣ ∣ 2 , s . t . y i ( ω T x i + b ) ≥ 1 ( i = 1 , 2 , . . . , m ) . . . . . . . . . . . . . . . . . . ( 1 ) \min_{w,b}\frac{1}{2}||\omega||^2,s.t. y_i(\omega^Tx_i+b)\ge 1(i=1,2,...,m) ..................(1) w,bmin21ω2,s.t.yi(ωTxi+b)1(i=1,2,...,m)..................(1)

对偶问题

  该问题的拉格朗日函数可以写为:
L ( ω , b , a ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i = 1 m a i ( 1 − y i ( ω T x i + b ) ) . . . . . . . . . . . . . . . . . . . . . ( 2 ) L(\omega,b,a)=\frac{1}{2}||\omega||^2+\sum_{i=1}^ma_i(1-y_i(\omega^Tx_i+b)).....................(2) L(ω,b,a)=21ω2+i=1mai(1yi(ωTxi+b)).....................(2)
  公式(1)等价于求解 min ⁡ w , b ( max ⁡ a n ≥ 0 L ( w , b , a ) ) \min\limits_{w,b}(\max\limits_{a_n\ge 0}L(w,b,a)) w,bmin(an0maxL(w,b,a)),考虑两种情况:

  • 如果某个b,w不符合原始问题的条件,即某个 1 − y i ( ω T x i + b ) &gt; 0 1-y_i(\omega^Tx_i+b)&gt;0 1yi(ωTxi+b)>0,则内部的max操作会将a推向无穷大,在min操作中会被淘汰。
  • 如果某个b,w满足原始问题的约束,则内部max会将所有的a推向0,在外部的min操作中就会取得满足条件的b,w中目标函数最小的组合。

对于一个确定的a’,根据 m a x ≥ a n y max\ge any maxany,有
min ⁡ w , b ( max ⁡ a n ≥ 0 L ( w , b , a ) ) ≥ min ⁡ w , b L ( w , b , a ′ ) \min_{w,b}(\max_{a_n\ge 0}L(w,b,a)) \ge \min_{w,b}L(w,b,a&#x27;) w,bmin(an0maxL(w,b,a))w,bminL(w,b,a)
因为对于a’都有上式成立,所以
min ⁡ w , b ( max ⁡ a n ≥ 0 L ( w , b , a ) ) ≥ max ⁡ a n ≥ 0 ( min ⁡ w , b L ( w , b , a ′ ) ) \min_{w,b}(\max_{a_n\ge 0}L(w,b,a)) \ge \max_{a_n\ge 0}(\min_{w,b}L(w,b,a&#x27;)) w,bmin(an0maxL(w,b,a))an0max(w,bminL(w,b,a))
  上式被称作是弱对偶关系,当等号成立时称为强对偶关系。什么时候会是强对偶关系呢?我们先将其对偶问题写出来:
max ⁡ a n ≥ 0 ( min ⁡ w , b L ( w , b , a ′ ) ) \max_{a_n\ge 0}(\min_{w,b}L(w,b,a&#x27;)) an0max(w,bminL(w,b,a))
  当原问题和对偶具有强对偶关系的充要条件是它们满足KKT条件。该拉格朗日函数式子的KKT条件为:
{ ∂ L ∂ w = 0 , ∂ L ∂ b = 0 , ∂ L ∂ a = 0 a i ≥ 0 1 − y i ( ω T x i + b ) ≤ 0 a i ( 1 − y i ( ω T x i + b ) ) = 0 \begin{cases} \frac{\partial L}{\partial w}=0,\frac{\partial L}{\partial b}=0,\frac{\partial L}{\partial a}=0\\ a_i \ge 0 \\ 1-y_i(\omega^Tx_i+b) \le 0 \\ a_i(1-y_i(\omega^Tx_i+b)) = 0 \end{cases} wL=0,bL=0,aL=0ai01yi(ωTxi+b)0ai(1yi(ωTxi+b))=0
  公式(2)分别对 ω \omega ω和b求偏导得到:
{ ∂ L ∂ ω = ω − ∑ i = 1 m a i y i x i ∂ L ∂ b = ∑ i = 1 m a i y i \begin{cases} \frac{\partial L}{\partial \omega}=\omega-\sum\limits_{i=1}^ma_iy_ix_i\\ \frac{\partial L}{\partial b}=\sum\limits_{i=1}^ma_iy_i \end{cases} ωL=ωi=1maiyixibL=i=1maiyi
  分别令偏导为0,得到
{ ω = ∑ i = 1 m a i y i x i . . . . . . . . . . ( 3 ) ∑ i = 1 m a i y i = 0.............. ( 4 ) \begin{cases} \omega=\sum\limits_{i=1}^ma_iy_ix_i..........(3)\\ \sum\limits_{i=1}^ma_iy_i=0..............(4) \end{cases} ω=i=1maiyixi..........(3)i=1maiyi=0..............(4)
  由于并没有出现 b b b,因此我们还需要看一下b怎么求。对于KKT条件,可以发现只有支持向量上的点 x k x_k xk满足
1 − y k ( ω T x k + b ) = 0 1-y_k(\omega^Tx_k+b) = 0 1yk(ωTxk+b)=0
  而除了支持向量以外的点,其参数a都为0。对上式进行同乘 y i y_i yi并化简,就得到了求b的公式
b = y k − ω T x k = y k − ∑ i = 1 m a i y i x i T ⋅ x k . . . . . . . . . . . ( 5 ) b=y_k-\omega^Tx_k=y_k-\sum_{i=1}^ma_iy_ix_i^T·x_k...........(5) b=ykωTxk=yki=1maiyixiTxk...........(5)
  将公式(3)和(4)代入(2)中得到
L ( ω , b , a ) = 1 2 ω T ω + ∑ i = 1 m a i − ∑ i = 1 m a i y i ( ω T x i + b ) = 1 2 ω T ω + ∑ i = 1 m a i − ω T ∑ i = 1 m a i y i x i − b ∑ i = 1 m a i y i = 1 2 ω T ∑ i = 1 m a i y i x i + ∑ i = 1 m a i − ω T ∑ i = 1 m a i y i x i − b ⋅ 0 = ∑ i = 1 m a i − 1 2 ω T ∑ i = 1 m a i y i x i = ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i x j s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . m \begin{aligned}L(\omega,b,a) &amp;=\frac{1}{2}\omega^T\omega+\sum_{i=1}^ma_i-\sum_{i=1}^ma_iy_i(\omega^Tx_i+b)\\ &amp;=\frac{1}{2}\omega^T\omega+\sum_{i=1}^ma_i-\omega^T\sum_{i=1}^ma_iy_ix_i-b\sum_{i=1}^ma_iy_i\\ &amp;=\frac{1}{2}\omega^T\sum_{i=1}^ma_iy_ix_i+\sum_{i=1}^ma_i-\omega^T\sum_{i=1}^ma_iy_ix_i-b·0\\ &amp;=\sum_{i=1}^ma_i-\frac{1}{2}\omega^T\sum_{i=1}^ma_iy_ix_i\\ &amp;=\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j \\ &amp;s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m \end{aligned} L(ω,b,a)=21ωTω+i=1maii=1maiyi(ωTxi+b)=21ωTω+i=1maiωTi=1maiyixibi=1maiyi=21ωTi=1maiyixi+i=1maiωTi=1maiyixib0=i=1mai21ωTi=1maiyixi=i=1mai21i=1mj=1maiajyiyjxixjs.t.i=1maiyi=0,ai0,i=1,2,...m
  于是我们得到了只包含变量a的表达式,从上面的式子可以得到
max ⁡ a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i x j . . . . . . ( 6 ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . m \max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j ......(6)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m \\ amaxi=1mai21i=1mj=1maiajyiyjxixj......(6)s.t.i=1maiyi=0,ai0,i=1,2,...m
  通过求解公式(6)得到a后,并回代得到 ω \omega ω和b,我们最终可以到超平面:
f ( x ) = ω T x + b = ∑ i = 1 m a i y i x i T x + b . . . . . . . . . . ( 7 ) f(x)=\omega^Tx+b=\sum_{i=1}^ma_iy_ix_i^Tx+b..........(7) f(x)=ωTx+b=i=1maiyixiTx+b..........(7)
  结合式子(2)以及KKT条件,可以知道对于任意的训练样本 ( x i , y i ) (x_i,y_i) (xi,yi),若 a i = 0 a_i=0 ai=0,则其不会在(6)中出现, 也不会在求b和w的公式中出现,不影响模型训练。若 a i &gt; 0 a_i&gt;0 ai>0,则 y i ( ω T x i + b ) = 1 y_i(\omega^Tx_i+b)=1 yi(ωTxi+b)=1,即该样本一定是支持向量。不难发现,最终模型只与支持向量有关;

非线性SVM

  对于非线性的问题,上面的SVM并不能够有效解决,必须用到非线性模型才可以分类。对于二维平面上散落的点,我们不一定能够用一条直线就将其分开,比如圆形、椭圆形、矩形或其他不规则的决策边界。对于这样的问题,我们可以将训练样本映射到一个更高的维度,并且在这个高维度中样本是线性可分的,这样我们就又可以用回前面的公式。
  想象一个平面上分散着线性不可分的样本点,一个高手一拍桌子,样本点飞上了天空,并且刚好有一个平面可以将正样本和负样本隔开。令 ϕ ( x ) \phi_(x) ϕ(x)表示将x映射到高维空间后的特征向量,于是在特征空间中,模型变为
f ( x ) = ω T ϕ ( x ) + b . . . . . . . . . . ( 8 ) f(x)=\omega^T\phi(x)+b..........(8) f(x)=ωTϕ(x)+b..........(8)
  最小化函数为:
min ⁡ w , b 1 2 ∣ ∣ ω ∣ ∣ 2 , s . t . y i ( ω T ϕ ( x i ) + b ) ≥ 1 ( i = 1 , 2 , . . . , m ) . . . . . . . . . . . . . . . ( 9 ) \min_{w,b}\frac{1}{2}||\omega||^2,s.t. y_i(\omega^T\phi(x_i)+b)\ge 1(i=1,2,...,m) ...............(9) w,bmin21ω2,s.t.yi(ωTϕ(xi)+b)1(i=1,2,...,m)...............(9)
  其对偶问题变为:
max ⁡ a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j ϕ ( x i ) T ϕ ( x j ) . . . . . . . . . ( 10 ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . m \max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_j\phi(x_i)^T\phi(x_j) .........(10)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m amaxi=1mai21i=1mj=1maiajyiyjϕ(xi)Tϕ(xj).........(10)s.t.i=1maiyi=0,ai0,i=1,2,...m
  若要计算,由于样本已经被映射到高维空间,如果要计算高维度的 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)通常是困难的,于是我们想利用样本在原特征空间下,通过某个函数 K ( x i , x j ) K(x_i,x_j) K(xi,xj)得到其在高维空间下的內积。则式子(10)变为
max ⁡ a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j K ( x i , x j ) . . . . . . . . . ( 11 ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . m \max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jK(x_i,x_j) .........(11)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m amaxi=1mai21i=1mj=1maiajyiyjK(xi,xj).........(11)s.t.i=1maiyi=0,ai0,i=1,2,...m
求解后得到
f ( x ) = ω T ϕ ( x ) + b = ∑ i = 1 m a i y i ϕ ( x i ) T ϕ ( x j ) + b ( 12 ) = ∑ i = 1 m a i y i K ( x i , x j ) + b \begin{aligned} f(x) &amp;= \omega^T\phi(x)+b\\ &amp;= \sum_{i=1}^ma_iy_i\phi(x_i)^T\phi(x_j)+b \qquad\qquad\qquad (12)\\ &amp;= \sum_{i=1}^ma_iy_iK(x_i,x_j)+b \end{aligned} f(x)=ωTϕ(x)+b=i=1maiyiϕ(xi)Tϕ(xj)+b(12)=i=1maiyiK(xi,xj)+b

核函数

  上面提到的 K ( x i , x j ) K(x_i,x_j) K(xi,xj),其实就是核函数,它用来映射原始样本 x i , x i x_i,x_i xi,xi在高维特征空间下的內积,从而避免了直接在高维空间中进行计算。由于核函数的构造较为复杂,因此人们通常从一些常用的核函数中选择,而不是自己构造。一些常用的核函数如下:

  • 线性核: K ( x i , x j ) = x i T x j K(x_i,x_j)=x_i^Tx_j K(xi,xj)=xiTxj
  • 多项式核: K ( x i , x j ) = ( x i T x j ) d K(x_i,x_j)=(x_i^Tx_j)^d K(xi,xj)=(xiTxj)d(d是多项式的次数,d=1时为线性核)
  • 高斯核: K ( x i , x j ) = e x p ( ∣ ∣ x i − x j ∣ ∣ 2 2 σ 2 ) , ( σ &gt; 0 ) K(x_i,x_j)=exp(\frac{||x_i-x_j||^2}{2\sigma^2}),(\sigma&gt;0) K(xi,xj)=exp(2σ2xixj2),(σ>0)
  • 拉普拉斯核: K ( x i , x j ) = e x p ( ∣ ∣ x i − x j ∣ ∣ σ ) , ( σ &gt; 0 ) K(x_i,x_j)=exp(\frac{||x_i-x_j||}{\sigma}),(\sigma&gt;0) K(xi,xj)=exp(σxixj),(σ>0)
  • Sigmoid核: K ( x i , x j ) = t a n h ( β x i T x j + θ ) , ( β &gt; 0 , θ &gt; 0 ) K(x_i,x_j)=tanh(\beta x_i^Tx_j+\theta),(\beta &gt;0,\theta&gt;0) K(xi,xj)=tanh(βxiTxj+θ),(β>0,θ>0)

松弛变量

  当样本是线性不可分的时候,往往需要映射到高维空间内计算。但有时仅仅只是因为数据有噪音,比如说,有一两个噪声,偏离了正常的位置。这些噪声如果作为支持向量的话,超平面将不得不变得偏离,间隔也会变小。如果我们能够允许数据点在一定程度上偏离超平面,这样我们依旧能够得到较好的超平面。因此我们定义一个变量 ξ i = 1 − y i ( ω T x i + b ) \xi_i=1-y_i(\omega^Tx_i+b) ξi=1yi(ωTxi+b),使得约束条件变为:
y i ( ω T x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . , n y_i(\omega ^Tx_i+b) \ge 1-\xi_i ,i=1,2,...,n yi(ωTxi+b)1ξi,i=1,2,...,n
   ξ i \xi_i ξi称为松弛变量,是样本 x i x_i xi允许偏移的量。当 ξ \xi ξ很大时,任意的超平面都符合条件。所以在目标函数加上一项,使得 ξ \xi ξ的总和也要最小,新的优化目标为
m i n 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m ξ i ( 13 ) s . t . y i ( ω T x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . m ξ i ≥ 0 , i = 1 , 2 , . . . m min\frac{1}{2}||\omega||^2+C\sum_{i=1}^m\xi_i\qquad (13)\\ s.t. \qquad y_i(\omega^Tx_i+b)\ge 1-\xi_i,i=1,2,...m \\ \xi_i \ge 0,i=1,2,...m min21ω2+Ci=1mξi(13)s.t.yi(ωTxi+b)1ξi,i=1,2,...mξi0,i=1,2,...m
  其中C作为惩罚参数,当C很大时,对分类错误的惩罚较大;当C较小时,对分类错误的惩罚较小,公式(13)要使最小间隔尽量大,误分类点尽量少,C是调和两者的权重系数。
  在式子(13)中新增的松弛变量,其实可以看做是对损失函数 l o s s = m a x { 0 , ξ i } = m a x { 0 , 1 − y i ( w ⋅ x i + b ) } loss=max\{0,\xi_i\}=max\{0,1-y_i(w·x_i+b)\} loss=max{0,ξi}=max{0,1yi(wxi+b)}
的优化,它又被称为合页损失函数。
  当样本点被正确分类时且函数间隔 y i ( w ⋅ x i + b ) y_i(w·x_i+b) yi(wxi+b)大于1时,损失是0,否则损失是 1 − y i ( w ⋅ x i + b ) 1-y_i(w·x_i+b) 1yi(wxi+b)。相比0-1损失函数和感知机损失函数,合页损失函数不仅要正确分类,而且确信度足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。
  公式(13)的拉格朗日函数为
L ( ω , b , a , ξ , μ ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m a i ( 1 − ξ i − y i ( ω T x i + b ) ) − ∑ i = 1 m μ i ξ i . . . . . . . . . . ( 14 ) L(\omega,b,a,\xi,\mu)=\frac{1}{2}||\omega||^2+ C\sum_{i=1}^m\xi_i+\sum_{i=1}^ma_i(1-\xi_i-y_i(\omega^Tx_i+b))-\sum_{i=1}^m\mu_i\xi_i..........(14) L(ω,b,a,ξ,μ)=21ω2+Ci=1mξi+i=1mai(1ξiyi(ωTxi+b))i=1mμiξi..........(14)
  该式子的KKT条件为:
{ a i ≥ 0 1 − ξ i − y i ( ω T x i + b ) ≥ 0 a i ( 1 − ξ i − y i ( ω T x i + b ) ) = 0 ξ i ≥ 0 μ i ≥ 0 μ i ξ i = 0 \begin{cases} a_i \ge 0 \\ 1-\xi_i-y_i(\omega^Tx_i+b) \ge 0 \\ a_i(1-\xi_i-y_i(\omega^Tx_i+b)) = 0 \\ \xi_i \ge 0 \\ \mu_i \ge 0 \\ \mu_i\xi_i = 0 \end{cases} ai01ξiyi(ωTxi+b)0ai(1ξiyi(ωTxi+b))=0ξi0μi0μiξi=0
  求导后令偏导数为0,得
{ ω = ∑ i = 1 m a i y i x i . . . . . . . . . ( 15 ) ∑ i = 1 m a i y i = 0......... ( 16 ) ∂ L ∂ ξ i = C − a i − μ i = 0 i = 1 , 2 , . . . m ( 17 ) \begin{cases} \omega=\sum\limits_{i=1}^ma_iy_ix_i.........(15)\\ \sum\limits_{i=1}^ma_iy_i=0.........(16)\\ \frac{\partial L}{\partial \xi_i}=C-a_i-\mu_i=0\quad i=1,2,...m\qquad(17) \end{cases} ω=i=1maiyixi.........(15)i=1maiyi=0.........(16)ξiL=Caiμi=0i=1,2,...m(17)
  将公式(15)(16)(17)带入(14)得到
max ⁡ a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i x j . . . . . . . . . . . . . ( 18 ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , μ i ≥ 0 , 0 ≤ a i ≤ C , i = 1 , 2 , . . . m \max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j.............(18) \\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,\mu_i \ge 0,0 \le a_i \le C,i=1,2,...m amaxi=1mai21i=1mj=1maiajyiyjxixj.............(18)s.t.i=1maiyi=0,ai0,μi0,0aiC,i=1,2,...m

SMO算法

  那么如何求解以上公式中的a呢?这里要用到的是一种高效求解的算法SMO算法,即序列最小最优化算法。a需要满足两个条件,因此我们同时更新两个变量,保证两个基本条件可以满足。假设我们更新变量 a 1 , a 2 a_1,a_2 a1,a2,则其他变量 a i ( i = 3 , 4 , . . . m ) a_i(i=3,4,...m) ai(i=3,4,...m)是固定的,令 ξ = − ∑ i = 3 m a i y i \xi=-\sum\limits_{i=3}^ma_iy_i ξ=i=3maiyi,则有 a 1 y 1 + a 2 y 2 = ξ a_1y_1+a_2y_2=\xi a1y1+a2y2=ξ。优化问题的子问题变为:
min ⁡ a 1 , a 2 W ( a 1 , a 2 ) = 1 2 K 11 a 1 2 + 1 2 K 22 a 2 2 + y 1 y 2 K 12 a 1 a 2 − ( a 1 + a 2 ) + y 1 a 1 ∑ i = 3 m y i a i K i 1 + y 2 a 2 ∑ i = 3 m y i a i K i 2 s . t . a 1 y 1 + a 2 y 2 = ξ , 0 ≤ a i ≤ C , i = 1 , 2 , . . . m \min_{a_1,a_2}W(a_1,a_2)=\frac{1}{2}K_{11}a_1^2+\frac{1}{2}K_{22}a_2^2+y_1y_2K_{12}a_1a_2-(a_1+a_2)+y_1a_1\sum_{i=3}^my_ia_iK_{i1}+y_2a_2\sum_{i=3}^my_ia_iK_{i2} \\ s.t. \quad a_1y_1+a_2y_2=\xi,0 \le a_i \le C,i=1,2,...m a1,a2minW(a1,a2)=21K11a12+21K22a22+y1y2K12a1a2(a1+a2)+y1a1i=3myiaiKi1+y2a2i=3myiaiKi2s.t.a1y1+a2y2=ξ,0aiC,i=1,2,...m
  由于 a 1 y 1 + a 2 y 2 = ξ a_1y_1+a_2y_2=\xi a1y1+a2y2=ξ等价于 { a 1 + a 2 = ξ a 1 − a 2 = ξ \begin{cases}a_1+a_2=\xi \\ a_1-a_2=\xi\end{cases} {a1+a2=ξa1a2=ξ。由于 a 1 a_1 a1 a 2 a_2 a2都位于0和C之间,目标函数的约束域是以(0,0),(0,C),(C,0),(C,C)围成的正方形区域,其中存在的 a 1 + a 2 = ξ a_1+a_2=\xi a1+a2=ξ a 1 − a 2 = ξ a_1-a_2=\xi a1a2=ξ两条直线。由条件 a 1 y 1 + a 2 y 2 = ξ , y i 2 = 1 a_1y_1+a_2y_2=\xi,y_i^2=1 a1y1+a2y2=ξyi2=1 a 1 = ( ξ − a 2 y 2 ) y 1 a_1=(\xi-a_2y_2)y_1 a1=(ξa2y2)y1,回代到 W ( a 1 , a 2 ) W(a_1,a_2) W(a1,a2)得到只包含 a 2 a_2 a2的函数
W ( a 2 ) = 1 2 K 11 ( ξ − a 2 y 2 ) 2 + 1 2 K 22 a 2 2 + y 2 K 12 ( ξ − a 2 y 2 ) a 2 − ( ξ − a 2 y 2 ) y 1 − a 2 + v 1 ( ξ − a 2 y 2 ) + y 2 v 2 a 2 W(a_2)=\frac{1}{2}K_{11}(\xi-a_2y_2)^2+\frac{1}{2}K_{22}a_2^2+y_2K_{12}(\xi-a_2y_2)a_2\\-(\xi-a_2y_2)y_1-a_2+v_1(\xi-a_2y_2)+y_2v_2a_2 W(a2)=21K11(ξa2y2)2+21K22a22+y2K12(ξa2y2)a2(ξa2y2)y1a2+v1(ξa2y2)+y2v2a2
  其中
v i = ∑ j = 3 N a j y j K ( x i , x j ) = g ( x ) − ∑ j = 1 2 a j y j K ( x i , x j ) − b , i = 1 , 2 v_i=\sum_{j=3}^Na_jy_jK(x_i,x_j)=g(x)-\sum_{j=1}^2a_jy_jK(x_i,x_j)-b,i=1,2 vi=j=3NajyjK(xi,xj)=g(x)j=12ajyjK(xi,xj)b,i=1,2
  令
g ( x ) = ∑ i = 1 N a i y i K ( x i , x ) + b E i = g ( x i ) − y i = ( ∑ j = 1 N a j y j K ( x j , x i ) + b ) − y i , i = 1 , 2 g(x)=\sum_{i=1}^Na_iy_iK(x_i,x)+b \\ E_i=g(x_i)-y_i=\left(\sum_{j=1}^Na_jy_jK(x_j,x_i)+b\right)-y_i,i=1,2 g(x)=i=1NaiyiK(xi,x)+bEi=g(xi)yi=(j=1NajyjK(xj,xi)+b)yi,i=1,2
  其中 E i E_i Ei表示函数g(x)对输入 x i x_i xi的预测值与真实输出 y i y_i yi的差。
  对 W ( a 2 ) W(a_2) W(a2)求导并令其为0,且 a 1 o l d y 1 + a 2 o l d y 2 = ξ a_1^{old}y_1+a_2^{old}y_2=\xi a1oldy1+a2oldy2=ξ η = K 11 − 2 K 12 + K 22 = ( ϕ ( x 1 ) − ϕ ( x 2 ) ) 2 \eta=K_{11}-2K_{12}+K_{22}=(\phi(x_1)-\phi(x_2))^2 η=K112K12+K22=(ϕ(x1)ϕ(x2))2,于是得到
a 2 n e w , u n c = a 2 o l d + y 2 ( E 1 − E 2 ) η a_2^{new,unc}=a_2^{old}+\frac{y_2(E_1-E_2)}{\eta} a2new,unc=a2old+ηy2(E1E2)
我们的目标是求在正方形内的线段上的最优值,令线段的左端点为L,右端点为H,则有 a 1 , a 2 a_1,a_2 a1,a2的更新值如下
a 2 n e w = { H , a 2 n e w , u n c &gt; H a 2 n e w , u n c , L ≤ a 2 n e w , u n c ≤ H L , a 2 n e w , u n c &lt; L a 1 n e w = a 1 o l d + y 1 y 2 ( a 2 o l d − a 2 n e w ) a_2^{new}= \begin{cases} H,a_2^{new,unc} &gt; H \\ a_2^{new,unc} ,L \le a_2^{new,unc} \le H \\ L, a_2^{new,unc} &lt; L \end{cases} \\ a_1^{new}=a_1^{old}+y_1y_2(a_2^{old}-a_2^{new}) a2new=H,a2new,unc>Ha2new,unc,La2new,uncHL,a2new,unc<La1new=a1old+y1y2(a2olda2new)
  关于 a 1 , a 2 a_1,a_2 a1,a2变量的选择,SMO采用启发式选择,选择的a应该满足KKT条件,并且更新时应该最大限度地它包含三个步骤:

  1. 扫描所有拉格朗日乘子,把第一个违反KKT条件的作为更新对象,令其为 a j a_j aj
  2. 在所有不违反KKT条件的乘子中,选择使 ∣ E i − E j ∣ |E_i-E_j| EiEj最大的 a i a_i ai
  3. 重新计算 b 、 E i , E j b、E_i,E_j bEi,Ej

  SMO算法的主要步骤总结如下:

  1. 选择接下来要更新的一对 a i a_i ai a j a_j aj;采用启发式的方式进行选择,使目标函数最大程度接近全局最优值。
  2. a i a_i ai a j a_j aj进行优化,保持其他所有的 a k ( k ≠ i , j ) a_k(k \ne i,j) ak(k̸=i,j)不变。

合页损失函数

  对于线性支持向量机来说,还有另外一种解释就是最小化以下目标函数:
∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∣ ∣ w ∣ ∣ 2 \sum_{i=1}^N[1-y_i(w·x_i+b)]_++\lambda||w||^2 i=1N[1yi(wxi+b)]++λw2
  其中第一项是经验损失,函数 L ( y ( w ⋅ x + b ) ) = [ 1 − y i ( w ⋅ x i + b ) ] + L(y(w·x+b))=[1-y_i(w·x_i+b)]_+ L(y(wx+b))=[1yi(wxi+b)]+被称为合页损失函数。下标“+”表示以下函数
[ z ] + = { z , z &gt; 0 0 , z ≤ 0 [z]_+= \begin{cases} z, &amp; z \gt 0\\ 0, &amp; z \le 0 \end{cases} [z]+={z,0,z>0z0
  当样本点被正确分类时且函数间隔 y i ( w ⋅ x i + b ) y_i(w·x_i+b) yi(wxi+b)大于1时,损失是0,否则损失是 1 − y i ( w ⋅ x i + b ) 1-y_i(w·x_i+b) 1yi(wxi+b)。相比0-1损失函数和感知机损失函数,合页损失函数不仅要正确分类,而且确信度足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值