机器学习 | 机器学习之巅SVM系列(二)
本文记录了SVM的数学模型
文章目录
一、什么是支持向量机
对于二分类问题,解决思路无非是找到合适的超平面,能够将样本数据划分在超平面两侧以便实现分类。
对于线性分类器而言,如逻辑回归LR,我们最终能够找到合适的权重w及偏置b,构成
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0的超平面,如下图左图中的蓝实线,或蓝虚线,这取决于模型回归后的结果。
支持向量机模型也是类似,我们最终也能够找到合适的超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0,且关于此超平面还能够找到距超平面存有一定间隔的成对称的正反两个的超平面 w T x + b = 1 w^Tx+b=1 wTx+b=1, w T x + b = − 1 w^Tx+b=-1 wTx+b=−1。所有分类为正的样本将划分在 w T x + b = 1 w^Tx+b=1 wTx+b=1的一侧,所有分类为负的样本将划分在 w T x + b = − 1 w^Tx+b=-1 wTx+b=−1的一侧。
而处于最大间隔超平面上的“点”称之为支持向量。
正反两个超平面之间的间隔称之为Margin,易知,间隔越大,分类的鲁棒性越好。因此,支持向量机的优化目标即最大化间隔Margin,这里先给出结论:
M a r g i n = 2 ∣ ∣ w ∣ ∣ 2 Margin=\frac{2}{||w||_2} Margin=∣∣w∣∣22
二、函数间隔与几何间隔
支持向量机的优化目标即优化支持向量到超平面的间隔Margin,那么Margin该如何衡量呢?
常用的间隔定义有两种, 话不多说,直接上结论:
- 函数间隔 γ ′ = y ( w T x + b ) \gamma' = y(w^Tx+b) γ′=y(wTx+b)
- 几何间隔 γ = y ( w T x + b ) ∣ ∣ w ∣ ∣ 2 \gamma = \frac{y(w^Tx+b)}{||w||_2} γ=∣∣w∣∣2y(wTx+b)
可以看出,几何间隔区别于函数间隔的地方在于分母,第一感觉像是将函数间隔做了标准化处理!这里先不做探讨,得知结果的我们再来看看“间隔”的求解。
Q:点到函数的距离公式是什么?
我们是否还记得,在高中时期如何求解点到直线的距离?即给定
a
x
+
b
y
+
c
=
0
ax+by+c=0
ax+by+c=0,点到直线的距离公式如下图所示:
点到直线的距离
d
=
∣
a
x
0
+
b
y
0
+
c
∣
a
2
+
b
2
d = \frac {|ax_0 + by_0+c|}{\sqrt {a^2+b^2}}
d=a2+b2∣ax0+by0+c∣,对应到
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0的问题中来,
d
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
d=\frac{|w^Tx+b|}{||w||}
d=∣∣w∣∣∣wTx+b∣;
细心的同学肯定会发现,上面给出的函数间隔的分子是 y ( w T x + b ) y(w^Tx+b) y(wTx+b),而点到直线的距离的分子是 ∣ w T x + b ∣ |w^Tx+b| ∣wTx+b∣
易知,在二分类问题中,标签y要么是1,要么是-1,当w’x+b>0时,表示x在超平面的一侧(正类,类标为1),而当w’x+b<0时,则表示x在超平面的另外一侧(负类,类别为-1),因此 y ( w T x + b ) y(w^Tx+b) y(wTx+b)的正负性恰能表示数据点x是否被分类正确。于是便引出了函数间隔的定义(functional margin):
为什么要采用几何间隔?
假如我们对参数 w w w和 b b b放大或缩小C倍,对超平面,函数间隔,几何间隔是否有影响?
-
对超平面的影响
由超平面的解析式: w T x + b = 0 w^Tx+b=0 wTx+b=0
方程两边同时乘C: C w T x + C b = 0 Cw^Tx+Cb=0 CwTx+Cb=0显然以上两个方程的解是一致的,超平面没有发生变化。换句话说,参数 w w w和 b b b同比例缩放对超平面并没有影响。
-
对函数间隔的影响
这意味着函数间隔也会放大和缩小相同的倍数。 -
对几何间隔的影响
这意味着几何间隔不变。
怎样定义最大间隔
SVM 的模型是让所有点到超平面的距离大于一定的距离,也就是所有的分类点要在各自类别的支持向量两边。我们只需要定义支持向量到超平面的距离最大化即可。先上最大间隔的定义:
可以看出,这是一个带有约束条件的优化问题。
思考一下上面我们的讲的,当分子
γ
′
=
1
\gamma'=1
γ′=1时,几何间隔就变成了
r
=
1
∣
∣
w
∣
∣
2
r=\frac{1}{||w||_2}
r=∣∣w∣∣21
如图所示,
方程两边同时除以
ϵ
\epsilon
ϵ,即
w
=
w
′
ϵ
w=\frac{w'}{\epsilon}
w=ϵw′,
b
=
b
′
ϵ
b=\frac{b'}{\epsilon}
b=ϵb′
则
H
1
−
H
2
H_1-H_2
H1−H2,我们得到
其中,
w
w
w表示超平面的法向量,
(
x
+
−
x
−
)
(x_+-x_-)
(x+−x−)表示沿x轴方向的向量,则这两个向量的内积是:
我们把上面的向量内积移植到SVM分类问题中:
可见,
继续化简
至此,SVM最大间隔的定义被证明了出来。
SVM的优化目标
等价于:
是不是非常眼熟,至此,我们将SVM的优化问题转化为上一文(机器学习之巅SVM系列(一))中的带有约束条件的优化问题!
求解最大间隔
机器学习之巅SVM系列(一)
上文中提到,解决带有约束条件的优化问题,主要步骤如下:
- 转化为拉格朗日函数
- 转化为对偶问题
- 简化对偶问题
- SMO 算法求解 α \alpha α
- 根据 α \alpha α求解出 w w w和 b b b
转为拉格朗日函数
根据凸优化理论,代价函数满足KKT条件,我们可以通过拉格朗日函数将我们的优化目标转化为无约束的优化函数:
由于引入了拉格朗日函数,我们的优化目标变成:
转为对偶问题
这个拉格朗日函数满足KKT条件,我们可以通过拉格朗日对偶将该问题转化为等价的对偶问题来求解。我们可以先求优化函数对于
w
w
w和
b
b
b的极小值。接着再求拉格朗日乘子
α
\alpha
α的极大值,即:
简化对偶问题
首先我们来求
w
w
w和
b
b
b的极小值,即
这个极值我们可以通过对
w
w
w和
b
b
b分别求偏导数得到:
我们已经求得了
w
w
w和
b
b
b的关系,带入优化函数
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)消去
w
w
w。我们定义:
推导过程如下。。。可选择性观看:
从上面可以看出,通过对
w
,
b
w,b
w,b极小化以后,我们的优化函数
ϕ
(
α
)
\phi(\alpha)
ϕ(α)仅仅只有
α
\alpha
α向量做参数。只要我们能够极大化
ϕ
(
α
)
\phi(\alpha)
ϕ(α) ,就可以求出此时对应的
α
\alpha
α ,进而求出
w
,
b
w,b
w,b 。
可以去掉负号,即为等价的极小化问题如下:
此时,就该考虑如何求解出
α
\alpha
α,引出下一节SMO算法!
SMO算法求解 α \alpha α
只要我们可以求出上式极小化时对应的 α \alpha α向量就可以求出 w w w和 b b b了 (需要用到SMO算法,攀登传统机器学习的珠峰-SVM (下)会讲到)。在这里,我们假设通过SMO算法,我们得到了对应的 α \alpha α的值 。
根据 α \alpha α求解出 w w w和 b b b
那么我们根据对偶问题的简化结论,可求得对应的
w
w
w
再求出 b 我们就大功告成啦。注意到,对于支持向量
(
x
s
,
y
s
)
(x_s,y_s)
(xs,ys),都有
将
w
∗
w^*
w∗带入上式即可得到
解得
假设我们有 S 个支持向量,则对应我们求出 S 个
b
∗
b^*
b∗,然后将其平均值作为最后的结果。
支持向量如何得到
根据KKT条件中的对偶互补条件:
如何
α
>
0
\alpha>0
α>0则有
y
i
(
w
T
x
i
+
b
)
=
1
y_i(w^Tx_i+b)=1
yi(wTxi+b)=1,即点在支持向量上,否则如果
α
=
0
\alpha=0
α=0,则有
y
i
(
w
T
x
i
+
b
)
>
=
1
y_i(w^Tx_i+b)>=1
yi(wTxi+b)>=1,即样本在支持向量上或者已经被正确分类。
总结
线性可分的SVM算法过程
输入是 m 个线性可分的样本 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) (x_1,y_1), (x_2,y_2),...,(x_m,y_m) (x1,y1),(x2,y2),...,(xm,ym)
其中x为n维特征向量。y为二元分类结果1或-1
输出是分离超平面的参数 w ∗ w^* w∗和 b ∗ b^* b∗的分类决策函数
算法过程如下:
1). 构造损失函数
2). 根据SMO算出
α
∗
\alpha^*
α∗
3). 计算
w
∗
w^*
w∗
4). 找出所有的 S 个支持向量
(
x
s
,
y
s
)
(x_s,y_s)
(xs,ys) ,计算出每个支持向量
(
x
s
,
y
s
)
(x_s,y_s)
(xs,ys)对应的
b
s
b_s
bs
取平均得到b
5). 最终的分类决策函数为
–sign代表二分类的标签