支持向量机 (Support Vector Machine, SVM) 是一类按监督学习 (supervised learning) 方式对数据进行二元分类 (binary classification) 的广义线性分类器 (generalized linear classifier), 其决策边界是对学习样本求解的最大边距超平面 (maximum-margin hyperplane)。
正文
概念
乍一看上面的内容很抽象,什么二元分类,最大边距超平面……下面让我们来剖析一下这些概念。
如果要对一些数据(比如说点)进行分类,我们可以构造一条直线简单的把数据分成两半。这条直线就叫做分隔超平面。
这个分隔超平面旁边的点到超平面的距离就是间距,离超平面最近的点就叫做支持向量。SVM 的算法原理就是找到一种分类方式,让支持向量到超平面的距离达到最大,因为这样就能很好的分类数据。
既然是要让间距达到最小,那么首先我们来看怎么计算间距。在二维空间里我们可以用 来描述一条直线。为了把这个扩展到 n 维空间,我们采用矩阵的形式来描述这个超平面
同时我们可以假设我们需要计算的支持向量在上
根据点到直线距离公式
我们可以得到
把 代入得到
所以我们要使得支持向量到分隔超平面得距离最大就要使得|| w ||最小。
计算完了间距,就要了解什么是正确的把数据进行分类,所谓正确进行分类指的就是 SVM 中的约束条件(如果划分之后超平面无法正确分类那就没有意义了)。
我们可以看到之前所做的假设,分隔超平面两端的支持向量分别分布在和
上。所以很容易知道,我们分类要达到的效果要么就是
≥ 1, 要么就是
≤ -1。 所以我们可以用 -1 表示一种类别的值 ,1 表示另一种类别的值(上图中的圆形为 -1, 方形为 1)。 所以我们就可以得到下面的约束条件表达式
其中 y{-1,1}, 因为当 y 为 -1 时,满足的条件是 wTx + b ≤ -1, 所以两个相乘负负得正大于 1; 同理也可以理解为什么 y = 1 时也是大于 1。
所以总结一下上面的所有内容:用 SVM 进行数据分类就是在满足约束条件
下,求解 d 最大值。
线性不可分
针对线性不可分的数据,上面讲到的方法就失效了。所以我们引入了一个叫做松弛系数的概念。松弛变量其实就是用来放宽用来分类点的条件,经过改造后的优化函数变成:
约束条件如下:
其中m 为样本个数,ε是松弛系数 ,R 为算法参数。
从约束条件公式我们可以看到,我们放宽了约束条件,从而让有一些点可以到达 wTx + b = 1 和 wTx + b = 0 之间(或者 wTx + b = -1 和 wTx + b = 0 之间)。算法参数 R 则表示对违反最大问距规的样本的“惩罚”力度。当 R 很大时,我们的目标函数对违反最大问距规则的点的“惩罚力度”将变得很大 ;R 较小时,那些违反最大问距规则的样本,其“忖出的代价”不是特别大。换句话说,也就是 R 越大,因为要让成本越小,我们就很趋近于少犯错误,但是容易造成数据过度拟合(因为过度细分了 );R 较小就有可能造成欠拟合现象。
我们可以把
作为横坐标 ,cost 作为纵坐标来画一张图。
可以看到,当
时,成本为 0; 当≤ 1 时,成本线的斜率为 R。
本文由 @Serence @半人半疯 原创发布,未经作者许可,禁止转载。本文首发于机器学习 - SVM。
-
来自 CSDN