支持向量机(support vector machines,SVM)是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。SVM 适合中小型数据样本、非线性、高维的分类问题。
支持向量
1.线性可分
在分类问题中,最简单的分类就是二分类问题,而且这个二分类问题是一个线性可分问题。
在一维空间,也就是一个坐标轴上面,要分开两个可以分开的点集合,我们只需要找到一个点,如图1:
图1 一维线性可分示意图
在二维空间中,要分开两个线性可分的点集合,我们需要找到一条分类直线即可,如图2:
图2 二维线性可分示意图
在三维空间中,要分开两个线性可分的点集合,我们需要找到一个分类面:如图3:
图3 三维线性可分示意图
数学定义:
D
0
D_0
D0和
D
1
D_1
D1 是 n 维欧氏空间中的两个点集。如果存在 n 维向量 w 和实数 b,使得所有属于
D
0
D_0
D0的点
x
i
x_i
xi都有
w
x
i
+
b
>
0
wx_i+b>0
wxi+b>0 ,而对于所有属于
D
1
D_1
D1 的点
x
j
x_j
xj 则有
w
x
j
+
b
<
0
wx_j+b<0
wxj+b<0,则我们称
D
0
D_0
D0和
D
1
D_1
D1 线性可分。
2.最大间隔超平面
从二维扩展到多维空间中时,将 D 0 D_0 D0和 D 1 D_1 D1完全正确地划分开的 w x i + b = 0 wx_i+b=0 wxi+b=0就成了一个超平面。
为了使这个超平面更具鲁棒性,我们会去找最佳超平面,以最大间隔把两类样本分开的超平面,也称之为最大间隔超平面。
两类样本分别分割在该超平面的两侧;
两侧距离超平面最近的样本点到超平面的距离被最大化了。
3.最优化问题
样本中距离超平面最近的一些点,这些点叫做支持向量。
SVM 想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。任意超平面可以用下面这个线性方程来描述:
W T x + b = 0 W^Tx+b=0 WTx+b=0
二维空间点 ( x , y ) (x,y) (x,y)到直线 A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0的距离公式是:
∣ A x + B y + C ∣ A 2 + B 2 \cfrac{|Ax+By+C|}{\sqrt{A^2+B^2}} A2+B2∣Ax+By+C∣
扩展到 n 维空间后,点 x = ( x 1 , x 2 . . . x n ) x=(x_1,x_2...x_n) x=(x1,x2...xn)到直线 w T x + b = 0 w^Tx+b=0 wTx+b=0 的距离为:
∣ w T x + b ∣ ∣ ∣ w ∣ ∣ \cfrac{|w^Tx+b|}{||w||} ∣∣w∣∣∣wTx+b∣
其中 ∣ ∣ w ∣ ∣ = w 1 2 + . . . w n 2 ||w||=\sqrt{w_1^2+...w_n^2} ∣∣w∣∣=w12+...wn2。
如图所示,根据支持向量的定义我们知道,支持向量到超平面的距离为 d,其他点到超平面的距离大于 d。
于是可以导出这个公式
{ ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ ≥ d , y = + 1 ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ ≤ d , y = − 1 \begin{cases}\cfrac{|w^Tx+b|}{||w||}\ge d,y=+1\\\cfrac{|w^Tx+b|}{||w||}\leq d,y=-1\end{cases} ⎩⎪⎪⎨⎪⎪⎧∣∣w∣∣∣wTx+b∣≥d,y=+1∣∣w∣∣∣wTx+b∣≤d,y=−1
y代表最大间隔超平面分割的两个类。
稍作转化可以得到:
{ ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d ≥ 1 , y = + 1 ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d ≤ − 1 , y = − 1 \begin{cases}\cfrac{|w^Tx+b|}{||w||d}\ge1,y=+1\\\cfrac{|w^Tx+b|}{||w||d}\leq -1,y=-1\end{cases} ⎩⎪⎪⎨⎪⎪⎧∣∣w∣∣d∣wTx+b∣≥1,y=+1∣∣w∣∣d∣wTx+b∣≤−1,y=−1
∣ ∣ w ∣ ∣ d ||w||d ∣∣w∣∣d是正数,我们暂且令它为 1(之所以令它等于 1,是为了方便推导和优化,且这样做对目标函数的优化没有影响),故:
{ w T x + b ≥ 1 , y = + 1 w T x + b ≤ − 1 , y = − 1 \begin{cases}w^Tx+b\ge1,y=+1\\w^Tx+b\leq-1,y=-1\end{cases} {wTx+b≥1,y=+1wTx+b≤−1,y=−1
将两个方程合并,我们可以简写为:
y ( w T x + b ) ≥ 1 y(w^Tx+b)\ge1 y(wTx+b)≥1
至此我们就可以得到最大间隔超平面的上下两个超平面:
每个支持向量到超平面的距离可以写为:
d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d=\cfrac{|w^Tx+b|}{||w||} d=∣∣w∣∣∣wTx+b∣
由上述 y ( w T x + b ) > 1 > 0 y(w^Tx+b)>1>0 y(wTx+b)>1>0可以得到 y ( w T x + b ) = ∣ w T x + b ∣ y(w^Tx+b)=|w^Tx+b| y(wTx+b)=∣wTx+b∣ ,所以我们得到:
d = y ( w T x + b ) ∣ ∣ w ∣ ∣ d=\cfrac{y(w^Tx+b)}{||w||} d=∣∣w∣∣y(wTx+b)
最大化这个距离:
m a x 2 ∗ y ( w T x + b ) ∣ ∣ w ∣ ∣ max2*\cfrac{y(w^Tx+b)}{||w||} max2∗∣∣w∣∣y(wTx+b)
这里乘上 2 倍其实就是margin,方便后续计算。刚刚我们得到支持向量 [公式] ,所以我们得到:
m a x 2 ∣ ∣ w ∣ ∣ max\cfrac{2}{||w||} max∣∣w∣∣2
再做一个转换:
m i n ∣ ∣ w ∣ ∣ 2 min\cfrac{||w||}{2} min2∣∣w∣∣
为了方便计算(去除 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣的根号),我们有:
m i n ∣ ∣ w ∣ ∣ 2 2 min\cfrac{||w||^2}{2} min2∣∣w∣∣2
所以得到的最优化问题是:
m i n ∣ ∣ w ∣ ∣ 2 2 s . t . y i ( w T x i + b ) ≥ 1 min\cfrac{||w||^2}{2} s.t.\quad y_i(w^Tx_i+b)\ge1 min2∣∣w∣∣2s.t.yi(wTxi+b)≥1
未完待续--------------------