简介
SVM是什么? 先来看看维基百科上对SVM的定义:
支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。
简单点讲,SVM就是一种二类分类模型,他的基本模型是的定义在特征空间上的间隔最大的线性分类器,SVM的学习策略就是间隔最大化。
直观理解
图中有分别属于两类的一些二维数据点和三条直线。如果三条直线分别代表三个分类器的话,请问哪一个分类器比较好?
我们凭直观感受应该觉得答案是H3。首先H1不能把类别分开,这个分类器肯定是不行的;H2可以,但分割线与最近的数据点只有很小的间隔,如果测试数据有一些噪声的话可能就会被H2错误分类(即对噪声敏感、泛化能力弱)。H3以较大间隔将它们分开,这样就能容忍测试数据的一些噪声而正确分类,是一个泛化能力不错的分类器。
对于支持向量机来说,数据点若是 p p p维向量,我们用 p − 1 p−1 p−1维的超平面来分开这些点。但是可能有许多超平面可以把数据分类。最佳超平面的一个合理选择就是以最大间隔把两个类分开的超平面。因此,SVM选择能够使离超平面最近的数据点的到超平面距离最大的超平面。
概括
该优化问题经历了以下转化过程:
① 带 约 束 优 化 问 题 { m a x W , b m a r g i n ( W , b ) = m a x W , b m i n x i y i ( W T x i + b ) ∥ W ∥ , i = 1 , 2 , ⋯ , N s . t . y i ( W T x i + b ) > 0 , i = 1 , 2 , ⋯ , N ② 带 约 束 优 化 问 题 { m i n W , b 1 2 W T W s . t . y i ( W T x i + b ) ≥ 1 , i = 1 , 2 , ⋯ , N ③ 无 约 束 优 化 问 题 { m i n W , b m a x λ L ( W , b , λ ) = 1 2 W T W + ∑ i = 1 N λ i ( 1 − y i ( W T x i + b ) ) s . t . λ i ≥ 0 , i = 1 , 2 , ⋯ , N ④ 无 约 束 优 化 问 题 { m a x λ m i n W , b L ( W , b , λ ) = 1 2 W T W + ∑ i = 1 N λ i ( 1 − y i ( W T x i + b ) ) s . t . λ i ≥ 0 , i = 1 , 2 , ⋯ , N ①\; 带约束优化问题\left\{\begin{matrix} \underset{W,b}{max}\; margin(W,b)=\underset{W,b}{max}\; \underset{x_{i}}{min}\frac{y_{i}(W^{T}x_{i}+b)}{\left \| W\right \|},i=1,2,\cdots ,N\\ s.t.\; y_{i}(W^{T}x_{i}+b)>0,i=1,2,\cdots ,N \end{matrix}\right.\\ ②\; 带约束优化问题\left\{\begin{matrix} \underset{W,b}{min}\;\frac{1}{2}W^{T}W\\ s.t.\; y_{i}(W^{T}x_{i}+b)\geq 1,i=1,2,\cdots ,N \end{matrix}\right.\\ ③\; 无约束优化问题\left\{\begin{matrix} \underset{W,b}{min}\; \underset{\lambda }{max}L(W,b,\lambda )=\frac{1}{2}W^{T}W+\sum_{i=1}^{N}\lambda _{i}(1-y_{i}(W^{T}x_{i}+b))\\ s.t.\; \lambda _{i}\geq 0,i=1,2,\cdots ,N \end{matrix}\right.\\ ④\; 无约束优化问题\left\{\begin{matrix} \underset{\lambda }{max}\; \underset{W,b}{min}\;L(W,b,\lambda )=\frac{1}{2}W^{T}W+\sum_{i=1}^{N}\lambda _{i}(1-y_{i}(W^{T}x_{i}+b))\\ s.t.\; \lambda _{i}\geq 0,i=1,2,\cdots ,N \end{matrix}\right. ①带约束优化问题{W,bmaxmargin(W,b)=W,bmaxximin∥W∥yi(WTxi+b),i=1,2,⋯,Ns.t.yi(WTxi+b)>0,i=1,2,⋯,N②带约束优化问题{W,bmin21WTWs.t.yi(WTxi+b)≥1,i=1,2,⋯,N③无约束优化问题{W,bminλmaxL(W,b,λ)=21WTW+∑i=1Nλi(1−yi(WTxi+b))s.t.λi≥0,i=1,2,⋯,N④无约束优化问题{λmaxW,bminL(W,b,λ)=21WTW+∑i=1Nλi(1−yi(WTxi+b))s.t.λi≥0,i=1,2,⋯,N
由公式(6.3.2),
{ m a x λ m i n W , b L ( W , b , λ ) = 1 2 W T W + ∑ i = 1 N λ i ( 1 − y i ( W T x i + b ) ) s . t . λ i ≥ 0 , i = 1 , 2 , ⋯ , N \left\{\begin{matrix} \underset{\lambda }{max}\; \underset{W,b}{min}\;L(W,b,\lambda )=\frac{1}{2}W^{T}W+\sum_{i=1}^{N}\lambda _{i}(1-y_{i}(W^{T}x_{i}+b))\\ s.t.\; \lambda _{i}\geq 0,i=1,2,\cdots ,N \end{matrix}\right. {λmaxW,bminL(W,b,λ)=21WTW+∑i=1Nλi(1−yi(WTxi+b))s.t.λi≥0,i=1,2,⋯,N
对其进行求解
对 b b b求导
∂ L ∂ b = ∂ ∑ i = 1 N λ i − ∑ i = 1 N λ i y i ( W T x i + b ) ∂ b = ∂ − ∑ i = 1 N λ i y i b ∂ b = − ∑ i = 1 N λ i y i = 0 \frac{\partial L}{\partial b}=\frac{\partial \sum_{i=1}^{N}\lambda _{i}-\sum_{i=1}^{N}\lambda _{i}y_{i}(W^{T}x_{i}+b)}{\partial b}=\frac{\partial -\sum_{i=1}^{N}\lambda _{i}y_{i}b}{\partial b}=-\sum_{i=1}^{N}\lambda _{i}y_{i}=0 ∂b∂L=∂b∂∑i=1Nλi−∑i=1Nλiyi(WTxi+b)=∂b∂−∑i=1Nλiyib=−i=1∑Nλiyi=0
因此得出 ∑ i = 1 N λ i y i = 0 \sum_{i=1}^{N}\lambda _{i}y_{i}=0 ∑i=1Nλiyi=0
求解 W W W
将上一步的结果代入 L ( W , b , λ ) L(W,b,\lambda ) L(W,b,λ)
L ( W , b , λ ) = 1 2 W T W + ∑ i = 1 N λ i − ∑ i = 1 N λ i y i W T x i − ∑ i = 1 N λ i y i b ⏟ = 0 = 1 2 W T W + ∑ i = 1 N λ i − ∑ i = 1 N λ i y i W T x i ∂ L ∂ W = W − ∑ i = 1 N λ i y i x i = 0 L(W,b,\lambda )=\frac{1}{2}W^{T}W+\sum_{i=1}^{N}\lambda _{i}-\sum_{i=1}^{N}\lambda _{i}y_{i}W^{T}x_{i}-\underset{=0}{\underbrace{\sum_{i=1}^{N}\lambda _{i}y_{i}b}} \\ =\frac{1}{2}W^{T}W+\sum_{i=1}^{N}\lambda _{i}-\sum_{i=1}^{N}\lambda _{i}y_{i}W^{T}x_{i} \\ \frac{\partial L}{\partial W}=W-\sum_{i=1}^{N}\lambda _{i}y_{i}x_{i}=0 L(W,b,λ)=21WTW+i=1∑Nλi−i=1∑NλiyiWTxi−=0 i=1∑Nλiyib=21WTW+i=1∑Nλi−i=1∑NλiyiWTxi∂W∂L=W−i=1∑Nλiyixi=0
得出: W ∗ = ∑ i = 1 N λ i y i x i (6.3.3) \color{red}W^{*}=\sum_{i=1}^{N}\lambda _{i}y_{i}x_{i}\tag{6.3.3} W∗=i=1∑Nλiyixi(6.3.3)
这里我们可以看出 W ∗ W^{*} W∗是数据的线性组合。
得出 m i n W , b L ( W , b , λ ) \underset{W,b}{min}\;L(W,b,\lambda ) W,bminL(W,b,λ)
接着将 W ∗ W^{*} W∗的结果代入 L ( W , b , λ ) L(W,b,\lambda ) L(W,b,λ)
m i n W , b L ( W , b , λ ) = 1 2 ( ∑ i = 1 N λ i y i x i ) T ( ∑ j = 1 N λ j y j x j ) + ∑ i = 1 N λ i − ∑ i = 1 N λ i y i ( ∑ j = 1 N λ j y j x j ) T x i = 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j − ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x j T x i + ∑ i = 1 N λ i = 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j − ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j + ∑ i = 1 N λ i = − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j + ∑ i = 1 N λ i \underset{W,b}{min}\;L(W,b,\lambda )=\frac{1}{2}(\sum_{i=1}^{N}\lambda _{i}y_{i}x_{i})^{T}(\sum_{j=1}^{N}\lambda _{j}y_{j}x_{j})+\sum_{i=1}^{N}\lambda _{i}-\sum_{i=1}^{N}\lambda _{i}y_{i}(\sum_{j=1}^{N}\lambda _{j}y_{j}x_{j})^{T}x_{i}\\ =\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\lambda _{i}\lambda _{j}y_{i}y_{j}x_{i}^{T}x_{j}-\sum_{i=1}^{N}\sum_{j=1}^{N}\lambda _{i}\lambda _{j}y_{i}y_{j}{\color{Red}{x_{j}^{T}x_{i}}}+\sum_{i=1}^{N}\lambda _{i} \\ =\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\lambda _{i}\lambda _{j}y_{i}y_{j}x_{i}^{T}x_{j}-\sum_{i=1}^{N}\sum_{j=1}^{N}\lambda _{i}\lambda _{j}y_{i}y_{j}{\color{Red}{x_{i}^{T}x_{j}}}+\sum_{i=1}^{N}\lambda _{i} \\ =-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\lambda _{i}\lambda _{j}y_{i}y_{j}x_{i}^{T}x_{j}+\sum_{i=1}^{N}\lambda _{i} W,bminL(W,b,λ)=21(i=1∑Nλiyixi)T(j=1∑Nλjyjxj)+i=1∑Nλi−i=1∑Nλiyi(j=1∑Nλjyjxj)Txi=21i=1∑Nj=1∑NλiλjyiyjxiTxj−i=1∑Nj=1∑NλiλjyiyjxjTxi+i=1∑Nλi=21i=1∑Nj=1∑NλiλjyiyjxiTxj−i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλi=−21i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλi
因此该优化问题就相当于:
{ max λ − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j + ∑ i = 1 N λ i s . t . λ i ≥ 0 ∑ i = 1 N λ i y i = 0 (6.3.4) \color{red}\begin{cases} \underset{\lambda}{\max} \ -{1\over2}\sum_{i=1}^N\sum_{j=1}^N \lambda_i\lambda_jy_iy_jx_i^Tx_j+\sum_{i=1}^N\lambda_i\\ s.t. \ \ \lambda_i\ge 0 \\ \ \ \ \ \ \ \ \ \sum_{i=1}^N \lambda_iy_i=0 \end{cases}\tag{6.3.4} ⎩⎪⎨⎪⎧λmax −21∑i=1N∑j=1NλiλjyiyjxiTxj+∑i=1Nλis.t. λi≥0 ∑i=1Nλiyi=0(6.3.4)
上一节中使用到了对偶问题,这一节中会涉及到对偶问题中的KKT条件。
由此可知分类决策函数 f ( x ) = s i g n ( W ∗ T x + b ∗ ) f(x)=sign(W^{*T}x+b^*) f(x)=sign(W∗Tx+b∗),超平面为 W ∗ T x + b ∗ \color{red}W^{*T}x+b^* W∗Tx+b∗。
由于只有在支持向量上才有 λ i ≠ 0 \lambda_i \ne0 λi=0,因此可以看出, W ∗ , b ∗ W^*,b^* W∗,b∗的值只和支持向量有关。
其中 I I I为指示函数,若其中内容为真则返回 1 1 1,否则返回 0 0 0。 L o s s Loss Loss函数是不连续的,是跳跃的,其数学性质不好。
其中 C C C为超参数。
上面的式子中,常数 C C C可以看作允许的错误⽔平,同时上式为了进⼀步消除 m a x max max符号,对数据集中的每⼀个观测,对数据集中的每⼀个观测,我们可以认为其⼤部分满⾜约束,但是其中部分违反约束,因此这部分约束变成 y i ( w T x i + b ) ≥ 1 − ξ i y_{i}(w^{T}x_{i}+b)\geq 1-\xi _{i} yi(wTxi+b)≥1−ξi。
软间隔SVM也是使用拉格朗日乘子法进行求解。可以参考看了这篇文章你还不懂SVM你就来打我。
任何算法都有其优缺点,支持向量机也不例外。
支持向量机的优点是:
- 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
- 不仅适用于线性线性问题还适用于非线性问题(用核技巧)。
- 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。
- 理论基础比较完善(例如神经网络就更像一个黑盒子)。
支持向量机的缺点是:
- 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)
- 只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)
SVM很适合做分类任务,但是如果刚开始接触SVM而不知道如何进行合理的参数选择的话可能得不到满意的结果。下面简介运用SVM的基本步骤,或者说调参经验。
主要参考:
Hsu C W, Chang C C, Lin C J. A practical guide to support vector classification[J]. 2003.