支持向量机
支持向量机是一种经典的二分类模型,基本模型定义为特征空间中的最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此,支持向量机本身可以转换一个凸二次规划求解问题。
函数间隔和几何间隔
对于二分类学习,假设现在的数据是线性可分的,这时分类学习最基本的想法就是找到一个合理的超平面,该超平面能够将不同类别的样本分开,类似于二维平面使用
a
x
+
b
y
+
c
=
0
ax + by + c = 0
ax+by+c=0来表示,超平面实际上表示的就是高维平面,如图所示:
对数据点进行划分时,容易知道当超平面距离与其最近的数据点间隔越大,分类的鲁棒性能较好,即当新的数据点加入时,超平面对这些数据点的适应性最强。出错的可能性最小。因此需要让所选择的超平面最大化这个间隔Gap,常用的间隔定义有两种:一种称之为函数间隔,一种称之为几何间隔。下面将分别介绍这两种间隔,并对SVM为什么选择几何间隔做一些阐述。
函数间隔
在超平面
w
‘
x
+
b
=
0
w^`x + b = 0
w‘x+b=0确定的情况下,
∣
w
‘
x
∗
+
b
∣
|w^`x^* + b |
∣w‘x∗+b∣,能够代表
x
∗
x^*
x∗距离朝平面的远近,容易知道,当
w
‘
x
∗
+
b
>
0
w^`x^* + b>0
w‘x∗+b>0时,表示
x
∗
x^*
x∗在朝平面一侧(正类,标记为1),当
w
‘
x
∗
+
b
<
0
w^`x^* + b<0
w‘x∗+b<0时,则表示
x
∗
x^*
x∗在朝平面另一侧,(负类,类别为-1),因此
(
w
‘
x
∗
+
b
)
y
∗
(w^`x^* + b)y^*
(w‘x∗+b)y∗的正负性恰能表示数据点
x
∗
x^*
x∗s是否能被分类正确,于是便引出了函数间隔的定义 :
γ
=
y
(
w
T
x
+
b
)
=
y
f
(
x
)
\gamma = y(w^Tx + b) = yf(x)
γ=y(wTx+b)=yf(x)
而超平面
(
w
,
b
)
(w,b)
(w,b)关于所有样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔最小值则为超平面在训练数据T上的函数间隔:
γ
=
min
γ
i
(
i
=
1
,
2
,
3...
,
n
)
\gamma = \min{\gamma_i} (i = 1,2,3...,n)
γ=minγi(i=1,2,3...,n)
可以看出这样定义函数间隔在处理SVM上会有问题,当超平面两个参数
w
,
b
w,b
w,b同比例改变时,函数间隔也会跟着改变,但是实际上超平面还是源来的超平面:并设有变化:
例如
w
1
x
1
+
w
2
x
2
+
w
3
x
3
+
b
=
0
w_1x_1 + w_2x_2 + w_3x_3 + b = 0
w1x1+w2x2+w3x3+b=0 其实等价于
2
w
1
x
1
+
2
w
2
x
2
+
2
w
3
x
3
+
2
b
=
0
2w_1x_1 + 2w_2x_2 + 2w_3x_3 + 2b = 0
2w1x1+2w2x2+2w3x3+2b=0 但计算函数的间隔却翻了一倍,从而引出了能真正度量点到超平面距离的概念。——几何间隔。
几何间隔
几何间隔代表则是数据点到朝平面的真实距离,对于朝平面
w
‘
x
+
b
=
0
w^`x + b = 0
w‘x+b=0,
w
w
w代表的则是该朝平面的法向量,设
x
∗
x^*
x∗为朝平面外一点,
x
x
x在法向量
w
w
w方向上的投影点,
x
x
x与朝平面距离
r
r
r
则有:
x
∗
=
x
−
r
(
w
/
∣
∣
w
∣
∣
)
x*=x-r(w/||w||)
x∗=x−r(w/∣∣w∣∣) 又
x
∗
x^*
x∗在朝平面上,即
w
′
x
∗
+
b
=
0
w'x*+b=0
w′x∗+b=0,代入即可得:
γ
=
w
T
x
+
b
∣
∣
w
∣
∣
=
f
(
x
)
∣
∣
w
∣
∣
\gamma = \frac{w^Tx + b}{||w||} = \frac{f(x)}{||w||}
γ=∣∣w∣∣wTx+b=∣∣w∣∣f(x)
为了得到
r
r
r的绝对值,令
r
r
r乘上其对应类别
y
y
y,即可得到几何间隔的定义:
γ
∗
=
y
γ
=
γ
^
∣
∣
w
∣
∣
\gamma^*= y\gamma = \frac{\hat{\gamma}}{||w||}
γ∗=yγ=∣∣w∣∣γ^
从上述函数间隔和间隔定义可以看出,实质上函数间隔就是 ∣ w ′ x + b ∣ |w'x+b| ∣w′x+b∣,而几何间隔则是点到超平面的距离。
最大间隔与支持向量
通过前面分析,函数间隔不适合用于最大化间隔,因此,这里我们要找到的最大间隔为几何间隔,于是最大间隔分类器目标函数定义为:
max
γ
˜
\max{\~{\gamma}}
maxγ˜
y
i
(
w
T
x
i
+
b
)
=
γ
i
^
>
=
γ
^
i
=
1
,
2
,
.
.
.
,
n
y_i(w^Tx_i + b) = \hat{\gamma_i} >= \hat{\gamma} \\i = 1,2,...,n
yi(wTxi+b)=γi^>=γ^i=1,2,...,n
一般地令
γ
^
\hat{\gamma}
γ^ 为1,(这样做的目的是为了方便推导和目标函数最优化),从而上述目标函数转化为:
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1
s
,
t
y
i
(
w
T
x
i
+
b
)
>
=
1
i
=
1
,
2
,
3...
,
n
s,t \\ y_i(w^Tx_i + b) >=1 \\ i = 1,2,3...,n
s,tyi(wTxi+b)>=1i=1,2,3...,n
对于 y ( w ′ x + b ) = 1 y(w'x+b)=1 y(w′x+b)=1 的数据点,即下图位于 w ′ x + b = 1 或 w ′ x + b = − 1 w'x+b=1或w'x+b=-1 w′x+b=1或w′x+b=−1上的数据点,我们称之为支持向量,容易知道,所有支持向量,它们也恰好满足 y ( w ′ x + b ) = 1 y(w'x+b)=1 y(w′x+b)=1,而所有不是支持向量的点,有 y ( w ′ x + b ) > 1 y(w'x+b)>1 y(w′x+b)>1.
从原始优化问题到对偶问题
对于上述得到的目标函数,求
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1的最大值相当于求,
∣
∣
w
∣
∣
2
||w||^2
∣∣w∣∣2的最小值,因此,很容易将源来的目标函数转化为:
min
1
2
∣
∣
w
∣
∣
2
s
,
t
y
i
(
w
T
x
i
+
b
)
>
=
1
i
=
1
,
2
,
.
.
.
,
n
\min{\frac{1}{2}}||w||^2 \\ s,t \\ y_i(w^Tx_i + b)>=1 \\ i = 1,2,...,n
min21∣∣w∣∣2s,tyi(wTxi+b)>=1i=1,2,...,n
即变为了一个带约束的凸二次规划问题,按照书上所述可以使用现成的优化计算包,(OP)优化包,求解,但由于SVM的特殊性,一般我们将原问题变换为其的对偶问题,接着在对其对偶问题进行求解,通过对偶问题进行求解,有下面两个原因:
- 一是因为使用对偶问题更容易求解
- 二是因为通过对偶问题求解出现了向量内积的形式,从而能更加自然地引出核函数。
对偶问题,故名思意可以理解为优化等价问题,更一般地,将一个原始目标函数最小化转化为它的对偶函数最大化问题,对于当前优化问题,首先我们写出它的拉格朗日函数:
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 n α i ( y i ( w T x i + b ) − 1 ) L(w,b,\alpha) = \frac{1}{2}||w||^2 - \sum_{i = 1}^n\alpha_i(y_i(w^Tx_i + b) - 1) L(w,b,α)=21∣∣w∣∣2−i=1∑nαi(yi(wTxi+b)−1)
上式很容易满足,当其中有一个约束条件不满足时,
L
L
L的最大值为
∞
\infty
∞(只需令其对应的
α
\alpha
α为
∞
\infty
∞即可),
当所有的约束条件都满足时:
L
L
L的最大值为
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2,此时令所有的
α
\alpha
α为0,因此,实际上原问题等价于:
min
w
,
b
θ
(
w
)
=
min
w
,
b
max
α
i
≥
0
L
(
w
,
b
,
α
)
=
p
∗
\min_{w,b}\theta(w) = \min_{w,b}\max_{\alpha_i\geq0}L(w,b,\alpha) = p^*
w,bminθ(w)=w,bminαi≥0maxL(w,b,α)=p∗
由于这个求解问题不好做,我们一般将原问题的最大值和最小值位置互换以下,(需满足KKT条件)变成原问题的对偶问题:
max
α
i
≥
0
min
w
,
b
L
(
w
,
b
,
α
)
=
d
∗
\max_{\alpha_i\geq0}\min_{w,b}L(w,b,\alpha) = d^*
αi≥0maxw,bminL(w,b,α)=d∗
这样就将原问题的求最小变成对偶问题的求最大,接下来,便可以先求
L
L
L对
w
,
b
w,b
w,b的极小,再求
L
对
α
L对\alpha
L对α的极大:
1、首先求
L
L
L对
w
,
b
w,b
w,b的极小,分别求
L
关于
w
,
b
L关于w,b
L关于w,b的偏导,可以得出:
∂
L
∂
w
=
0
⇒
w
=
∑
i
=
1
n
α
i
y
i
x
i
\frac{\partial L}{\partial w} = 0 \Rightarrow w = \sum_{i = 1}^n\alpha_iy_ix_i
∂w∂L=0⇒w=i=1∑nαiyixi
∂
L
∂
b
=
0
⇒
=
∑
i
=
1
n
α
i
y
i
=
0
\frac{\partial L}{\partial b} = 0 \Rightarrow = \sum_{i = 1}^n\alpha_iy_i = 0
∂b∂L=0⇒=i=1∑nαiyi=0
将上述结果带入L得出:
简要:要学会不断的打磨,公式,并且自己推导公式都行啦的样子与打算。
接着L关于α极大求解α(通过SMO算法求解,此处不做深入)。
max
α
∑
i
=
1
n
α
i
−
1
2
∑
i
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
\max_{\alpha} \sum_{i = 1}^n\alpha_i - \frac{1}{2}\sum_{i,j = 1}^n\alpha_i\alpha_jy_iy_jx^T_ix_j
αmaxi=1∑nαi−21i,j=1∑nαiαjyiyjxiTxj
s
,
t
α
i
≥
0
i
=
1
,
2
,
.
.
.
,
n
s,t \alpha_i \geq 0 \\ i = 1,2,...,n
s,tαi≥0i=1,2,...,n
∑
i
=
1
n
α
i
y
i
=
0
\sum_{i = 1}^n\alpha_i y_i = 0
i=1∑nαiyi=0
最后便可以根据求解出的
α
\alpha
α,计算出
w
,
b
w,b
w,b,从而可以得到分类超平面函数:
在对新的点进行预测时,实际上就是将数据点
x
∗
x*
x∗代入分类函数
f
(
x
)
=
w
′
x
+
b
f(x)=w'x+b
f(x)=w′x+b中,若
f
(
x
)
>
0
f(x)>0
f(x)>0,则为正类,
f
(
x
)
<
0
f(x)<0
f(x)<0,则为负类,根据前面推导得出的
w
与
b
w与b
w与b
,分类函数如下所示,此时便出现了上面所提到的内积形式。
这里 实际上只需计算新样本与支持向量的内积,因为对于非支持向量的数据点,其对应的拉格朗日乘子一定为0,根据最优化理论(K-T条件),对于不等式约束:
y
(
w
′
x
+
b
)
−
1
≥
0
y(w'x+b)-1≥0
y(w′x+b)−1≥0,满足:
核函数
由于上述的超平面只能解决线性可分的问题,对于线性不可分的问题,例如:异或问题,我们需要使用核函数将其进行推广。一般地,解决线性不可分问题时,常常采用映射的方式,将低维原始空间映射到高维特征空间,使得数据集在高维空间中变得线性可分,从而再使用线性学习器分类。如果原始空间为有限维,即属性数有限,那么总是存在一个高维特征空间使得样本线性可分。若
∅
∅
∅代表一个映射,则在特征空间中的划分函数变为:
f
(
x
)
=
w
T
ϕ
(
x
)
+
b
f(x) = w^T\phi(x) + b
f(x)=wTϕ(x)+b
按照同样的方法,先写出新目标函数的拉格朗日函数,接着写出其对偶问题,求
L
L
L关于
W
W
W和
b
b
b的极大值,最后运行SMO求解
α
\alpha
α,可以得出:
原对偶问题变为:
原分类函数变为:
F
(
X
)
=
∑
i
=
1
n
α
i
y
i
<
ϕ
(
x
i
)
,
ϕ
(
x
)
>
+
b
F(X) = \sum_{i = 1}^n\alpha_iy_i<\phi(x_i),\phi(x)> +b
F(X)=i=1∑nαiyi<ϕ(xi),ϕ(x)>+b
求解过程,只涉及到了高维空间中的内积运算,由于特征空间中的维数可能会非常大,例如:若原始空间为二维,映射后的特征空间为5维,若原始空间为三维,映射后的特征空间为19维,之后甚至可能出现无穷维,根本无法进行内积运算,于是便引入了核函数概念。
因此,核函数可以直接计算隐式映射到高维特征空间后的向量内积,而不需要显式地写出映射后的结果,它虽然完成了将特征从低维到高维的转换,但最终却是在低维空间中完成向量内积计算,与高维特征空间中的计算等效(低维计算,高维表现),从而避免了直接在高维空间无法计算的问题。引入核函数后,原来的对偶问题与分类函数则变为:
对偶问题:
分类问题:
f
(
x
)
=
∑
i
=
1
n
α
i
y
i
K
(
x
i
,
x
)
+
b
f(x) = \sum_{i = 1}^n\alpha_iy_iK(x_i,x) + b
f(x)=i=1∑nαiyiK(xi,x)+b
因此,在线性不可分问题中,核函数选择成了支持向量机得最大变数,若选择了不合适的核函数,则意味着将样本映射到了一个不合适的特征空间,则极可能导致性能不佳,同时,核函数需要满足以下必要条件:
由于核函数构造十分困难,通常我们都是从一些常用的核函数中选择,下面列出了几种常用的核函数:
软间隔与支持向量机
前面的讨论中,我们主要解决了两个问题:当数据线性可分时,直接使用最大间隔的超平面划分;当数据线性不可分时,则通过核函数将数据映射到高维特征空间,使之线性可分。然而在现实问题中,对于某些情形还是很难处理,例如数据中有噪声的情形,噪声数据(outlier)本身就偏离了正常位置,但是在前面的SVM模型中,我们要求所有的样本数据都必须满足约束,如果不要这些噪声数据还好,当加入这些outlier后导致划分超平面被挤歪了,如下图所示,对支持向量机**的泛化性能造成很大的影响
**
为了解决这些问题,我们允许某些数据点不满足约束,即可以在一定程度上偏离超平面,同时使得不满足约束的数据点尽可能少,这便印出来软间隔支持向量机概念:
- 允许某些数据点不满足约束 y ( w ′ x + b ) ≥ 1 y(w'x+b)≥1 y(w′x+b)≥1;
- 同时又使得不满足约束的样本尽可能少。
这样的优化目标函数变为:
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m L 0 / 1 ( y i ( w T x i + b ) − 1 ) \min_{w,b}\frac{1}{2}||w||^2 + C\sum_{i = 1}^mL_{0/1}(y_i(w^Tx_i + b) - 1) w,bmin21∣∣w∣∣2+Ci=1∑mL0/1(yi(wTxi+b)−1)
L
0
/
1
=
L_{0/1} =
L0/1=
L
0
/
1
=
{
1
,
z
<
0
0
,
o
t
h
e
r
w
i
s
e
(1)
L_{0/1}= \begin{cases} 1,\quad z< 0\\ 0, otherwise \end{cases} \tag{1}
L0/1={1,z<00,otherwise(1)
如同阶跃函数,0~1损失函数显然效果不是最好的,但是数学不佳,因此,常用其他作为替代损失函数。
支持向量机中的损失函数为hinge损失,引入“松弛变量”,目标函数与约束条件可以写为:
其中 C C C为一个参数,控制着目标函数与新引入正则项之间的权重,这样显然每个样本数据都有一个对应的松弛变量,用以表示该样本不满足约束的程度,将新的目标函数转化为拉格朗日函数得到:
按照与之前相同的方法,先让
L
L
L求关于
w
w
w,
b
b
b以及松弛变量的极小,再使用SMO求出
α
α
α,有:
将
w
w
w带入
L
L
L化简,便得到其对偶问题:
将软间隔下产生的对偶问题与源对偶问题对比可以发现,新的对偶问题只是约束条件中的 α α α多出了一个上限 C C C,其它的完全相同,因此在引入核函数处理线性不可分问题时,便能使用与“硬间隔**”支持向量机完全相同的方**法。
学习心得
有时间好好学一学SMO算法:
大致基本上理解了,有时间把公式好好的推导一遍,并深入理解以下核函数公式,全部将其推导完成都行啦的理由与打算。
好好研究一下,全部将其研究透彻!