您的位置:首页 > 其它

SVM原理详解

2018-01-29 11:51 288 查看
写在前面: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: