重看SVM时,同事过来看了一眼:“还看SVM呢?SVM已经被淘汰了”,有点伤感,上学那会SVM还算是主流的分类器,所有机器学习课也逃不过SVM。随着ensemble tree以及神经网络等方法的普及,svm在模型精确度上也丧失了优势地位,SVM应当是少数的从几何出发建立的模型,似乎拓展性不是很强,但是它仍然是我们不能避过去的模型,我们基本上是从SVM中开始学习机器学习中的一些概念,比如:结构经验风险最小化,拉格朗日乘子和对偶,核函数,VC维等。
回想logistic regression(LR)模型,它将特征值x进行线性组合,然后通过sigmoid函数,将线性拟合值压缩到(0,1)之间:
p
(
Y
=
1
∣
x
;
θ
)
=
1
1
+
e
−
θ
T
x
p(Y=1|x;\theta) = \frac{1}{1+e^{-\theta^Tx}}
p(Y=1∣x;θ)=1+e−θTx1
θ
T
x
>
0
\theta^Tx > 0
θTx>0则
y
=
1
y=1
y=1,
θ
T
x
<
0
\theta^Tx <0
θTx<0则
y
=
0
y=0
y=0, 这其实是寻找了一个超平面
θ
T
X
=
0
\theta^TX=0
θTX=0, 将数据点分开,而
θ
T
x
\theta^Tx
θTx为数据的置信度,
θ
T
x
\theta^Tx
θTx越高,表示数据点离超平面越远,然后LR通过一个sigmoid函数,将
θ
T
x
\theta^Tx
θTx转换为了概率的形式,以最大似然函数作为优化目标,等同于最大化所有数据点的置信度。
我们会看到,SVM也是寻找一个数据的分离超平面,与LR不同的是,SVM是通过最大化分离间隔来寻找这个超平面。
如上图,如果要找一个超平面分离方块和圆圈数据点,除了超平面
H
H
H之外,还可以有很多其他的超平面。那么怎么去唯一确定这个
H
H
H呢?从LR上我们知道,离超平面越远的点,我们越有把握确定其类别,而正是在超平面附近的点,容易被超平面划分错误。和LR要求所有数据点都远离分离超平面不同,SVM更侧重分离超平面的附近的点,因此最大化离超平面最近的点的距离,上图中的平面
H
1
H1
H1、
H
2
H2
H2之间的距离越远,那么超平面
H
H
H越能更健壮的划分数据。因此SVM就是要找一个超平面能够使得
H
1
H1
H1和
H
2
H2
H2的间隔最大。
H 1 H1 H1和 H 2 H2 H2这两个平面分别由超平面 H H H决定方向,由两侧离超平面 H H H最近的点确定截距,如图上 H 1 H1 H1和 H 2 H2 H2分别有两个红色数据点和蓝色数据点,这两个数据点就叫做支持向量,支持向量机的名字也从这里而来。
下面我们就来看看SVM是怎么表示间隔,确定这三个平面的,首先引入函数间隔和几何间隔的概念。
函数间隔和几何间隔
给定一个训练样本
(
x
(
i
)
,
y
(
i
)
)
(x^{(i)},y^{(i)})
(x(i),y(i)),
x
x
x是特征,
y
y
y是类别标签。
i
i
i表示第
i
i
i个样本。我们定义函数间隔如下:
γ
^
(
i
)
=
y
(
i
)
(
w
T
x
(
i
)
+
b
)
\hat\gamma^{(i)}= y^{(i)}(w^Tx^{(i)}+b)
γ^(i)=y(i)(wTx(i)+b)
当
y
(
i
)
y^{(i)}
y(i)和
w
T
x
(
i
)
+
b
w^Tx^{(i)}+b
wTx(i)+b同号时,
γ
^
(
i
)
=
∣
w
T
x
(
i
)
+
b
∣
\hat\gamma^{(i)}=|w^Tx^{(i)}+b|
γ^(i)=∣wTx(i)+b∣
上图中点
A
A
A到分离超平面的距离为点
A
A
A与其在平面上映射的点
B
B
B的距离,从几何的知识我们可以知道:
γ
^
(
i
)
=
w
T
x
(
i
)
+
b
∥
w
∥
\hat\gamma^{(i)}= \frac{w^Tx^{(i)}+b}{\|w\|}
γ^(i)=∥w∥wTx(i)+b
当
∥
w
∥
=
1
\|w\|=1
∥w∥=1时,有几何间隔=函数间隔。
随着
w
w
w的收缩,我们可以找到很多超平面,为了解的唯一性,我们可以提前设定
∥
w
∥
=
1
\|w\|=1
∥w∥=1
我们的目标是要最大化
H
1
H1
H1和
H
2
H2
H2之间的间隔。那么这个间隔是什么呢?从全局角度看,这看间隔为所有数据点离超平面
H
H
H最近的点,即:
γ
^
=
min
i
=
1
,
.
.
.
,
m
γ
^
i
\hat \gamma = \min_{i=1,...,m}\hat\gamma_i
γ^=mini=1,...,mγ^i
则全局优化目标为:
max
w
,
b
,
γ
γ
\max_{w,b,\gamma} \gamma
maxw,b,γγ
s
.
t
.
y
i
(
w
i
x
+
b
)
≥
γ
s.t. y_i(w_ix+b)\geq \gamma
s.t.yi(wix+b)≥γ
∥
w
∥
=
1
\|w\|=1
∥w∥=1
因为
∥
w
∥
=
1
\|w\|=1
∥w∥=1不是凸函数,所以事先要处理一下,考虑函数间隔和几何间隔之间的关系,
γ
=
γ
^
∥
w
∥
\gamma = \frac{\hat \gamma}{\|w\|}
γ=∥w∥γ^,缩放w,b不会影响最终的结果,原优化目标等同于:
max
w
,
b
,
γ
γ
∥
w
∥
\max_{w,b,\gamma} \frac{\gamma}{\|w\|}
maxw,b,γ∥w∥γ
s
.
t
.
y
i
(
w
i
x
+
b
)
≥
γ
s.t. y_i(w_ix+b)\geq \gamma
s.t.yi(wix+b)≥γ
为了简便,假设
γ
=
1
\gamma=1
γ=1,并且
1
/
∥
w
∥
1/\|w\|
1/∥w∥也不是凸函数,最大化
1
/
∥
w
∥
1/\|w\|
1/∥w∥就是最小化
∥
w
∥
2
\|w\|^2
∥w∥2,则最终的优化目标为:
max
w
,
b
∥
w
∥
2
\max_{w,b} \|w\|^2
w,bmax∥w∥2
s
.
t
.
y
i
(
w
i
x
+
b
)
≥
1
s.t. y_i(w_ix+b)\geq 1
s.t.yi(wix+b)≥1
优化方法
目标函数是一个有约束的凸优化优化方法,改写约束函数,加入拉格朗日乘子之后的优化目标为:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
+
∑
i
α
i
(
1
−
y
i
(
w
i
x
i
+
b
)
)
L(w,b,\alpha)=\frac{1}{2}\|w\|^2+\sum_i\alpha_i(1-y_i(w_ix_i+b))
L(w,b,α)=21∥w∥2+i∑αi(1−yi(wixi+b))
然后按照对偶问题的求解步骤来一步步进行:
d
∗
=
max
α
,
β
:
α
i
≥
0
min
w
L
(
w
,
α
,
β
)
d^*=\max_{\alpha,\beta:\alpha_i\geq0} \min_wL(w,\alpha,\beta)
d∗=maxα,β:αi≥0minwL(w,α,β)
首先固定
α
\alpha
α,求解
L
(
w
,
α
,
β
)
L(w,\alpha,\beta)
L(w,α,β)的最小值。
∇
w
L
(
w
,
b
,
α
)
=
\nabla_wL(w,b,\alpha)=
∇wL(w,b,α)=
待续…
参考: