总结一下,不然过段时间就全忘了,加油~
1、问题描述
假设,存在两类数据A,B,如图1所示,A中数据对应于图中的实心点,B中数据对应图中的空心点,现在我们需要得到一条直线,能够将二者进行区分,这样的线存在无数条,如图1中的黑色直线所示,这些线都能够分对。
图1 A,B两类数据分布示意图
因此,在分对的前提下,我们希望分得最好,那么什么样的直线能够分得最好?直观上来说,就是在分对前提下,分割线尽量离两个类别样本数据远,如图2所示。
图2 最优分割示意图
而决定最优分割线的样本为距离分割线最近的样本点(位于两条虚线上的样本点),这些样本点就是支持向量(每一个样本点都为一个向量),由这些支持向量决策,获取得到的最优分割线即为支持向量机。这是一个二维数据,对应最优分割线,对于多维数据,对应的就是分割超平面。
2、求解思路
由问题可知,最优分割超平面由位于分割超平面两侧的支持向量(support vector)决定,而支持向量对应于距离分割超平面最近的样本点,那么,如果假定分割超平面已知,那么支持向量即到分割超平面最近的样本点。
我们还是以二维数据为例,首先,回顾一下高中知识,已知一个点和一条直线,求点到直线的距离有:
如果取绝对值,就是对应距离,这里d的符号其实表征了当前点与分割线之间的位置关系,如果点位于分割线的正向,d的符号为正,如果点位于分割线的负向,d的符号就为负。
我们将d进行展开有:
令:
那么,如果样本点进行了归一化处理,任意样本点到分割超平面的距离就是:
在求得支持向量之后,调整和,使得margin最大,因此,表示成数学公式有:
由于直线取值有无穷多个,用这个思路来进行求解是行不通的。
3、目标函数
我们假定分割超平面为,有:,因此有:。那么,任意一个样本点到分割超平面的距离为:
那么,我们优化的目标函数就变成了:
由于直线方程乘以某一个不为零的缩放因子f后,不会改变方程,所以,可以通过对直线方程乘以某个缩放因子,使得满足:
那么,目标函数就可以写成:
4、目标函数求解
求解这种带约束的极值问题,引入拉格朗日乘子,有:
其中,,由于,因此,越大,L越小。因此,目标函数就转换为:
等价于其对偶问题:
因此,分别用L对求偏导,并令其等于零有:
回代到L中有:
那么最优的为:
求解过程,使用的SMO算法,这个后面补充,这里,假设我们已经求得最优的,那么最优超平面参数怎么求?在取得最优时,支持向量满足:
因为,,则:
将代入有:
未完待续~~~~
参考资料:
2016小象学院-机器学习升级版II(邹博)
Abramson N, Braverman D, Sebestyen G. Pattern Recognition and Machine Learning[M]. Springer, 2006.