一、线性可分情况的支持向量机
1、引例
- 我们希望找到一条直线,来分开圆圈和叉。支持向量机 Support Vector Machine, SVM 是一种能够很好处理中等大小数据集的广义二元线性分类器。
- SVM属于监督学习 Supervised Learning 的一种,通过对带有标签 Label 的数据特征的学习,画出一条线、平面或者超平面 Hyper Plane 来分开不同的样本,即将每个样本分到不同的类,这样在给出一个新样本后,我们通过这个新样本的特征就可以判断它属于哪一类。
- SVM既可以用来做分类 Classification ,也可以用来做回归 Regression 。
- 如图,我们可以找到无数条线把这两种线性可分 Linearly Separable 的样本分开,但是我们希望找到一个最好的线,它可以容忍比较大的测量误差,提升整个模型的鲁棒性 Robustness。
- 如何确定一条线的优劣程度需要有客观的评判标准,我们引入了几个概念。当你找到一条直线后,上下平行移动这条线,直到它擦过一个或者几个向量,我们将向上和向下两条直线的距离 d d d 定义为这条直线的性能指标——间距 Margin,上下擦过的向量叫做支持向量 Support Vectors,那么SVM之所以好的原因就在于,它试图在找一条能够最大化间距的直线把样本分开,所以你也常常会听到人们说SVM是一个大间隔分类器 Large Margin Classifier。
- 每确定一个间距 d d d,我们都会找到无数条满足这个间距的直线,我们选择与两边距离为 d 2 \frac d2 2d 的直线作为最后的边界。
- 细致观察后可以发现,支持向量机最后做出来的线只会与支持向量有关,与其他向量没有太大关系,且训练结束后支持向量占所有向量的比重不应该很大,如果占比过大,大概率是没有训练好,或者SVM无法将其线性分开。
2、定义
- 训练数据及标签: T = { ( X 1 , y 1 ) , ( X 2 , y 2 ) , … , ( X n , y n ) } T=\left\{\left(X_1,y_1\right),\left(X_2,y_2\right),\dots,\left(X_n,y_n\right)\right\} T={
(X1,y1),(X2,y2),…,(Xn,yn)}其中 X i X_i Xi 是向量,向量的维数即为特征的维数,
标签 y i y_i yi 的取值为离散值,为了推导方便,我们令其在这个二元分类问题上的取值为 + 1 +1 +1 和 − 1 -1 −1 - 由参数 W W W 和 b b b 确定的超平面: W T ⋅ X + b = 0 W^T·X+b=0 WT⋅X+b=0 这里的 W W W 是与 X X X 同维度的参数向量,
b b b 是一个常数 - 训练的过程就是确定参数 W W W 和 b b b 的过程,参数确定,平面找到,学习完成。
- 训练集线性可分的数学表达:
训 练 样 本 T = { ( X n , y n ) } i = 1 ∼ N 训练样本 T=\left\{\left(X_n,y_n\right)\right\} i=1 \sim N 训练样本T={ (Xn,yn)}i=1∼N ∃ ( W , b ) 使 得 对 于 ∀ i = 1 ∼ N 都 有 : \exists\left(W,b\right) 使得对于 \forall i=1 \sim N都有: ∃(W,b)使得对于∀i=1∼N都有: a . 若 y i = + 1 , 则 W T ⋅ X + b ≥ 0 a. 若 y_i =+1,则W^T·X+b\geq0 a.若yi=+1,则WT⋅X+b≥0 b . 若 y i = − 1 , 则 W T ⋅ X + b ≤ 0 b. 若 y_i =-1,则W^T·X+b\leq0 b.若yi=−1,则WT⋅X+b≤0当 y i y_i yi 只取 + 1 +1 +1 和 − 1 -1 −1 时,可以将其简化为 y i ( W T ⋅ X + b ) ≥ 0 y_i\left(W^T·X+b\right)\geq0 yi(WT⋅X+b)≥0
3、优化问题
寻找 W W W 和 b b b,使得
最小化 Minimize: 1 2 ∥ W ∥ 2 \frac12\left\|W\right\|^2 21∥W∥2
限制条件 Subject to: y i ( W T ⋅ X i + b ) ≥ 1 y_i\left(W^T·X_i+b\right)\geq1 yi(WT⋅Xi+b)≥1 i = 1 ∼ N i=1 \sim N i=1∼N
- 事实1: W T ⋅ X + b ≥ 0 W^T·X+b\geq0 WT⋅X+b≥0 和 a W T ⋅ X + a b ≥ 0 aW^T·X+ab\geq0 aWT⋅X+ab≥0 是同一个平面( a ∈ R a\in\mathbb{R} a∈R)
- 事实2:向量 X 0 X_0 X0 到超平面 W T ⋅ X + b ≥ 0 W^T·X+b\geq0 WT⋅X+b≥0 的距离为: d = W T ⋅ X 0 + b ∣ ∣ W ∣ ∣ d=\frac{W^T·X_0+b}{\left|\left|W\right|\right|} d=∣∣W∣∣WT⋅X0+b
①综合两个事实,我们可以通过实数 a a a 去缩放超平面方程,使得: ( W , b ) → ( a W , a b ) \left(W,b\right)\rightarrow\left(aW,ab\right) (W,b)→(aW,ab)②最终使得缩放后的 W W W 和 b b b 能够满足在所有的支持向量上: ∣ W T ⋅ X 0 + b ∣ = 1 \left|W^T\cdot X_0+b\right|=1 ∣∣WT⋅X0+b∣∣=1③将其带入事实2的公式中,可以得到支持向量与超平面的距离为 1 ∥ W ∥ \frac1{\left\|W\right\|} ∥W∥1,最大化距离就转化为最小化 ∥ W ∥ \left\|W\right\| ∥W∥
- 对比上面的最小化内容,其中的 1 2 \frac12 21 仅仅是为了求导方便。
- 限制条件的这个 1 1 1 其实可以是任意的常数,但是我们都可以通过缩放一个隐形的参数 a a a 来将其调节为 1 1 1 ,之所以将这个作为了限制条件就是为了说对于每一次修改后的 W W W,和对于每一个需要满足等式为 1 1 1 的支持向量,我们都可以找到一个对应的 a a a 让其满足条件,所以我们只需不断地优化 W W W 即可,无需担心每次优化后因为 W W W 的改变而导致优化目标的改变,限制条件保证了参数 a a a 在每一次的优化中其实都是在不停地改变自己从而平衡等式的值为 1 1 1,这个过程随时发生,虽然我们不需要求出 a a a 的值,但正是因为 a a a 有这个能力来变化自身,适应每次优化后的新参数值,才从而确保优化目标始终正确。
- 对于限制条件, y i y_i yi 仅仅是一个常数,取值为 + 1 +1 +1 和 − 1 -1 −1,因而可以忽略。对于除了支持向量之外的其他向量,将会有 ∣ W T ⋅ X 0 + b ∣ > 1 \left|W^T\cdot X_0+b\right|>1 ∣∣WT⋅X0+b∣∣>1,即距离更大,所以最后得出 y i ( W T ⋅ X + b ) ≥ 1 y_i\left(W^T·X+b\right)\geq1 yi(WT⋅X+b)≥1 的表达式。
4、得到凸优化中的二次规划问题
- 之所以SVM要这么做,转化我们的优化问题为这样的形式,实际上是因为它在尝试将其转化为凸优化中二次规划问题:
①目标函数为二次项 1 2 ∥ W ∥ 2 \frac12\left\|W\right\|^2 21∥W∥2
②限制条件为一次项 y i ( W T ⋅ X i + b ) ≥ 1 y_i\left(W^T·X_i+b\right)\geq1 yi(WT⋅Xi+b)≥1 i = 1 ∼ N i=1 \sim N i=1∼N - 在上述的条件下,整个问题会变成一个凸优化问题,即要么无解,要么只有一个全局最优解,而不会出现局部极值的问题。
- 使用梯度下降等方法即可进行迭代,最终求解出参数 W W W 和 b b b
二、线性不可分的处理方法
1、引例
- 此时的SVM仍然试图用一个直线来分开样本,将会出现部分样本无法被正确划分,原来的限制条件也将不能满足。因而我们需要改变限制条件,从而使得能够满足现在的情况。
最小化 Minimize: 1 2 ∥ W ∥ 2 + C ∑ i = 1 N ξ i \frac12\left\|W\right\|^2+C{\textstyle\sum_{i=1}^N}\xi_i 21∥W∥2+C∑i=1Nξi ( ξ i \xi_i ξi为松弛变量)
限制条件 Subject to:
a . y i ( W T ⋅ X i + b ) ≥ 1 − ξ i a.y_i\left(W^T·X_i+b\right)\geq1-\xi_i a.yi(WT⋅Xi+b)≥1−ξi i = 1 ∼ N i=1 \sim N i=1∼N
b . ξ i ≥ 0 b.\xi_i\geq0 b.ξi≥0 i = 1 ∼ N i=1 \sim N i=1∼N
-
我们引入了 ξ i \xi_i ξi 这个松弛变量,它的存在使得限制条件变得不那么严格了,尤其是当 ξ i \xi_i ξi 非常大的时候,限制条件 a a a 式子会很容易成立,这是因为被正确分类的依然可以保证和线性可分一样的条件,满足其 ≥ 1 \geq1 ≥1,但是对于那些被错误分配到另外一侧的,它的取值不过是加上了负号而已,可能是 − 10 -10 −10,可能是 − 100 -100 −100,但是我们也是能够找到最小的那个值,并且把 ξ i \xi_i ξi 设定得比那个值的绝对值更大,从而使得所有样本都成立。然而此时优化问题会变得非常发散,即可以想象对于一个线性不可分的问题,我们尝试使得所有样本都满足这个限制条件,最极限的时候即在无穷远处画线,所有样本归为一类,我们也能够满足条件。
-
因而我们在最小化目标的后面加上了这个正则项 C ∑ i = 1 N ξ i C{\textstyle\sum_{i=1}^N}\xi_i C∑i=1Nξi,通过参数 C C C 来控制两项的权重,最小化 1 2 ∥ W ∥ 2 \frac12\left\|W\right\|^2 21∥W∥2 的同时限制 ξ i \xi_i ξi 的大小。
-
在优化问题中, C C C 属于常数, W W W, b b b , ξ i \xi_i ξi( i = 1 ∼ N i=1 \sim N i=1∼N)为待求解的变量。
-
修改后的优化问题对于线性不可分样本都能找到最优解,即它仍然是凸优化中的二次规划问题,保证了局部极值就是全局最小值。
-
当整个样本出现更加严重的非线性情况时:
-
对于这些非线性情况,可以看到如果直接用直线进行拟合边界,最终效果会非常差。绝大多数算法会进而画出更加复杂的线,如椭圆,甚至更加不规则的线去拟合边界。而SVM的精髓在于它选择升维处理,对样本中所有点定义映射关系,将其投射到高维空间中,并在高维空间中寻找超平面分离样本,在低维空间线性不可分的数据集在高维空间中会有更大的几率被线性分开,当映射到无限维时,将样本线性分开的概率将为 1 1 1,其实化为简单的理解,如果我们对两个事物的更多特征有了了解,我们就更容易把他们分开,样本的维数就是样本的特征数。
2、核函数来解决无限维的问题
- 当我们将 X X X 通过 φ ( x ) \varphi\left(x\right) φ(x) 的映射关系映射到更高维度时,我们需要替换限制条件中的 X i X_i Xi 为 φ ( X i ) \varphi\left(X_i\right) φ(Xi)
最小化 Minimize: 1 2 ∥ W ∥ 2 + C ∑ i = 1 N ξ i \frac12\left\|W\right\|^2+C{\textstyle\sum_{i=1}^N}\xi_i 21∥W∥2+C∑i=1Nξi ( ξ i \xi_i ξi为松弛变量)
限制条件 Subject to:
a . y i ( W T ⋅ φ ( X i ) + b ) ≥ 1 − ξ i a.y_i\left(W^T·\varphi\left(X_i\right)+b\right)\geq1-\xi_i a.yi