SVM支持向量机模型
1.1SVM模型
和感知机模型一样,SVM(支持向量机模型)也是旨在求出n维空间的最优超平面将正负类分开。这里的达到的最优是指在两类样本点距离超平面的最近距离达到最大,间隔最大使得它区别于感知机学习,SVM中还有核技巧,这样SVM就是实际上的非线性分类器函数。
1.2线性可分支持向量机
跟前面定义的问题一样,假设给定一个特征空间上的训练数据集
目标是找到一个分离超平面,将正负类分别分到平面的两侧。分离超平面对应方程
1.2.1函数间隔和几何间隔
上图中有A,B,C三个点,其中A点离超平面较远,将其决策为正类的确信度比较高,C点预测为正类的置信度就不是很高,相同的,B位于A,C之间,所以将其预测为正类的置信度也在点A和点C之间。一般来说,一个点距离超平面的远近决定了其分类结果的置信度,所以最优的平面即为离超平面最近的样本点到其的距离最大的时候。
给定样本点(
但是,对于一个超平面(w,x)来说,通过缩放变换(成倍的放大缩小w,b),超平面并没有改变,但是函数间隔却改变了。所以可以通过对超平面的法向量w加以约束,如规范化令||w||=1,这样间隔就是确定的,这时候的函数间隔即为几何间隔,即为点(
因为y只取+1,-1,只影响符号,不影响数值。但是几何间隔一般是指带符号的距离(李航老师书)上图中两条虚线之间的距离即为间隔
所以当||w||=1时,函数间隔和几何间隔相等,当w和b成倍放大缩小的时候,函数间隔也会按照比例改变,几何间隔是不变的。
总结一下:函数间隔即为即为
1.2.2 SVM学习算法
支持向量机的目的在于求得最优的即几何间隔最大的超平面,在样本数据是线性可分的时候,这里的间隔最大化又叫硬间隔最大化(训练数据近似可分的话就叫软间隔)
支持向量机的学习算法可以表示为下面的约束最优化问题:
前面有提到,可以通过缩放变换(w,b)改变函数间隔的大小,但是超平面不改变,这里我们可以使函数间隔为1,这样问题变为
很多书的分子是2,训练集样本点中距离超平面最近的样本称为支持向量,因为存在正负类的支持向量,所以double一下,这里对求得最后最优解并不影响。值得指出的是,决定分离超平面的时候只有支持向量起作用,因为他们决定了函数间隔和几何间隔,其他点不起作用。
求解
这就是支持向量机的目标函数,这是一个凸二次规划问题,所以支持向量机的学习算法又叫最大间隔法。那么该如何求得在约束条件下最优的超平面的参数(w,b)呢?
1.2.3 SVM对偶算法
SVM通过对其对偶问题的求解求得最优的超平面参数(w,b),对于目标函数(12),目标函数是二次的,约束条件是线性的,是一个标准的QP问题,但是可以通过拉格朗日对偶性求得对偶问题的最优解,一者,这样更高效,二者还可以自然引入核函数,推广到非线性的分类问题。
首先构建拉格朗日函数,对每一个约束条件引进拉格朗日乘子
其中的
对于式子(4)来说,要是存在某个样本不满足条件
交换之后的解
将公式(4)后面括号展开,就得到
对w,b分别求导,
并令其等于0:
带入公式5,得:
这样,所求目标函数变为:
对于上式,可以看出,求出
求解公式7中的
2.核函数
上文提到,在求解出
这样每预测一个新的点x时,只需要计算它与训练样本中的点的内积,这是引入核函数的重要前提。这里与之求内积的就是支持向量,非支持向量的
2.1.非线性分类问题
上图所示,在左边低维度上,只能靠一个非线性平面(椭圆)将正负类分开,映射到高维(右图),可以看到在高维度下可以找到这样一个超平面。这就是非线性可分的。也就意味着,在我们遇到核函数之前,面对这类问题,需要完成两步:1.首先使用一个非线性映射将数据变换到一个特征空间F,2. 然后在特征空间使用线性学习器分类。分类决策函数如下:
其中,
2.2.核函数
在上文我提到过对偶形式,而这个对偶形式就是线性学习器的一个重要性质,这意味着假设超平面可以表达为训练点的线性组合,因此决策规则可以用测试点和训练点的内积来表示:
其中
李航老师的《机器学习》中:对偶形式的基本思想是,将w,b表示为实例x和标记y的线性组合,求解该线性组合的系数而求得w,b。有了核函数,就不用关心映射之后的维度有多少(有些甚至是无限维,例如高斯核)。
2.2.线性不可分和软间隔最大化
并不是所有的样本都是线性可分或者非线性可分的,面对不可分的情况,即公式3中的约束条件不成立。可以引进一个松弛变量
每个松弛变量
C为惩罚系数。之后的推导和对偶问题同上。