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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/85390019

线性可分

  在二维平面中,正样本和负样本可以由一条直线完全隔开。假设存在直线 y = ω 1 x + b y=\omega_1 x+b 使得平面上 ω 1 x + b 0 \omega_1 x+b\ge 0 处完全是正样本, ω 1 x + b < 0 \omega_1 x+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| 表示点到超平面的距离,而函数最终预测输出的y(1和-1)与 ω x + b \omega x +b 符号一致,因此可用 y ( ω x + b ) y(\omega x +b) 来表示分类预测的准确程度。定义所有样本点最小的 y ( ω x + b ) y(\omega 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 = 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}}| ,如果用向量表示,设 ω = ( a , b ) \omega = (a,b) , f ( x ) = ω T x + c f(x)=\omega ^Tx+c ,那么这个距离正是 f ( x ) ω \frac{|f(x)|}{||\omega||}

支持向量

  满足 y ( ω T x + b ) = 1 y(\omega ^Tx+b)=1 的样本点称之为支持向量。对于其他不是支持向量的点,显然有 y ( ω T x + b ) > 1 y(\omega ^Tx+b)>1
  令 x + \vec x_+ x \vec x_- 表示两个正负支持向量,满足 y ( ω T x + b ) = 1 y(\omega ^Tx+b)=1 ,推出 { ω T x + = 1 b ω T x = 1 b \begin{cases}\omega ^Tx_+=1-b \\ \omega ^Tx_-=-1-b \end{cases} 。对于一正一负两个支持向量的间隔等于两个支持向量的差在 ω \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||} 。因此,我们的目标就是最大化这个间隔,也就是
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)
最大化 2 ω \frac{2}{||\omega||} 相当于最小化 ω ||\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)

对偶问题

  该问题的拉格朗日函数可以写为:
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)
  公式(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)) ,考虑两种情况:

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

对于一个确定的a’,根据 m a x a n y max\ge any ,有
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')
因为对于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'))
  因此得到其对偶问题为:
