机器学习算法——SVM(支持向量机)

1. SVM简介

逻辑回归函数的不足:泛化能力不够强。通过最小化损失函数找到一个决策边界,通过决策边界来进行分类。没有考虑到位置数据的情况。

SVM算法也是找到决策边界, 但是SVM让这条决策边界离两边的数据尽可能的远(即SVM要最大化margin),这样不仅对数据进行了一个很好的划分,而且还考虑了未来的泛化能力。

SVM是一个二元分类算法,线性分类非线性分类都支持。经过演进,现在也可以支持多元分类,同时经过扩展,也能应用于回归问题。

2. SVM的一些概念

2.1 函数间隔与几何间隔

超平面的函数表达式为 w T x + b = 0 w^Tx+b=0 时:
函数间隔: d = y ( w T x + b ) d^{'}=y(w^Tx+b)
几何间隔: d = y ( w T x + b ) w = d w d=\frac{y(w^Tx+b)}{||w||} =\frac{d^{'}}{||w||}

几何间隔才是点到超平面的真正距离,SVM模型里用到的距离就是几何距离。

2.2 支持向量

两个类别的数据点都尽可能的远实际上是这两个类别离决策边界最近的这些点离决策边界也尽肯能的远。其中,最近的这些点被称为支持向量点

支持向量到超平面的距离为 1 w \frac{1}{||w||} 两个支持向量之间的距离为 2 w \frac{2}{||w||}

3. SVM模型目标函数与优化

3.1 SVM模型目标函数的推导(线性可分)

对于二维平面上的数据
在这里插入图片描述
最大化margin 最大化d
在二维平面d怎么求?(点到直线的距离公式)
( x , y ) (x,y) A x + B y + C = 0 Ax+By+C=0 的距离用以下公式表示
d = A x + B y + C A 2 + B 2 d=\frac{|Ax+By+C|}{\sqrt{A^2+B^2}}
拓展到n维空间有: θ T x b = 0 \theta^Tx_b=0 w T x + b = 0 w^Tx+b=0

  • θ T \theta^T 里有n+1个元素, θ 1 , θ n \theta_1,\cdots \theta_n 对应 x 1 , x n x_1,\cdots x_n ,还有一个 θ 0 \theta_0 为截距
  • x b x_b 里有n+1个元素, x 1 , x n x_1,\cdots x_n ,其中, x 0 = 1 x_0=1
  • w T w^T 里有n个元素, w 1 , w n w_1,\cdots w_n 对应 x 1 , x n x_1,\cdots x_n
  • b为截距

在n维空间 d怎么求?
d = w T x + b w d=\frac{|w^Tx+b|}{||w||}
w = w 1 2 + w 2 2 + + w n 2 ||w|| = \sqrt{w_1^2+w_2^2 +\cdots + w_n^2}

{ w T x i + b w d y i = 1 w T x i + b w d y i = 1       { w d T x i + b d 1 y i = 1 w d T x i + b d 1 y i = 1 \begin{cases} \frac{w^Tx^i+b }{||w||}\geqslant d & \forall y^i=1 \\ \frac{w^Tx^i+b}{||w||}\leqslant -d & \forall y^i=-1 \\ \end{cases} \implies \begin{cases} w_d^T x^i + b_d\geqslant 1 & \forall y^i=1 \\ w_d^T x^i+ b_d \leqslant -1 & \forall y^i=-1 \\ \end{cases}
其中 { w d T = w T w d b d = b w d \begin{cases} w_d^T = \frac{w^T}{||w||d}\\ b_d = \frac{b}{||w||d} \\ \end{cases}
对于决策边界的直线方程: w T x + b = 0       w d T x + b d = 0 w^Tx+b=0\implies w_d^Tx+b_d=0
重命名!!! 令 { w d T = w T b d = b       { w T x i + b 1 y i = 1 w T x i + b 1 y i = 1 \begin{cases} w_d^T = w^T\\ b_d = b \\ \end{cases}\implies \begin{cases} w^T x^i + b\geqslant 1 & \forall y^i=1 \\ w^T x^i+ b \leqslant -1 & \forall y^i=-1 \\ \end{cases}
可以将其合并 y i ( w T x i + b ) 1 y^i( w^T x^i + b)\geqslant 1
对于任意支撑向量x,求最大距离d,实际上就是求
m a x w T x + b w x       m a x 1 w       m i n w max\frac{|w^Tx+b|}{||w||x} \implies max \frac {1}{||w||} \implies min||w||
但是通常所求的目标函数是: m i n 1 2 w 2 min \frac{1}{2}||w||^2
限定条件是: s . t y i ( w T x i + b ) 1       1 y i ( w T x i + b ) 0 s.t \qquad y^i( w^T x^i + b)\geqslant 1 \implies 1-y^i( w^T x^i + b)\leqslant 0

3.2 目标函数的优化

我们可以通过拉格朗日乘子法将有约束条件的目标函数转化为无约束的优化函数,优化函数转化为:
L ( b , w , α ) = 1 2 w T w + i = 1 m α i [ 1 y i ( w T x i i + b ) ] α i 0 L(b,w,\alpha) = \frac {1}{2}w^Tw+\sum _{i=1}^m\alpha^i[1-y^i(w^Tx^ii+b)]\qquad \alpha_i \geqslant 0 【这一步具体是怎么转化的???】       \implies 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
最终优化后的目标函数变为:

引入拉格朗日乘子,目标函数变为: m i n w , b m a x α i 0 L ( b , w , α ) \underbrace{min}_{w,b}\underbrace{max}_{\alpha_i\geqslant0}L(b,w,\alpha)
由于这个目标函数满足KKT条件,因此,可以通过拉格朗日对偶将我们的优化问题转化为等价的对偶问题。
KKT条件:
{ y i ( w T x i + b ) 1 α i 0 α i ( 1 y i ( w T x i + b ) ) = 0 α i y i = 0 , w = α i y i x i \begin{cases} y_i(w^Tx^i+b) \geqslant1\\ \alpha_i\geqslant0\\ \alpha_i(1-y^i(w^Tx^i+b))=0\\ \sum \alpha^iy^i=0,w=\sum\alpha^iy^ix^i \end{cases}

m i n w , b m a x α i 0 L ( b , w , α )       m a x α i 0 m i n w , b L ( b , w , α ) \underbrace{min}_{w,b}\underbrace{max}_{\alpha^i\geqslant0}L(b,w,\alpha) \implies \underbrace{max}_{\alpha^i\geqslant0}\underbrace{min}_{w,b}L(b,w,\alpha)
可以先求优化函数对于w和b的极小值。接着再求拉格朗日乘子α的极大值。
( 1 ) w b (1)对w和b分别求偏导数
(1) L w = 0       w = i = 1 m α i y i x i \tag1\frac {\partial L}{\partial w}=0 \implies w=\sum_{i=1}^{m}\alpha^iy^ix^i

(2) L b = 0       i = 1 m α i y i = 0 \tag2\frac {\partial L}{\partial b}=0 \implies \sum_{i=1}^{m}\alpha^iy^i = 0
( 2 ) ( 1 ) L ( b , w , α ) (2)将(1)式带入L(b,w,\alpha)
Ψ ( α ) = m i n w , b L ( b , w , α ) \varPsi(\alpha) = \underbrace{min}_{w,b}L(b,w,\alpha)
Ψ ( α ) = 1 2 w T w + i = 1 m α i [ 1 y i ( w T x i + b ) ] = 1 2 w T w + i = 1 m α i i = 1 m α i y i w T x i i = 1 m α i y i b = 1 2 w T i = 1 m α i y i x i w T i = 1 m α i y i x i + i = 1 m α i i = 1 m α i y i b = 1 2 w T i = 1 m α i y i x i + i = 1 m α i i = 1 m α i y i b = 1 2 w T i = 1 m α i y i x i + i = 1 m α i b i = 1 m α i y i = 1 2 ( i = 1 m α i y i x i ) T ( i = 1 m α i y i x i ) + i = 1 m α i b i = 1 m α i y i = 1 2 i = 1 m α i y i ( x i ) T i = 1 m α i y i x i + i = 1 m α i b i = 1 m α i y i       i = 1 m α i y i = 0 = 1 2 i = 1 m α i y i ( x i ) T i = 1 m α i y i x i + i = 1 m α i = i = 1 m α i 1 2 i = 1 m j = 1 m α i α j y i y j ( x i ) T x j \begin{aligned} &\varPsi(\alpha) =\frac {1}{2}w^Tw+\sum _{i=1}^m\alpha^i[1-y^i(w^Tx^i+b)] \\ & =\frac {1}{2}w^Tw+\sum _{i=1}^m\alpha^i - \sum _{i=1}^m\alpha^iy^iw^Tx^i-\sum _{i=1}^m\alpha^iy^ib\\ &=\frac {1}{2}w^T\sum _{i=1}^m\alpha^iy^ix^i-w^T\sum _{i=1}^m\alpha^iy^ix^i+\sum _{i=1}^m\alpha^i -\sum _{i=1}^m\alpha^iy^ib\\ & = -\frac {1}{2}w^T\sum _{i=1}^m\alpha^iy^ix^i+\sum _{i=1}^m\alpha^i -\sum _{i=1}^m\alpha^iy^ib\\ &=-\frac {1}{2}w^T\sum _{i=1}^m\alpha^iy^ix^i+\sum _{i=1}^m\alpha^i -b\sum _{i=1}^m\alpha^iy^i\\ &=-\frac {1}{2}(\sum_{i=1}^{m}\alpha^iy^ix^i)^T(\sum _{i=1}^m\alpha^iy^ix^i)+\sum _{i=1}^m\alpha^i -b\sum _{i=1}^m\alpha^iy^i\\ &=-\frac {1}{2}\sum_{i=1}^{m}\alpha^iy^i(x^i)^T\sum _{i=1}^m\alpha^iy^ix^i+\sum _{i=1}^m\alpha^i -b\sum _{i=1}^m\alpha^iy^i\implies其中 \sum_{i=1}^{m}\alpha^iy^i = 0\\ &= -\frac {1}{2}\sum_{i=1}^{m}\alpha^iy^i(x^i)^T\sum _{i=1}^m\alpha^iy^ix^i+\sum _{i=1}^m\alpha^i \\ &=\sum _{i=1}^m\alpha^i-\frac {1}{2}\sum_{i=1 }^{m}\sum_{j=1}^{m}\alpha^i\alpha^jy^iy^j(x^i)^Tx^j \end{aligned}

求出 L ( a , w , α ) L(a,w,\alpha) 的极小值 Ψ ( α ) \varPsi(\alpha) 之后 , Ψ ( α ) \varPsi(\alpha) 中只有 α \alpha 为未知参数,只要能够极大化 Ψ ( α ) \varPsi(\alpha) ,就可以求出 α i       w , b \alpha_i\implies w,b 【why???】
m a x Ψ ( α ) = m a x i = 1 m α i 1 2 i = 1 m j = 1 m α i α j y i y j ( x i ) T x j = m i n 1 2 i = 1 m j = 1 m α i α j y i y j ( x i ) T x j i = 1 m α i \begin{aligned} &max \varPsi(\alpha) \\ &= max\sum _{i=1}^m\alpha^i-\frac {1}{2}\sum_{i=1 }^{m}\sum_{j=1}^{m}\alpha^i\alpha^jy^iy^j(x^i)^Tx^j \\ &=min \frac {1}{2}\sum_{i=1 }^{m}\sum_{j=1}^{m}\alpha^i\alpha^jy^iy^j(x^i)^Tx^j-\sum _{i=1}^m\alpha^i \end{aligned}

限定条件:
s . t i = 1 m α i y i = 0 a i 0 i s.t \qquad \sum _{i=1}^m\alpha^i y^i=0 \qquad a^i \geqslant0 \qquad i为样本号

怎么求极小值 Ψ ( α ) \varPsi(\alpha) ???       S M O \implies SMO算法

3.3 SVM软间隔(线性不可分)

对于数据集的分布通常有线性可分和线性不可分两种情况,下面是线性不可分的情形。
在这里插入图片描述
下面一种是线性可分的,但是由于有一个蓝色的异常点,导致我们学习到的超平面是下图中的粗虚线所示,这样会严重影响我们的分类模型预测效果。
在这里插入图片描述

以上两种情形严重影响了模型的泛化能力,因此,我们引入了软间隔最大化的方法来解决。

3.3 Soft Margin SVM(SVM的软间隔) 最大化

软间隔是相对于硬间隔来说的,目标函数的推导和优化的方法就是属于硬间隔最大化。
如何实现软间隔?使用松弛变量!!!

在训练集得每个样本引入一个松弛变量 ζ i 0 \zeta_i\geqslant 0 ,使得 y i ( w T x i + b ) + ζ i 1 y^i( w^T x^i + b)+\zeta_i\geqslant 1
在这里插入图片描述
对比硬间隔最大化,可以看到我们对样本到超平面的函数距离的要求放松了,允许有一些点在直线与虚线之间,之前是一定要大于等于1,现在只需要加上一个大于等于0的松弛变量能大于等于1就可以了。当然,松弛变量不能白加,这是有成本的,每一个松弛变量ξi, 对应了一个代价 ζ i \zeta_i ,最终,最小化的目标函数为: m i n [ 1 2 w 2 + C i = 1 m ζ i ] min[ \frac {1}{2}||w||^2+C\sum_{i=1}^{m} \zeta_i ]

s . t . y i ( w T x i + b ) 1 ζ i s.t. \qquad y^i( w^T x^i + b)\geqslant 1 - \zeta_i
C > 0 C>0 惩罚参数,可以理解为我们一般回归和分类问题正则化时候的参数。 C C 越大,对误分类的惩罚越大, C C 越小,对误分类的惩罚越小。 C C 是协调两者关系的正则化惩罚系数。在实际应用中,需要调参来选择。

3.4 SVM软间隔最大化目标函数的优化

SVM软间隔最大化目标函数的优化和线性可分SVM的优化方式类似:

( 1 ) : (1)我们首先将软间隔最大化的约束问题用拉格朗日函数转化为无约束问题如下:
L ( b , w , α , ζ , μ ) = 1 2 w T w + C i = 1 m ζ i + i = 1 m α i [ 1 y i ( w T x i i + b ) + ζ i ] i = 1 m μ i ζ i α i 0 L(b,w,\alpha ,\zeta,\mu) = \frac {1}{2}w^Tw+C\sum_{i=1}^m\zeta_i+\sum _{i=1}^m\alpha^i[1-y^i(w^Tx^ii+b)+\zeta_i]-\sum_{i=1}^m\mu_i\zeta_i\qquad \alpha_i \geqslant 0
其中 μ i 0 , α i 0 \mu_i\geqslant0,\alpha_i\geqslant0 均为拉格朗日系数!!!
要优化的目标函数是:(优化目标函数也满足KKT条件,因此,可以通过拉格朗日对于、偶将优化问题转化为等价的对偶问题)
m i n w , b , ζ i m a x α i 0 , μ i 0 L ( b , w , α , ζ , μ )       m a x α i 0 , μ i 0 m i n w , b , ζ i L ( b , w , α , ζ , μ ) \underbrace{min}_{w,b,\zeta^i}\underbrace{max}_{\alpha^i\geqslant0,\mu^i\geqslant0}L(b,w,\alpha,\zeta,\mu) \implies \underbrace{max}_{\alpha^i\geqslant0,\mu^i\geqslant0}\underbrace{min}_{w,b,\zeta^i}L(b,w,\alpha,\zeta,\mu)

先求优化函数对于 w , b , ζ w,b,\zeta 的极小值, 接着再求拉格朗日乘子 α α μ μ 的极大值。

优化函数对于w,b,ξ的极小值,求偏导:

(1) L w = 0       w = i = 1 m α i y i x i \tag1\frac {\partial L}{\partial w}=0 \implies w=\sum_{i=1}^{m}\alpha^iy^ix^i

(2) L b = 0       i = 1 m α i y i = 0 \tag2\frac {\partial L}{\partial b}=0 \implies \sum_{i=1}^{m}\alpha^iy^i = 0

(3) L ζ = 0       C α i μ i = 0 \tag3\frac{\partial L}{\partial \zeta} = 0 \implies C-\alpha^i-\mu^i=0
消去 w w b b
L ( w , b , ζ , α , μ ) = i = 1 m α i 1 2 i = 1 , j = 1 m α i α j y i y j ( x i ) T x j L(w,b,\zeta,\alpha,\mu) = \sum^m_{i=1}\alpha^i- \frac{1}{2}\sum^m_{i=1,j=1}\alpha^i\alpha^jy^iy^j(x^i)^Tx^j
现在目标函数的表达形式:
m a x α i = 1 m α i 1 2 i = 1 , j = 1 m α i α j y i y j ( x i ) T x j       m i n α 1 2 i = 1 , j = 1 m α i α j y i y j ( x i ) T x j i = 1 m α i \underbrace{max}_{\alpha}\sum^m_{i=1}\alpha^i- \frac{1}{2}\sum^m_{i=1,j=1}\alpha^i\alpha^jy^iy^j(x^i)^Tx^j \implies\underbrace{min}_{\alpha} \frac{1}{2}\sum^m_{i=1,j=1}\alpha^i\alpha^jy^iy^j(x^i)^Tx^j-\sum^m_{i=1}\alpha^i

s . t i = 1 m α i y i = 0 s.t \qquad \sum^m_{i = 1}\alpha^iy^i = 0

0 α i C 0\leqslant \alpha^i \leqslant C
依然通过SMO算法来求上式极小化时对应的 α α 向量然后求出 w w b b

3.5 软间隔最大化时的支持向量

软间隔中,对于每一个样本 ( x i , y i ) (x^i,y^i) 都引入了一个松弛变量 ζ i \zeta_i 第i个点到对应类别支持向量的距离为 ζ i 2 w \frac{\zeta_i}{2||w||} ,根据软间隔最大化时KKY条件中的对偶互补条件 ( α i ) ( y i ( w T x i + b ) 1 + ζ i ) = 0 (\alpha^i)^*(y^i(w^Tx^i+b)-1+\zeta_i) = 0

  • 如果 α = 0 \alpha = 0 ,那么 y i ( w T x i + b ) 1 0 y^i(w^Tx^i+b)-1 \geqslant 0 ,即样本已经被正确分类。
  • 如果 0 < α < C 0<\alpha<C ,那么 ζ i = 0 \zeta_i = 0 , y i ( w T x i + b ) 1 = 0 y^i(w^Tx^i+b)-1=0 ,即样本在间隔边界上面。
  • 如果 α = C \alpha = C ,说明这个点是一个异常点,此时要检查 ζ i \zeta_i

3.6 最终超平面

找出所有的支持向量 ( x s , y s ) (x^s,y^s) , ( 0 < α s < C ) (0<\alpha^s<C)
通过 y s ( i = 1 S α i y i ( x i ) T x s + b ) = 1 y^s(\sum^S_{i=1}\alpha^iy^i(x^i)^Tx^s+b) =1 ,计算出每个支持向量 ( x s , y s ) (x^s,y^s) 对应的 ( b s ) = y s i = 1 S α i y i ( x i ) T x s (b^s)^* = y^s-\sum^S_{i=1}\alpha^iy^i(x^i)^Tx^s ,所有的 ( b s ) (b^s)^* 对应的平均值即为最终的 ( b s ) = 1 S i = 1 S ( b s ) (b^s)^* = \frac{1}{S}\sum^{S}_{i=1} (b^s)^*
这样最终的分类超平面为:
w x + b = 0 w^*x+b^*=0
最终的分类决策函数为:
f ( x ) = s i g n ( w x + b ) f(x)=sign(w^*x+b^*)

猜你喜欢

转载自blog.csdn.net/Heitao5200/article/details/83509522