支持向量机(Support Vecor Machine,以下简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域,并牢牢压制了神经网络领域好多年。如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是排第一估计是没有什么异议的。
SVM是一个二元分类算法,线性分类和非线性分类都支持。经过演进,现在也可以支持多元分类,同时经过扩展,也能应用于回归问题。
本篇的重点是SVM用于线性可分数据集时模型和损失函数优化的一个总结。
首先,需要回顾一下感知机的知识:感知机知识传送门。
1. 函数间隔和几何间隔
在正式介绍SVM的模型和损失函数之前,我们还需要先了解下函数间隔和几何间隔的知识。
在分离超平面固定为的时候,表示点到超平面的相对距离。通过观察和是否同号,我们判断分类是否正确,这些知识我们在感知机模型里都有讲到。这里我们引入函数间隔的概念,定义函数间隔为:
可以看到,它就是感知机模型里面的误分类点到超平面距离的分子。对于训练集中m个样本点对应的m个函数间隔的最小值,就是整个训练集的函数间隔。
函数间隔并不能正常反应点到超平面的距离,在感知机模型里我们也提到,当分子成比例的增长时,分母也是成倍增长。为了统一度量,我们需要对法向量加上约束条件,这样我们就得到了几何间隔,定义为:
几何间隔才是点到超平面的真正距离,感知机模型里用到的距离就是几何距离。
2. 支持向量
在感知机模型中,我们可以找到多个可以分类的超平面将数据分开,并且优化时希望所有的点都被准确分类。但是实际上离超平面很远的点已经被正确分类,它对超平面的位置没有影响。我们最关心是那些离超平面很近的点,这些点很容易被误分类。如果我们可以让离超平面比较近的点尽可能的远离超平面,最大化几何间隔,那么我们的分类效果会更好一些。SVM的思想起源正起于此。
如下图所示,分离超平面为,如果所有的样本不光可以被超平面分开,还和超平面保持一定的函数距离(下图函数距离为1),那么这样的分类超平面是比感知机的分类超平面优的。可以证明,这样的超平面只有一个。和超平面平行的保持一定的函数距离的这两个超平面对应的向量,我们定义为支持向量,如下图虚线所示。
支持向量到超平面的距离为,两个支持向量之间的距离为。
3. SVM模型目标函数与优化
1)求得一个几何间隔最大的分离超平面;
2)所有点到超平面的距离大于几何间隔。
这个问题可以表述为以下约束最优化问题:
s.t.
考虑几何间隔和函数间隔的关系,可改写为:
s.t.
一般取(因为函数间隔的取值不影响最优化问题的解),注意到与等价,问题被改写为:
s.t.
由于是凸函数,根据凸优化理论,可通过拉格朗日函数将上述问题转化为无约束的优化问题:
由于引入拉格朗日乘子,我们的优化目标变成:
这个优化函数满足KKT条件时,通过转化为等价的对偶问题来求解:
我们求偏导数:
令,将上式代入,得到:
从上式看出,通过对极小化后,我们的优化函数仅只有向量做参数,只要我们能极大化,求出此时对应的,进而求出。对的极大化表达式:
s.t.
只要极小化上式求出对应向量,就可求出。如何求出,需用到SMO算法。
假设我们得到值为,则:
(因为)
4. 线性可分SVM的算法过程
输入:线性可分的N个样本(),(),...,(),其中x为n维特征向量。y为二元输出,值为1,或者-1。
输出:分离超平面的参数和和分类决策函数。
算法过程如下:
1)构造约束优化问题
s.t.
2)用SMO算法求出上式最小时对应的向量的值向量。
3) 计算
找出所有的S个支持向量,即满足对应的样本,, 所有的对应的平均值即为最终的。
这样最终的分类超平面为:,最终的分类决策函数为:。
缺点:线性可分SVM的学习方法对于非线性的数据集是没有办法使用的, 有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分, 那么怎么可以处理这些异常点使数据集依然可以用线性可分的思想呢? 我们在下一节的线性SVM与软间隔最大化里继续讲。
参考文章:https://www.cnblogs.com/pinard/p/6097604.html
李航《统计学习方法》