写在前面:SVM是机器学习中占有一定分量的经典算法,也是找工作时,如机器学习工程师等岗位面试的时候,面试官肯定会提及的算法题,如果能够对其原理和推导过程有一定深度的认识,将是非常加分的。
一、大致解释
SVM(支持向量机Support Vector Machine)是一种二分类模型,它的原理是在特征空间中找到一个最大的超平面,使得所有样本到该平面的距离最大(求样本集合到平面的距离,也就是求最近的样本点到超平面的距离),我们的学习目标则是让这个距离最大。详见下图:
两类样本集合到超平面的距离就是两条虚线到中间实线的距离。我们的目标就是让这个距离最大,这样得到的分类器才是最优的。
二、什么是最大间隔,函数距离or几何距离
对于一个超平面Wx+b=0来说,Yi|WXi+b|定义为函数距离,Yi表示点的类别(1或-1),Xi要看成一个多维的特征向量(而非一个实数)。|WXi+b|/|W|定义为几何距离(即函数距离除以|W|),几何距离更能够消除由于W的数值缩放带来的影响。
这样的话,我们就确定了优化目标,F=|WXi+b|/|W|,为了求解方便,我们令分子(也就是函数距离)为1,这样我们的优化目标就变成了F=1/|W|,即:
下面这张图是我看过的比较完整的关于令函数距离为1的解释,感觉也是最好理解的
三、什么是支持向量?
首先来看一张图,如下:
如上图所示,中间的实线就是支持向量,两条虚线到实线的距离是r,即我们的优化目标,虚线上的所有点都是支持向量,我的理解是,支持向量就是虚线所在的这条直线,因为只要虚线的位置变化,那么分类超平面也会变化,它起着支持分类超平面的作用(仅个人理解)线
在支持向量上的点,都满足|Yi(W*Xi+b)|=1,不在支持向量上的点,显然|Yi(W*Xi+b)|>1
四、从线性可分到线性不可分
(1)原始问题到对偶求解:之前的目标函数如下所示
由于我们求解方法一般都是最小化目标函数,所以目标函数可以转化为:
(前面的1/2只是为了求导的时候,把2消去,便于计算)
现在实际上就是在约束条件下求最优解,这时候我们可以用拉格朗日乘数法求解。构建拉格朗日函数:
最终目标函数:
我们最优解用d表示,转化成如下形式:
先对W,b求最小,再对a(拉格朗日乘子)求最大
(2)对偶问题的求解步骤
(3)核函数
核函数实际上就是一个映射,把一个低维空间映射到高维空间,从而让线性不可分变成线性可分。但是映射到高维空间之后,只需在高维空间进行计算,而无需进行低维空间的复杂计算
(4)松弛变量:为了减小离散点(异常样本点)的影响
参考文档:链接:https://pan.baidu.com/s/1ggHrd9x 密码:971p