支持向量机(support vector machine, 或SVM)是一种监督式学习方法。它最早被用于二值分类,近年来也被用于多值分类,排序,和回归。
支持向量机源自用超平面来分割数据。我们先看这个例子:
图中的两类样本线性可分,并且存在无穷多个超平面都可以将这两类样本分割。我们希望找到“最优”的 一个超平面来分割这两类样本。对图中的任意一个超平面,我们将该超平面到离它最近的样本的距离的两倍定义 为“间隔”。支持向量机将间隔最大的超平面视为最优。
用数学的语言来说,假设我们有如下训练样本:
这里每一个xi都是一个n维向量,即
而yi则为+1或-1。 超平面用数学形式来表达可以写成:
这里w是一个n维向量,即
而w0则是一个矢量。
对于任意样本xi,超平面到xi的“方向性距离” 可以表示为
这里所指的方向性距离,是说距离带有方向性,如果从超平面到xi是顺着 w方向,则其值为正,反之,则其值为负。而样本到超平面的真实距离则 是γi的绝对值。
由于样本的标签yi的取值为+1或-1,求间隔最大的超平面可以表达成
如果我们设
则上述表达式可以写成
这一表达式还有一个问题,那就是解不唯一,如果(w, w0)是该问题的解,则 (βw, βw0)也是该问题的解。如果我们增加一个限制 条件
则上述表达式可写成
由于平方函数的单调性,上述表达式等价于
该表达式是一个目标函数为凸函数的二次规划问题,可以求解。
实际问题的训练数据通常不是线性可分的,因此上式还需要作一些修改以允许错误分类的存在。这可以 通过放松限制条件来实现:
上式中ξi大于或等于0。如果ξi在0到1之间,则相应的样本的分类 依然正确但处在“间隔”之内,如果ξi大于1,则相应的样本的分类是错的。允许错误分类 存在的支持向量机可表述如下:
![]() |
(1) |
式中常数C的选择可以控制拟合的程度。C取值小意味着允许在训练数据上更多错误分类的存在但两类之间的“间隔”会比较 宽,而C取值大的话则训练数据上错误分类会比较少,但两类之间的“间隔”会比较小。最优的C的取值经常是通过交叉验证 (cross validation)的方式来获取的。
式(1)依然是一个目标函数为凸函数的二次规划问题。该类问题的求解过程通常是原型和对偶型一并求解。式(1)的对偶型为:
![]() |
(2) |