max a n 0 ( min w , b L ( w , b , a ) ) \max_{a_n\ge 0}(\min_{w,b}L(w,b,a'))
  该拉格朗日函数式子的KKT条件为:
{ a i 0 1 y i ( ω T x i + b ) 0 a i ( 1 y i ( ω T x i + b ) ) = 0 \begin{cases} a_i \ge 0 \\ 1-y_i(\omega^Tx_i+b) \ge 0 \\ a_i(1-y_i(\omega^Tx_i+b)) = 0 \end{cases}
  公式(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}
  根据拉格朗日乘子法,分别令偏导为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}
  将公式(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) &=\frac{1}{2}\omega^T\omega+\sum_{i=1}^ma_i-\sum_{i=1}^ma_iy_i(\omega^Tx_i+b)\\ &=\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\\ &=\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\\ &=\sum_{i=1}^ma_i-\frac{1}{2}\omega^T\sum_{i=1}^ma_iy_ix_i\\ &=\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j \\ &s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m \end{aligned}
  于是我们得到了只包含变量a的表达式,从上面的式子可以得到
min 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 . . . . . . ( 5 ) s . t . i = 1 m a i y i = 0 , a i 0 , i = 1 , 2 , . . . m \min_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j ......(5)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m \\
  通过求解公式(5)得到a后,并回代得到 ω \omega 和b,我们最终可以到超平面:
f ( x ) = ω T x + b = i = 1 m a i y i x i T x + b . . . . . . . . . . ( 6 ) f(x)=\omega^Tx+b=\sum_{i=1}^ma_iy_ix_i^Tx+b..........(6)
  结合式子(2)以及KKT条件,可以知道对于任意的训练样本 ( x i , y i ) (x_i,y_i) ,若 a i = 0 a_i=0 ,则其不会在(6)中出现,不影响模型训练。若 a i > 0 a_i>0 ,则 y i ( ω T x i + b ) = 1 y_i(\omega^Tx_i+b)=1 ,即该样本一定是支持向量。不难发现,最终模型只与支持向量有关;

非线性SVM

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

核函数

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

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

松弛变量

  当样本是线性不可分的时候,往往需要映射到高维空间内计算。但有时仅仅只是因为数据有噪音,比如说,有一两个噪声,偏离了正常的位置。这些噪声如果作为支持向量的话,超平面将不得不变得偏离,间隔也会变小。如果我们能够允许数据点在一定程度上偏离超平面,这样我们依旧能够得到较好的超平面。因此我们定义一个变量 ξ \xi ,使得约束条件变为:
y i ( ω T x i + b ) 1 ξ , i = 1 , 2 , . . . , n y_i(\omega ^Tx_i+b) \ge 1-\xi ,i=1,2,...,n
   ξ i \xi_i 称为松弛变量,是样本 x i x_i 允许偏移的量。当 ξ \xi 很大时,任意的超平面都符合条件。所以在目标函数加上一项,使得 ξ \xi 的总和也要最小,新的优化目标为
m i n 1 2 ω 2 + C i = 1 m ξ i ( 12 ) 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 (12)\\ 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
  其中C作为惩罚参数,当C很大时,对分类错误的惩罚较大;当C较小时,对分类错误的惩罚较小,公式()要使最小间隔尽量大,误分类点尽量少,C是调和两者的权重系数。
  公式(12)的拉格朗日函数为
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 . . . . . . . . . . ( 13 ) 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..........(13)
  该式子的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}
  求导后令偏导数为0,得
{ ω = i = 1 m a i y i x i . . . . . . . . . ( 14 ) i = 1 m a i y i = 0......... ( 15 ) L ξ i = C a i μ i = 0 i = 1 , 2 , . . . m ( 16 ) \begin{cases} \omega=\sum\limits_{i=1}^ma_iy_ix_i.........(14)\\ \sum\limits_{i=1}^ma_iy_i=0.........(15)\\ \frac{\partial L}{\partial \xi_i}=C-a_i-\mu_i=0\quad i=1,2,...m\qquad(16) \end{cases}
  将公式(14)(15)(16)带入(13)得到
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 . . . . . . . . . . . . . ( 17 ) 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.............(17) \\ 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

SMO算法

  那么如何求解以上公式中的a呢?这里要用到的是SMO算法,即序列最小最优化算法。a需要满足两个条件,因此我们同时更新两个变量,保证两个基本条件可以满足。假设我们更新变量 a 1 , a 2 a_1,a_2 ,则其他变量 a i ( i = 3 , 4 , . . . m ) a_i(i=3,4,...m) 是固定的,令 ξ = i = 3 m a i y i \xi=-\sum\limits_{i=3}^ma_iy_i ,则有 a 1 y 1 + a 2 y 2 = ξ a_1y_1+a_2y_2=\xi 。优化问题的子问题变为:
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
  由于 a 1 y 1 + a 2 y 2 = ξ a_1y_1+a_2y_2=\xi 等价于 { a 1 + a 2 = ξ a 1 a 2 = ξ \begin{cases}a_1+a_2=\xi \\ a_1-a_2=\xi\end{cases} 。由于 a 1 a_1 a 2 a_2 都位于0和C之间,目标函数的约束域是以(0,0),(0,C),(C,0),(C,C)围成的正方形区域,其中存在的 a 1 + a 2 = ξ a_1+a_2=\xi a 1 a 2 = ξ a_1-a_2=\xi 两条直线。由条件 a 1 y 1 + a 2 y 2 = ξ y i 2 = 1 a_1y_1+a_2y_2=\xi,y_i^2=1 a 1 = ( ξ a 2 y 2 ) y 1 a_1=(\xi-a_2y_2)y_1 ,回代到 W ( a 1 , a 2 ) W(a_1,a_2) 得到只包含 a 2 a_2 的函数 W ( a 2 ) W(a_2) ,对其求导并令其为0,有
E i = ( j = 1 m a j y j K ( x j , x i ) + b ) y i , i = 1 , 2 η = K 11 2 K 12 + K 22 = ( ϕ ( x 1 ) ϕ ( x 2 ) ) 2 a 2 n e w , u n c = a 2 o l d + y 2 ( E 1 E 2 ) η E_i=(\sum_{j=1}^ma_jy_jK(x_j,x_i)+b)-y_i,i=1,2\\ \eta=K_{11}-2K_{12}+K_{22}=(\phi(x_1)-\phi(x_2))^2\\ a_2^{new,unc}=a_2^{old}+\frac{y_2(E_1-E_2)}{\eta}
我们的目标是求在正方形内的线段上的最优值,令线段的左端点为L,右端点为H,则有 a 1 , a 2 a_1,a_2 的更新值如下
a 2 n e w = { H , a 2 n e w , u n c > 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 < 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} > H \\ a_2^{new,unc} ,L \le a_2^{new,unc} \le H \\ L, a_2^{new,unc} < L \end{cases} \\ a_1^{new}=a_1^{old}+y_1y_2(a_2^{old}-a_2^{new})
  关于 a 1 , a 2 a_1,a_2 变量的选择,SMO采用启发式选择,选择的a应该满足KK条件,并且更新时应该最大限度地它包含三个步骤:

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

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

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

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/85390019