SVM学习记录1:线性可分硬间隔最大化

来源:互联网 发布:js push函数 编辑:程序博客网 时间:2024/04/28 08:39

SVM是机器学习中非常流行的一个分类算法,尤其是处理二分类问题。但是相对于其他算法SVM可能难度稍大——至少我是这么觉得。但是,这又是一个必须攻克的课题。我在学习SVM的时候痛下决心,将自己的学习历程记录在笔记本上。现在将其整理成博客,与诸君共勉。

概念理解

SVM的中文名叫做“支持向量机”,什么意思呢?也就是只依靠少量的支持向量做出决策而并不是依靠所有的训练样本。那么支持向量又是什么呢?书上说:“在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例,成为支持向量。”

知道了什么是支持向量,貌似还是云里雾里,好吧,我们先讲点宏观一点的概念。SVM主要用来处理二分类问题,如何将一个测试样本分类呢?这和逻辑斯蒂回归的方法类似。我们先通过训练得到一个超平面,如果特征维度为二,那就是平面内的一条直线。然后,如果测试样本在这条线的上边,就属于A类,如果在这条直线的下边,就属于B类。具体就是通过将数据输入分类决策函数中去计算。

逻辑斯蒂回归也是通过训练一个超平面去分类,感知机算法也是。但是,SVM厉害就在于它这个超平面找到很好,是最好的。什么是最好呢?就是使所有的训练样本尽量远离分离超平面,这样保证了置信度。

显然,找到一个相对最好的超平面,这涉及到一个最优化问题。这个最优化问题就是最优二次规划问题。为了描述这个问题,还需要引入两个基本概念:函数间隔和几何间隔。这里引用一下《统计学习方法》中对函数间隔的描述:

一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。在超平面wx+b=0确定的情况下,|wx+b|能够相对地表示点x距离超平面的远近(想想点到超平面的距离公式),而wx+b的符号与类标记y的符号是否一致能够表示分类是否正确。所以可用量y(wx+b)来表示分类的正确性及确信度,这就是函数间隔的概念。

函数间隔可以表示分类预测的正确性及确信度,但是我们的SVM模型在选择超平面时,只有函数间隔是不够的。因为分离超平面的公式为wx+b=0,我们发现只要成比例地改变w和b,超平面并没有变,但是函数间隔却成比例的改变了。所以,可以对分离超平面的法向量w加某些约束,如规范化,使w的L2范数||w||=1,使得间隔是确定的。这时函数间隔就成为了几何间隔。

超平面关于样本点的几何间隔一般是实例点到超平面的带符号的距离,当样本点被超平面正确分类时就是实例点到超平面的距离。

最后说一下什么是支持向量。在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例,成为支持向量。即支持向量本质上只是训练集中的几个特殊的样本而已。这几个样本点可牛了,它们决定了分离超平面的位置,其他的训练样本并不起作用。这就是SVM支持向量机原因。

最优化问题——间隔最大化

OK,选出最佳的分离超平面必然带来一个最优化问题。这个最优化问题就是几何间隔最大化。我们要最大化关于训练数据集的几何间隔,使得所有的训练样本到达分类超平面的几何间隔都大于这个几何间隔。然后,经过一系列简单的变换,这个最优化问题便转化成为了一个凸二次规划问题。

为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可分支持向量机的对偶算法。这样做的优点,一是对偶问题往往更容易求解;二是自然引入核函数,进而推广到非线性分类问题。

线性可分支持向量机的对偶算法

首先需要构建拉格朗日函数。为此,对所有不等式约束引进拉格朗日乘子alpha。原始问题可以看做是一个基于拉格朗日函数的极小极大问题,那么原始问题的对偶问题就是极大极小问题。所以,为了得到原始问题的解,需要先求出拉格朗日函数L(w,b,alpha)对w,b的极小,再求对alpha的极大。

对w,b求极小很好求,只要用函数L分别对它们求偏导就可以了。最后得到一个w关于训练数据集和alpha的表达,和alpha关于训练集的一个等式。然后将这个结果带入原拉格朗日函数,经过整理之后,就可以再对alpha求极大了。

对alpha求极大就简单多了,这时候的最优化问题已经是一个仅有alpha和训练数据集的表达。这样,我们最终可以求出alpha向量的所有维度的值。然而,得到alpha的值,又如何得到分离超平面的参数w和b呢?

我们前面说过,我们将原始问题的求解转化成了求解其对偶问题,那么,原始问题和对偶问题的最优值要想完全相等,有一个充分必要条件,那就是要求解的参数满足KKT条件。KKT条件是一系列条件,包括拉格朗日函数对参数的分别求偏导结果为零以及一些简单的约束条件。通过将求得的alpha带入这些条件中,便可以求出我们所要的参数w和b了。

通过查看我们求出的alpha向量可以发现,其中并不是所有的维度都不为零。其实,进一步观察可以发现,只有那些不为零的维度所对应的数据点才对w和b有影响。也就是说,训练数据中对应于alpha中不为零维度的样本点的实例就是传说中的支持向量。

0 0