一,SVM背景介绍:
SVM(support vector machines) 支持向量机, 简单来讲是一种二分类的算法,使得分类的间隔最大化,可形式化为一个求解凸二次规划的问题。下面是其数学定义:
假设给定的一个特征训练集
支持向量机要解决的问题就是找到最好的分类超平面,在二维中就是找到一根直线,样本与直线的距离越大越好。
二,定义几何距离:
在SVM中表示距离的东东有,函数间隔和几何间隔。函数间隔简单理解就是点到平面的距离,函数间隔会随着超平面比例系数的变化而变化,几何距离是真正的空间中点到平面的距离。超平面f(x) 关于样本点的函数间隔为:
第i个样本点到超平面
出现的问题:
如果同比例的扩大缩小w和b时,超平面的位置并没有变化,但是函数间隔却发生了变化,即函数间隔并不能真正的表示样本与超平面的距离,所以定义几何间隔,就是除以一个归一化的系数
函数间隔与几何间隔的关系是:
当||w||=1时,保证了几何间隔和函数间隔形同。
此时我们要找到距离超平面最近的点的边距最大,可以用方程式表达为:
三,定义目标函数以及求解
SVM 终极任务:使得离超平面函数距离最近的点到超平面的几何间距最大化。
对于函数距离来讲,我们可以令
间隔有效的点就是支持向量点,即符合函数间隔等于1 的点。
此时问题转化成了一个凸函数优化问题,因为现在的目标函数是二次的,约束条件是线性的,所以是一个凸二次函数规划问题: 在一定的约束条件下,目标最优,损失最小。
通过拉格朗日函数求解最优解:
由于引入了拉格朗日乘子现在目标变成了:
对公式的理解为:样本为支持向量(满足约束条件),最大的集合间隔中取最小值。因为优化函数满足KKT条件,可以通过拉格朗日对偶将优化的目标函数转化为其对偶问题来求解。也就是转化为下面公式的求解问题:
首先求
将结果带回到L式子中得到最终的目标函数表达式:
这是一个没有w和b的函数表达式,只要极大化
把负号提出,转化为极小化同时符合以下限制条件:
只要求出以上极小化时,对应的
求解W,通过以下公式:
求解b,通过以下公式:对于任意的支持向量,
那样的点才是支持向量:只要满足函数距离为1的向量,都是支持向量,再带入上述的公式,理论上每个支持向量对应的b都可以作为最终的结果,不过一般取所有b的平均值,对应严格的线性可分的SVM,求得的b是一样的。
四,SVM 算法总结:
输入是:线性可分的m个样本
输出是:分离超平面参数
算法的过程如下
1)构造约束优化问题目标函数:
2) 用SMO算法求出上式最小时对应的
3)计算
4) 找出所有的S个支持向量,即满足
计算出每个支持向量
对应的平均值即为最终的
线性SVM面临的问题:
对于线性可分的样本点,以上将的理论是完全的试用的,但是当有几个的离群点的时候,线性支持向量机就不起作用了。这时候有必要引入软间隔,对这些异常点进行分类。