在机器学习领域,SVM是一个与学习算法关联的监督式学习模型,这些学习算法可以分析用来做分类和回归的数据。给定一个训练样本集,每个都被标记为两类中的一类,一个SVM训练算法构建一个模型,该模型能够将新的数据分到一个类中,使它成为一个非概率的二类线性分类器。一个SVM模型是样本点在空间的一种表示,(被映射)以至于在不同类别中的样本能够被一个最大的间隔分开。新的样本被映射到相同的空间中,被预测属于一个类别,基于样本点落在间隔的哪一边。除了线性分类的功能以外,SVM可以有效的表现出非线性分类的功能,通过使用核技巧,隐含的将输入映射到高维特征空间。如果数据没有被打标签,一个监督式学习是不可能的,此时则需要无监督学习,无监督学习将探索数据的自然的聚类来分组,并将新的数据映射到这些形成后的组别中。这个为SVM提供了改进的聚类算法称为SVC(support vector clustering),并且广泛使用在工业应用中作为分类途径的预处理,即在数据没有被打标签时,又在只有一些数据是打过标签时。
定义
更正式的,一个支持向量机构造一个超平面,或者一组超平面,在一个高维或者无穷维度的空间,这个空间可以用来做分类,回归,或其他任务。直观上,一个好的分离(分类)可以用一个超平面来获得,该超平面到每一类中最近的训练点的距离是最大的,这个距离称为函数间隔,因为一般情况下,该间隔越大,分类器的广义误差越低。
然而原始问题可能是在有限维空间描述的,通常在该空间中数据集不是线性可分的。鉴于此,原始的有限维空间可以被映射到一个更高维度的空间中,在高维空间中有可能使得分割更加容易。为了计算加载更加合理化,SVM机制所使用的映射要被设计可以确保一件事:依据原始空间中变量的点积可以很容易被计算,通过用选定的核函数$k(x,y)$来定义点积去适应该问题。在高维空间中的超平面被定义成点的集合,在该空间中,由向量表示的点的内积(点积)是一个常数。定义超平面的向量可以选择成数据库中出现的特征向量$x_i$的图像的参数$\alpha_i$的线性组合。超平面这样选择以后,在特征空间中的点x要被映射到超平面中是用该关系定义的:$$\sum_i \alpha_i k(x_i,x) = \mathrm{constant}$$
注意,如果$k(x,y)$随着$y$远离$x$而变小,在和($sum$)中的每一项都可以衡量测试点$x$与数据基准点$x_i$(训练点)的接近程度,这样以来,上面核函数的和可以被用来衡量相对接近程度,每个测试点到最初在一个或者其他集合中将要被分割的数据点的接近程度。
注意到这样的事实,要被映射到(任意超平面)点$x$的集合,允许集合间更加复杂的分割,该集合在所有的原始空间中不一定是凸集。
动机
H1不能将类分开,H2可以。但是只有一个很小的间隔,H3用一个最大的间隔将它们分开。数据分类是机器学习的一般任务。假设有一些给定的数据点,其中每一个都属于两类中的一类,并且目标是决定一个新的数据点该进入哪一个类。在SVM情形中,数据点被当做p-维向量(p个数字组成的列表),我们想知道是否能够用(p-1)-维超平面将其分开,这就是线性分类器。有很多超平面可能将数据分类,一个合理的选择是最好的超平面能够代表两类中的最大分割或者间隔,所以我们选择这个超平面,这样可以使得两边距离超平面的最近的数据点到平面的距离是最大的,如果这样的一个超平面存在,则被认为是最大间隔超平面,由其定义的线性分类器则被认为是最大间隔分类器,或者等价的认为是稳定性最优的感知机。
我们被给定一组训练数据集,包含n个数据点,其形式为:
其中yi是1或者-1,每一个指出数据点Xi属于哪一类。每一个Xi是一个p-维的实向量。我们希望找到“最大间隔超平面”,该平面可以将yi=1的点与yi=-1的点划分开来。这样可以使得两边最近的点到超平面的距离是最大的。
任何超平面都可以被写成满足如下方程的点的集合: w*x-b=0
其中w是超平面的法向量(不一定被归一化),参数b/w确定了超平面沿着法向量w方向上的距离原点的偏移(也就是超平面到原点的距离)。
硬间隔
如果训练数据是线性可分的。我们可以选择两个平行的超平面,其中每一个都可以将数据分成两类,使得两个超平面之间的距离尽可能的大。两个超平面之间的区域称为“间隔”,最大间隔的超平面正好位于这两个超平面的中间。这两个超平面可以用下面两个方程来描述:
w*x-b=1 和 w*x-b=-1
在几何上,这两个超平面之间的距离是2/w,所以要想最大化该距离,我们最小化w即可。由于我们需要防止数据点落入间隔之中,我们添加下面的约束条件:
对于下面每一个i,
这些约束条件规定了每一个数据点都必须落在间隔的正确的一边。可以写为如下形式: yi(w*x-b)>=1,for all 1<i<n
将上面的放到一起就是: min w s.t. yi(w*x-b)>=1,对于每一个i=1...n
使得问题可解的w和b确定了我们的分类器:x->sgn(wx+b)
由几何描述得到的一个显而易见,却重要的结论是最大间隔超平面是完全由与超平面最近的数据点xi所决定,这些数据点xi称为支持向量。
软间隔
为了将SVM扩展到数据集并非线性可分的情形,我们引入中枢损失函数: max(0, 1-yi(wx+b))
这个函数是0,如果约束条件1满足的话。换句话说,如果xi落在间隔正确的一边。 对于落在间隔错误一边的数据点,该函数的值与到边界的距离成比例。所以我们希望最小化以下表达式:
其中参数lamda确定了权重,该权重权衡了增加间隔大小以及确保xi能够落在边界正确的一边。这样对于充分小的lamda值,软间隔SVM的表现等价于硬间隔SVM,如果输入数据是线性可分的,但是如果不是线性可分依然能够学习到一个可行的分类规则。
非线性分类
原始的最大间隔超平面算法是Vapnik在1963年提出的,该算法构建了一个线性分类器。然而,在1992年,Bernhard E. Boser, Isabelle M. Guyon 和 Vladimir N. Vapnik建议在最大间隔超平面上使用核技巧来创建一个非线性分类器。其算法在形式上是相似的(与线性分类器相比),除了每一个点积都用非线性核函数替代。这允许了算法可以在一个转换后的特征空间中符合最大间隔超平面。这种转换可以是非线性的,转换后的空间是高维的。尽管分类器在转换后的特征空间中是一个超平面,但是在原始的输入空间中可以是非线性的。
值得注意的是,尽管给定足够的样本数据后算法依然能够表现很好,但是在高维特征空间中增加了SVM的广义误差。
一些常用的核函数包括: 齐次多项式 非齐次多项式 高斯径向基核函数 双曲正切函数
核与通过方程k(x,y)=f(x)*f(y)转换f(x)相关,w值同样在被转换的空间当中,分类中与w的点积也可以用核技巧计算,例如:。。。
计算SVM分类器
计算SVM分类器(软间隔)意味着最小化下面的表达式:
我们关注软间隔分类器是因为,如上面所提到的,给lamda选取一个充分小的值将生成一个输入数据线性可分的硬间隔分类器。传统的解决途径,也即涉及简化表达式(2)为一个二次规划问题,在下面详细说明。之后,最近的解决方法诸如子梯度下降法和坐标下降法将会被讨论。
原始问题
最小化表达式(2)可以被重新写为一个约束优化问题,用下面的方式用一个不同的目标函数。
对偶问题