支持向量机定义
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane) 。
简单来说,SVM就是一种分类器,将数据一分为二分成两部分。假设我们有一堆数据,他们的分布如下图所示,我们用一条直线将数据一分为二,那么我们可以找到好多条直线,如图所示。
每一条直线都完美的将数据分成两部分,我们把这些直线成为分隔超平面。在上面的例子中,由于数据都是二维平面上的点,我们的分隔超平面就是一条线。如果数据是三维空间中的点,我们用来分隔数据的就是一个二维平面。由此类比,如果数据为N维,那么我们就需要一个N-1维的某个对象来分隔他们,这个对象被称为超平面,也就是分类的决策边界。分布在超平面一侧的所有数据属于某个类别,分布在超平面另一侧的所有数据属于另一类别。
我们采用这种方法来构建分类器,数据距离决策边界的距离越远,其最后的预测结果就越好。在上面的数据中我们可以得到无数条分隔平面,那么哪条直线最好就是我们接下来要考虑的问题。
最大间隔
我们取两条直线为例,红蓝实心圆为训练集合,A、B两条直线都很完美的将数据集分为两类,且误差为0。但是对于一个新的数据来说,比如图中空心圆就是一个测试数据,A、B两直线的分类结果就是相反的。
A将新的数据分到了红色区域,而B将数据分到了蓝色区域。哪一个较好呢,我们希望找到离分隔平面最近的点,确保他们离分隔超平面的距离尽可能的远。这里点到分隔面的距离被称为间隔。我们希望间隔尽可能的大,这是因为如果我们犯错或者在有限数据上训练分类器的话,我们希望分类器尽可能健壮。
我们将A、B两条直线向上向下平移直到碰到数据点后停止,平移的两条直线的距离便是间隔,离分隔超平面最近的那些点我们成为支持向量。由此可见,直线B相对于A来说较好,因为他的间隔最大。但B并不一定就是最优解,我们接下来的目标就是寻找最大间隔。
寻找最大间隔
我们的分隔超平面可以写成 w T x + b \bm{w^Tx}+b wTx+b。要计算点X到分割超平面的距离,就必须要给出点到分隔面的法线或垂线的长度,长度设为M,该值可以容易的通过数学推导得到为 ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ \frac{|\bm{w^Tx}+b|}{||\bm{w}||} ∣∣w∣∣∣wTx+b∣
推导过程如下
在SVM里面,我们用+1和-1来表示两类数据。我们令上面分割的直线向上平移的直线记作 w T x + b = 1 \bm{w^Tx}+b=1 wTx+b=1,向下平移的直线记作 w T x + b = − 1 \bm{w^Tx}+b=-1 wTx+b=−1,中间那条直线记作 w T x + b = 0 \bm{w^Tx}+b=0 wTx+b=0,这三条线的位置关系如下所示。
根据上面给出的距离公式,在 w T x + b = 1 \bm{w^Tx}+b=1 wTx+b=1上面的点到平面的距离为 1 ∣ ∣ w ∣ ∣ \frac{1}{||\bm{w}||} ∣∣w∣∣1,同理,在 w T x + b = − 1 \bm{w^Tx}+b=-1 wTx+b=−1上面的点到平面的距离也为 1 ∣ ∣ w ∣ ∣ \frac{1}{||\bm{w}||} ∣∣w∣∣1,这样,我们的间距M就可以表示为 2 ∣ ∣ w ∣ ∣ \frac{2}{||\bm{w}||} ∣∣w∣∣2
我们的数据分为+1,-1两类。当数据在+1类时, w T x i + b > = 1 \bm{w^Tx_{i}}+b>=1 wTxi+b>=1,当数据在-1类时, w T x i + b < = − 1 \bm{w^Tx_{i}}+b<=-1 wTxi+b<=−1,用数学式表达如下:
w T