第一次听说支持向量机这个名词或许有点懵,这好像有点难以理解这个算法到底是干什么的。其实svm这个算法这个算法是用来分类的。目的是找到一个超平面然后把一堆数据划分成不同类别。映射到二维数据上面,那个超平面就是一条线了。如下图所示:
我们也能看到有很多的线可以划分这两类数据,那我们的目的就是要找一条类似与红色线的划分线。为什么呢?因为这样红线划分的时候划分更清晰,两边留出的“空隙”更多,更平均。因为我们在实际数据中会有很多的噪声(不合理数据),像红色线那样的划分超平面就会对样本的“容忍”性最好,更专业一点的说法就是鲁棒性最好,对未见示例的泛化能力最强。
1、间隔
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0,该方程用来表示超平面。由欧式几何知识可知(了解即可),空间中任意一点到超平面的距离
r
r
r
r
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
r=\frac{|w^Tx+b|}{||w||}
r=∣∣w∣∣∣wTx+b∣
我们一般对绝对值这个符号不怎么感冒,所以我们可以再将式子转换一下。
r
=
y
i
(
w
T
x
i
+
b
)
∣
∣
w
∣
∣
,
y
i
∈
(
−
1
,
+
1
)
r=\frac{y_i(w^Tx_i+b)}{||w||},y_i\in{(-1,+1)}
r=∣∣w∣∣yi(wTxi+b),yi∈(−1,+1)
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)就代表一个样本。
y
i
y_i
yi就代表类别种类。
2、间隔最大化
为了让鲁棒性更强,我们就要间隔最大化。
令
d
=
m
i
n
(
r
)
=
m
i
n
y
i
(
w
T
x
i
+
b
)
∣
∣
w
∣
∣
d = min(r) = min\frac{y_i(w^Tx_i+b)}{||w||}
d=min(r)=min∣∣w∣∣yi(wTxi+b)其实
d
d
d就是离超平面最近的那一点离超平面的距离。
为了让间隔最大化就需要
m
a
x
(
d
)
max(d)
max(d),所以我们就可以得到
γ
=
m
a
x
(
2
d
)
,
y
i
(
w
T
x
i
+
b
)
∣
∣
w
∣
∣
≥
d
,
d
>
0
\gamma=max(2d), \frac{y_i(w^Tx_i+b)}{||w||}≥d,d>0
γ=max(2d),∣∣w∣∣yi(wTxi+b)≥d,d>0
看着这个式子还是比较复杂,还能再简练一点。
再令
d
^
=
∣
∣
w
∣
∣
d
\widehat{d}=||w||d
d
=∣∣w∣∣d
γ
=
m
a
x
2
d
^
∣
∣
w
∣
∣
,
y
i
(
w
T
x
i
+
b
)
≥
d
^
,
d
^
≥
0
\gamma=max\frac{2\widehat{d}}{||w||},y_i(w^Tx_i+b)≥\widehat{d},\widehat{d}≥0
γ=max∣∣w∣∣2d
,yi(wTxi+b)≥d
,d
≥0
又因为
d
^
\widehat{d}
d
只是一个常数,所以它的取值完全不会影响最优化时
w
,
b
w,b
w,b的求解。那么我们可以将
d
^
\widehat{d}
d
设置为1.
所以,
γ
=
m
a
x
2
∣
∣
w
∣
∣
,
y
i
(
w
T
x
i
+
b
)
≥
1
,
d
^
≥
0
\gamma=max\frac{2}{||w||},y_i(w^Tx_i+b)≥1,\widehat{d}≥0
γ=max∣∣w∣∣2,yi(wTxi+b)≥1,d
≥0为了下一步求解更方便,我们将
γ
\gamma
γ转成一个凸函数的形式,这样我们就可以利用拉格朗日乘子法去求解凸优化问题了。
γ
=
m
a
x
∣
∣
w
∣
∣
2
2
,
y
i
(
w
T
x
i
+
b
)
≥
1
,
d
^
≥
0
\gamma=max\frac{||w||^2}{2},y_i(w^Tx_i+b)≥1,\widehat{d}≥0
γ=max2∣∣w∣∣2,yi(wTxi+b)≥1,d
≥0
至此,svm的原型推导就结束了。