支持向量机(SVM)第一章----线性可分

以下参考周老师《机器学习》。

SVM会涉及到硬间隔、软间隔、核函数等概念,别怕,我们一步一步推进,保证可以有一个清晰的认识。

Step 1: 我们从简单的情况入手—>线性可分,即在训练集上一定可以找到一个划分超平面,将两种类别的样本分开。
(1) 问题描述:
将两种类别的样本完全分开的超平面有很多,那么哪一个超平面是最好的?


从上图可以看出,中间加粗的超平面更好,因为它不仅分对了训练样本,还对训练样本有很大的包容性,也就是说 即使训练样本发生了一定扰动,该超平面仍旧可以将它分对。

(2) 划分超平面如何表示?
可以通过如下线性方程组来描述:
w T x + b = 0 ,其中 w = ( w 1 ; w 2 ; . . . ; w d ) d b 是位移量。
x 到平面的距离公式:
d i s t = | w T x + b | | | w | |

(3) 根据(1)中,我们可以看出我们希望 样本中到超平面的最近距离最大化,用数学公式描述如下:
arg max w , b ( min i | w T x i + b | | | w | | )
可以看到,如果找到最优的 w , b ,我们将 w , b 任意缩放 α 后,仍然是最优的,因为分子分母都有 α ,消去了。
通过一定缩放,我们令 min i | w T x i + b | = 1
目标就变成了:
arg max w , b 1 | | w | | , s . t . y i ( w T x i + b ) 1 , i = 1 , 2 , . . . , n
我个人对这里目标函数的得出有点不是很透彻,起码我没有办法一下子跳到那个公式。需要绕一个大弯,我们是想从无数个 w , b 中,找到最小距离最大化的 w , b ,对于一对 w , b ,将它任意放大缩小,这个超平面并没有发生变化,仍是同一个超平面。既然这样,我们就令 min i | w T x i + b | = 1
落在 w T x + b = 1 w T x + b = 1 的样本,便是支持向量。

又可以重写为:
min 1 2 | | w | | 2 (公式1)
s . t . y i ( w T x i + b ) 1 , i = 1 , 2 , . . . , n
上面就是SVM的基本型,也是原始问题。原始问题本身是一个凸二次规划问题,能直接用现成的优化计算包求解,当是我们想追求更高效的方法—–使用拉格朗日乘子法得到原始问题的对偶问题。
(4) 对偶问题
1.用拉格朗日乘子法,首先将不等式约束条件转换为小于,即
1 y i ( w T x i + b ) 0 , i = 1 , 2 , . . . , n
2.对每个不等式引入拉格朗日系数 α 1 , α 2 , . . . , α n , 注意 α i 0
3.拉格朗日函数是: 原始问题(公式1)的对偶问题是
L ( w , b , α ) = 1 2 | | w | | 2 + 1 n α i ( 1 y i ( w T x i + b ) )
s . t . α i 0
L ( w , b , α ) w = 0 , L ( w , b , α ) b = 0 ,
这里写图片描述
并带入 L ( w , b , α ) 中,得到
这里写图片描述

我们就得到了原始问题(公式1)的对偶问题:
max i = 1 n a i 1 2 i = 1 n j = 1 n α i α j y i y j x i T x j (公式2)
s . t . α i 0 , i = 1 , 2 , . . . , n
i n α i y i = 0

上面我们已经得到拉格朗日函数, 对应的KKT条件(对于一般的任意问题而言,KKT条件是使一组解成为最优解的必要条件,当原问题是凸问题的时候,KKT条件也是充分条件):

  • L ( w , b , α ) w = 0 , L ( w , b , α ) b = 0
  • α i 0 , i = 1 , 2 , . . . , n
  • 1 y i ( w T x i + b ) 0 , i = 1 , 2 , . . . , n
  • α i ( 1 y i ( w T x i + b ) ) = 0 , i = 1 , 2 , . . . , n

(5)如何求解上面的对偶问题(公式2)?
对偶问题(公式2),是一个二次规划问题,可使用通用的二次规划算法求解。但是问题的规模正比于训练样本的数目。我们可以用一个著名的高效算法SMO。
SMO(Sequential Minimal Optimization):
我们要求解的是公式2里面的 α

  1. 随机初始化 α 1 , α 2 , . . . α n
  2. 选择两个变量 α i , α j ,固定其他 n 2 个变量。
  3. 根据公式(2),求解并更新 α i , α j

    不断执行2,3步骤,直至收敛。

如何选择 α i , α j 呢?
SMO用的是启发式的方法来选择,先选择违背KKT条件程度最大的变量作为 α i ,然后选择与 α i 距离最大的变量作为 α j

SMO高效的原因,在于固定其他变量后, α i 可以由 α j 表示,因为 i n α i y i = 0 。那么对于公式(2)而言,就是关于 α j 的单变量二次规划问题,约束是 α j 0

通过SMO求解出 α 后,根据 L ( w , b , α ) w = 0 得到的 w = 1 n α i y i x i 便可求出 w

至于 b 如何求呢?
上面提到的KKT条件有:

  • α i 0 , i = 1 , 2 , . . . , n
  • 1 y i ( w T x i + b ) 0 , i = 1 , 2 , . . . , n
  • α i ( 1 y i ( w T x i + b ) ) = 0 , i = 1 , 2 , . . . , n

可以看出 α i = 0 或者 1 y i ( w T x i + b ) = 0 。若 α i > 0 ,那么 1 y i ( w T x i + b ) = 0 ,也就是说该样本是一个支持向量。
我们可以把 α i > 0 对应的样本找出来,其满足 y i ( w T x i + b ) = 1 ,可以求解出b。
通常我们会将所有支持向量求解得到的取平均值作为b。

b = 1 | S | s S ( 1 y s i S α i y i x i T x s )
其中 S = { i | α i > 0 , i = 1 , 2 , . . . , n }

(6)目前,模型参数都已经求完,模型是
f ( x ) = w T x + b = 1 n α i y i x i T x + b
α i = 0 ,则该样本不会在求和公式中出现, α i > 0 ,对应的样本是支持向量。因此可以看出,训练完成后,大部分的样本不需要保留,最终模型仅与支持向量有关。这是SVM十分重要的一个性质:解具有稀疏性。好处是:预测的时候开销小。

猜你喜欢

转载自blog.csdn.net/yqmind/article/details/80339345
今日推荐