由线性分类器引出SVM
首先对于我们的数据集合假定为是线性可分的,也就是说存在那么一条直线(或者超平面)可以将我们的数据集按照类别的不同分开。如下图所示
从上图我们可以知道这条黑色的线(在多维空间是一个超平面)可以将不同类别的点分开来。
但是我们知道,这样的超平面很大程度上不是只存在一个,而是很多个, 我们使用什么标准来从中选择一个最优的超平面呢?那就是分类平面到两侧的距离越远代表着分类的效果越好。简单解释一下原因是距离越远代表着我们的容错率越高。比如我们的训练集合中的数据和测试集合中的数据特性有着些许差别,超平面到点的距离越近,代表着这个差别对分类效果的影响越大,所以只有尽可能的扩大这个距离,才能让我们的分类超平面的效果在测试集合上越好。
这就引出来了SVM,换句话来讲,SVM的学习策略就是使得间隔最大化,同时将求解超平面的问题转化为一个凸二次规划问题的求解。
SVM的二次规划求解超平面问题(原始模式)
对于训练数据集来讲:\[D=\{x_{n},y_{n}\}^{N}_{n=1},x_{n}\in R^{d},y_{n}\in\{-1,+1\}\]
超平面方程的表达式为:\[w^{T}x+b=0\].
我们可以令分类函数\(f(x)=w^{T}x+b\)
显然如果\(f(x)=0\),那么点是位于超平面上的。我们不妨要求对于所有\(f(x)<0的点,y=-1\),对所有\(f(x)>0的点,y=+1\)
正如上面所讲的,我们需要找到一个最优平面,我们使用距离的最大化来确定最优平面的\(w和b\).
我们知道从\(x_{n}\)这个点到到超平面的距离是:\[d=\frac{|w^{T}x_{n}+b|}{||w||}\].
超平面两侧点到面的距离和为:\[\min\limits_{x_{n},y_{n}=-1} d+\min\limits_{x_{n},y_{n}=+1} d\]
\[\Rightarrow \min\limits_{x_{n},y_{n}=-1} \frac{|w^{T}x_{n}+b|}{||w||} + \min\limits_{x_{n},y_{n}=+1} \frac{|w^{T}x_{n}+b|}{||w||}\]
\[\Rightarrow \frac{1}{||w||}( \min\limits_{x_{n},y_{n}=-1} |w^{T}x_{n}+b| + \min\limits_{x_{n},y_{n}=+1} |w^{T}x_{n}+b|)\]
\[\Rightarrow \frac{2}{||w||}\]
现在我们得到目标函数:\[max \frac{1}{||w||} \space\ s.t., y_{i}(w^{T}x_{i}+b)\geq1,i=1,2...,n\]
我们将求\(\frac{1}{||w||}\)的最大值问题转化为求\(\frac{||w||^{2}}{2}\)的最小值的问题,即\[min \frac{||w||^{2}}{2} \space\ s.t., y_{i}(w^{T}x_{i}+b)\geq1,i=1,2...,n\].
所以现在问题就转化成了一个凸优化的问题(目标函数是二次函数,约束条件是线性的),对于这种问题我们可以使用任何一种凸优化的运算工具得到结果。
上一种情况是在线性可分的情况下进行的SVM,如果是非线性可分的情况,我们需要做的就是讲\(x\)映射到高维空间,即\(z_{n}=\phi(x_{n})\),然后将\(\phi(n)\)带入到二次规划求解的问题中就可以。
SVM对偶模式求解最优超平面
除了用解决QP问题的常规方法之外,我们还可以通过求解对偶问题得到最优解,这就是线性可分条件下的支持向量机的对偶运算。这种运算的优先在于:一更加的简洁,二自然的引入核函数,推广到非线性分类的问题。
在这个过程中,我们使用的是Lagrange duality 变换到对偶变量的优化问题,通过给每一个约束条件加上一个Lagrange Multiplier,也就是引入拉格朗日乘子\(\alpha\)
\[\mathcal{L}(w,b,\alpha)=\frac{||w||^{2}}{2}-\sum_{i=1}^{n}\alpha_{i}(y_{i}(w^{T}x_{i}+b)-1)\]
\[SVM \equiv \min\limits_{b,w} (\max\limits_{\alpha_{n}\geq0}\mathcal{L}(w,b,\alpha))\]
随后我们将min和max对换位置:
\[SVM \equiv \max\limits_{b,w} (\min\limits_{\alpha_{n}\geq0}\mathcal{L}(w,b,\alpha))\]
对偶问题的3个步骤:
(1)首先固定\(\alpha\), 分别对w,b 求偏导数
\(\frac{\partial \mathcal{L}}{\partial w} =0 \Rightarrow w= \sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}\)
\(\frac{\partial \mathcal{L}}{\partial b} =0 \Rightarrow \sum_{i=1}^{n}\alpha_{i}y_{i }=0\)
将这两个结果带回到$ \mathcal{L}(w,b,\alpha)$得到如下结果:
\(-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^{T}x_{j}+\sum_{i=1}^{n}\alpha_{i}\)
(2)得到上面的式子之后,我们发现拉格朗日函数中只含有一个变量,那就是\(\alpha_{i}\),接下来我们就可以去求最优问题:
\[\max\limits_{\alpha} \space\ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^{T}x_{j}+\sum_{i=1}^{n}\alpha_{i}\]
\[s.t. \sum_{i=1}^{n}y_{i}\alpha_{i}=0 \space\ \alpha_{i}\geq0 i=1,2,...,n\]
这也是一个二次规划问题,我们使用程序可以得到结果
核函数Kernel
我们知道对于线性条件下SVM具有原始模式和对偶模式,都可以求出最优解,我们为什么还要提出来对偶模式呢?这就是为了解决在原始空间非线性的情况。
一般来说,对于非线性情况,我们的常用做法是把样例特征映射到高维空间中去(如上文2.2节最开始的那幅图所示,映射到高维空间后,相关特征便被分开了,也就达到了分类的目的);
但是如果高维空间维度太大,这个时候我们就需要将核函数用在对偶SVM上,简化运算。
对核函数的具体讲解可以参考这里核函数