机器学习系列之支持向量机
写在前面:本文是笔者复习《机器学习》课程时基于书本及各类参考资料总结出的关于支持向量机(SVM)算法原理的一些个人理解。
文中如有不当之处,望请各位大佬批评指正!
- 线性可分支持向量机与硬间隔最大化
- 线性可分支持向量机:数据线性可分。使用硬间隔最大化。
- 函数间隔和几何间隔
- 间隔最大化
- 学习的对偶算法
- 线性支持向量机与软间隔最大化
- 线性支持向量机:数据近似线性可分。使用软间隔最大化。
- 学习的对偶算法
- 支持向量
- 非线性支持向量机与核函数
- (*)Mercer定理:
- 任何半正定函数都可以作为核函数。
- 核函数 K ( x , z ) K(x,z) K(x,z) 的充要条件是 K K K 矩阵是半正定的。
- (*)Mercer定理:
- (*)解的稀疏性:模型训练完后,大部分样本不需要保留,最终模型仅与支持向量有关。
一、线性可分支持向量机与硬间隔最大化
(1)线性可分支持向量机:
给定线性可分数据集,通过间隔最大化或等价求解相应的凸二次规划问题学习得到的分离超平面
w
∗
⋅
x
+
b
∗
=
0
w^* \cdot x + b^* = 0
w∗⋅x+b∗=0
以及相应的分类决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f(x) = sign(w^* \cdot x + b^*)
f(x)=sign(w∗⋅x+b∗)
(2)函数间隔与几何间隔:
-
函数间隔:表示分类的正确性和可信度
对于给定的训练数据集 T T T 和超平面 ( w , b ) (w,b) (w,b) 关于样本点 ( x i , y i ) (x_i, y_i) (xi,yi) 的函数间隔为
γ ^ i = y i ( w ⋅ x i + b ) \hat{\gamma}_i = y_i(w \cdot x_i + b) γ^i=yi(w⋅xi+b)
超平面 ( w , b ) (w,b) (w,b) 与数据集 T T T 的函数间隔为所有样本点函数间隔的最小值γ ^ = m i n i = 1 , 2 , 3 , … , N γ ^ i \hat{\gamma} = \underset{{i = 1, 2, 3,\dots, N}}{min}\ \hat{\gamma}_i γ^=i=1,2,3,…,Nmin γ^i
-
几何间隔:实例点到超平面的带符号的距离。
对于给定的训练数据集 T T T 和超平面 ( w , b ) (w, b) (w,b) ,定义超平面 ( w , b ) (w, b) (w,b) 关于样本点 ( x i , y i ) (x_i, y_i) (xi,yi) 的几何间隔为
γ i = y i ( w ∥ w ∥ ⋅ x i + b ∥ b ∥ ) \gamma_i = y_i(\frac{w}{\left \| w\right \|} \cdot x_i + \frac{b}{\left \| b\right \|}) γi=yi(∥w∥w⋅xi+∥b∥b)
超平面 ( w , b ) (w,b) (w,b) 与数据集 T T T 的几何间隔为所有样本点几何间隔的最小值
γ = m i n i = 1 , 2 , 3 , … , N γ i \gamma = \underset{{i = 1, 2, 3,\dots, N}}{min}\ \gamma_i γ=i=1,2,3,…,Nmin γi
(3) 间隔最大化:
-
直观解释:不仅能将正负类分开,而且对最难分的点(离超平面最近的点)也有足够大的可信度将其分开。
-
最大间隔准则:
函数间隔形式:
m a x w , b γ ^ ∥ w ∥ s . t . y i ( w ⋅ x i + b ) ≥ γ ^ i = 1 , 2 , 3 , ⋯ , N \underset{w, b}{max}\ \ \frac{\hat{\gamma}}{\left \|w \right \|} \\ s.t. \ \ y_i(w \cdot x_i + b) \ge \hat{\gamma} \ \ \ \ \ i = 1, 2, 3, \cdots , N w,bmax ∥w∥γ^s.t. yi(w⋅xi+b)≥γ^ i=1,2,3,⋯,N几何间隔形式:
m a x w , b γ s . t . y i ( w ∥ w ∥ ⋅ x i + b ∥ b ∥ ) ≥ γ ^ i = 1 , 2 , 3 , ⋯ , N \underset{w, b}{max}\ \ \gamma \\ s.t. \ \ y_i(\frac{w}{\left \|w \right \|} \cdot x_i + \frac{b}{\left \|b \right \|}) \ge \hat{\gamma} \ \ \ \ \ i = 1, 2, 3, \cdots , N w,bmax γs.t. yi(∥w∥w⋅xi+∥b∥b)≥γ^ i=1,2,3,⋯,N
step 1 : 优化问题转化若按比例改变 w , b w, b w,b ,函数间隔也会改变,但这一改变对不等式约束和目标函数的优化没有影响(产生等价的最优
化问题), 因此将 γ ^ = 1 \hat{\gamma} = 1 γ^=1 。代入函数间隔形式的准则后将== m a x 1 ∥ w ∥ max \ \frac{1}{\left \| w\right \|} max ∥w∥1转换 m i n 1 2 ∥ w ∥ 2 min \ \frac{1}{2} \left \| w \right \| ^ 2 min 21∥w∥2==为可以得到将要求解的最优化问题:(凸二次规划问题)
m i n w , b 1 2 ∥ w ∥ 2 s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , 3 , ⋯ , N \underset{w,b}{min} \ \ \frac{1}{2} \left \| w \right \| ^ 2 \\ s.t. \ \ y_i(w \cdot x_i + b) - 1\ge 0, \ \ \ \ \ i = 1, 2, 3, \cdots , N w,bmin 21∥w∥2s.t. yi(w⋅xi+b)−1≥0, i=1,2,3,⋯,N
step 2:最大间隔法- 输入:线性可分数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T = \{(x_1, y_1),(x_2, y_2), \cdots , (x_N, y_N)\} T={(x1,y1),(x2,y2),⋯,(xN,yN)} ,其中 x i ∈ R n x_i \in R^n xi∈Rn , y i ∈ { − 1 , 1 } y_i \in \{ -1, 1\} yi∈{−1,1} .
- 输出:最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
m i n w , b 1 2 ∥ w ∥ 2 s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , 3 , ⋯ , N \underset{w,b}{min} \ \ \frac{1}{2} \left \| w \right \| ^ 2 \\ s.t. \ \ y_i(w \cdot x_i + b) - 1\ge 0, \ \ \ \ \ i = 1, 2, 3, \cdots , N w,bmin 21∥w∥2s.t. yi(w⋅xi+b)−1≥0, i=1,2,3,⋯,N
得到最优解 w ∗ , b ∗ w^*, b^* w∗,b∗ 。(2)由此得到分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^* \cdot x + b^* = 0 w∗⋅x+b∗=0
分类决策函数:
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = sign(w^* \cdot x + b^*) f(x)=sign(w∗⋅x+b∗)
step 3:支持向量和间隔边界-
支持向量:
在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例。
即:使约束条件式等号成立的点:
y i ( w ⋅ x i + b ) − 1 = 0 y_i(w\cdot x_i + b) - 1 = 0 yi(w⋅xi+b)−1=0 -
间隔边界:( H 1 , H 2 H_1, H_2 H1,H2)
- 没有实例点落在 H 1 , H 2 H_1, H_2 H1,H2中间。
- 分离超平面与其平行且位于 H 1 , H 2 H_1, H_2 H1,H2中央。
- H 1 , H 2 H_1, H_2 H1,H2 之间的距离称为间隔。
(4)学习的对偶算法求解
- 原问题与对偶问题等价的条件:
step 1:构建拉格朗日函数
对每一个不等式约束引入拉格朗日乘子 α i ≥ 0 \alpha_i \ge 0 αi≥0, i = 1 , 2 , ⋯ , N i = 1, 2, \cdots ,N i=1,2,⋯,N。
定义拉格朗日函数:(最优化目标函数
f
(
w
)
=
1
2
∥
w
∥
2
f(w) = \frac{1}{2} \left \| w \right \| ^ 2
f(w)=21∥w∥2,等式约束:
L
(
w
,
b
,
a
)
=
f
(
x
)
+
∑
α
i
∗
g
(
x
)
L(w, b, a) = f(x) + \sum\alpha_i * g(x)
L(w,b,a)=f(x)+∑αi∗g(x))
L
(
w
,
b
,
a
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
N
α
i
y
(
i
)
(
w
T
⋅
x
(
i
)
+
b
)
+
∑
i
=
1
N
α
i
L(w, b, a) = \frac{1}{2}\left \|w \right \|^2 - \sum_{i = 1}^N \alpha_iy^{(i)}(w^T \cdot x^{(i)} + b) + \sum_{i = 1}^N\alpha_i
L(w,b,a)=21∥w∥2−i=1∑Nαiy(i)(wT⋅x(i)+b)+i=1∑Nαi
其中
α
=
(
α
1
,
α
2
,
⋯
,
α
N
)
T
\alpha = (\alpha_1, \alpha_2, \cdots, \alpha_N)^T
α=(α1,α2,⋯,αN)T 为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题为极大 极小问题:
m
a
x
α
m
i
n
w
,
b
L
(
w
,
b
,
a
)
\underset{\alpha}{max}\ \underset{w, b}{min}\ L(w, b, a)
αmax w,bmin L(w,b,a)
step 2: 求解拉格朗日函数
1、求 m i n w , b L ( w , b , a ) \underset{w, b}{min} \ L(w,b,a) w,bmin L(w,b,a)
将原函数分别对
w
,
b
w, b
w,b 求偏导数并令其等于0:
∇
w
L
(
w
,
b
,
a
)
=
w
−
∑
i
=
1
N
α
i
y
(
i
)
x
(
i
)
=
0
∇
b
L
(
w
,
b
,
a
)
=
−
∑
i
=
1
N
α
i
y
(
i
)
=
0
\nabla_w L(w, b, a) = w - \sum_{i = 1}^N \alpha_iy^{(i)}x^{(i)} = 0 \\ \nabla_b L(w, b, a) = - \sum_{i = 1}^N \alpha_iy^{(i)} = 0
∇wL(w,b,a)=w−i=1∑Nαiy(i)x(i)=0∇bL(w,b,a)=−i=1∑Nαiy(i)=0
得:
w
=
∑
i
=
1
N
α
i
y
(
i
)
x
(
i
)
∑
i
=
1
N
α
i
y
(
i
)
=
0
w = \sum_{i = 1}^N \alpha_iy^{(i)}x^{(i)} \\ \sum_{i = 1}^N \alpha_i y^{(i)} = 0
w=i=1∑Nαiy(i)x(i)i=1∑Nαiy(i)=0
将上述式子代入拉格朗日函数得出
m
i
n
w
,
b
L
(
w
,
b
,
a
)
\underset{w, b}{min} \ L(w,b,a)
w,bmin L(w,b,a):
m
i
n
w
,
b
L
(
w
,
b
,
a
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
(
i
)
y
(
j
)
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
\underset{w, b}{min} L(w, b, a) = -\frac{1}{2} \sum_{i = 1}^N \sum_{j = 1}^N \alpha_i\alpha_jy^{(i)}y^{(j)}(x_i \cdot x_j) + \sum_{i = 1}^N \alpha_i
w,bminL(w,b,a)=−21i=1∑Nj=1∑Nαiαjy(i)y(j)(xi⋅xj)+i=1∑Nαi
2、求
m
i
n
w
,
b
L
(
w
,
b
,
a
)
\underset{w, b}{min} \ L(w,b,a)
w,bmin L(w,b,a)对
α
\alpha
α 的极大,等价于对其对偶问题求极小 (*)
m
a
x
α
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
(
i
)
y
(
j
)
(
x
(
i
)
⋅
x
(
j
)
)
s
.
t
.
∑
i
=
1
N
α
i
y
(
i
)
=
0
α
i
≥
0
,
i
=
1
,
2
,
⋯
,
N
\underset{\alpha}{max} \ \ \sum_{i = 1}^N \alpha_i -\frac{1}{2} \sum_{i = 1}^N \sum_{j = 1}^N \alpha_i\alpha_jy^{(i)}y^{(j)}(x^{(i)} \cdot x^{(j)}) \\ s.t. \sum_{i = 1}^N \alpha_iy^{(i)} = 0\\ \alpha_i \ge 0, \ i = 1, 2, \cdots ,N
αmax i=1∑Nαi−21i=1∑Nj=1∑Nαiαjy(i)y(j)(x(i)⋅x(j))s.t.i=1∑Nαiy(i)=0αi≥0, i=1,2,⋯,N
求出最优解
α
∗
=
(
α
1
∗
,
α
2
∗
,
⋯
,
α
N
∗
)
T
\alpha^* = (\alpha_1^*,\alpha_2^*, \cdots, \alpha_N^*)^T
α∗=(α1∗,α2∗,⋯,αN∗)T 。
3、计算
w
∗
,
b
∗
w^*, b^*
w∗,b∗
w
∗
=
∑
i
=
1
N
α
i
y
i
x
i
w^* = \sum_{i = 1}^N \alpha_i y_ix_i \\
w∗=i=1∑Nαiyixi
选择
α
i
∗
\alpha_i^*
αi∗的一个正分量,计算
b
∗
=
y
j
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
j
)
b^* = y_j - \sum_{i = 1}^N \alpha_i^*y_i(x_i \cdot x_j)
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
最终得出分离超平面和分类决策函数:
w
∗
⋅
x
+
b
∗
=
0
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
w^* \cdot x + b^* = 0 \\ f(x) = sign(w^* \cdot x + b^*)
w∗⋅x+b∗=0f(x)=sign(w∗⋅x+b∗)
最终模型:
f
(
x
)
=
∑
i
=
1
m
α
i
y
i
x
i
T
x
+
b
f(x) = \sum_{i = 1}^m \alpha_i y_ix_i^T x + b \\
f(x)=i=1∑mαiyixiTx+b
KKT条件:
{
α
i
≥
0
,
y
i
f
(
x
i
)
≥
1
,
α
i
(
y
i
f
(
x
i
)
−
1
)
=
0.
\left\{ \begin{matrix} \alpha_i \ge 0 ,\\ y_if(x_i) \ge 1, \\ \alpha_i(y_if(x_i) - 1) = 0. \end{matrix}\right.
⎩
⎨
⎧αi≥0,yif(xi)≥1,αi(yif(xi)−1)=0.
(*)解的稀疏性:模型训练完后,大部分样本不需要保留,最终模型仅与支持向量有关。
二、线性支持向量机与软间隔最大化
软间隔整体求解方式与硬间隔类似。仅多出一个惩罚系数: ε i \varepsilon_i εi 。
step 1:优化目标函数
m
i
n
w
,
b
,
ε
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
ε
i
s
.
t
.
y
(
i
)
(
w
T
x
(
i
)
+
b
)
≥
1
−
ε
i
,
i
=
1
,
⋯
,
m
ε
i
≥
0
,
i
=
1
,
⋯
,
m
\underset{w,b,\varepsilon}{min} \ \frac{1}{2}\|w\|^2 + C \sum_{i = 1}^m \varepsilon_i \\ \ s.t. \ y^{(i)}(w^Tx^{(i)} + b) \ge 1- \varepsilon_i \ , i = 1, \cdots , m \\ \ \varepsilon_i \ge 0, \ i = 1, \cdots , m
w,b,εmin 21∥w∥2+Ci=1∑mεi s.t. y(i)(wTx(i)+b)≥1−εi ,i=1,⋯,m εi≥0, i=1,⋯,m
step 2:构建拉格朗日函数( f ( x ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ε i f(x) = \frac{1}{2}\|w\|^2 + C \sum_{i = 1}^m \varepsilon_i f(x)=21∥w∥2+C∑i=1mεi, g ( x ) = − ( y ( i ) ( w T x ( i ) + b ) − 1 + ε i ) g(x) = - (y^{(i)}(w^Tx^{(i)} + b) - 1+ \varepsilon_i) g(x)=−(y(i)(wTx(i)+b)−1+εi))
L ( w , b , ε , α , γ ) = f ( x ) + ∑ i = 1 m α i g ( x ) + ∑ i = 1 m γ i h ( x ) L(w, b, \varepsilon, \alpha, \gamma) =f(x) + \sum_{i = 1}^{m}\alpha_i g(x) + \sum_{i = 1}^{m}\gamma_i h(x) L(w,b,ε,α,γ)=f(x)+i=1∑mαig(x)+i=1∑mγih(x)
将具体式子代入公式,得:
L
(
w
,
b
,
ε
,
α
,
γ
)
=
1
2
∥
w
∥
2
+
C
∑
i
=
1
m
ε
i
−
∑
i
=
1
m
α
i
(
y
(
i
)
(
w
T
x
(
i
)
+
b
)
−
1
+
ε
i
)
−
∑
i
=
1
m
γ
i
ε
i
L(w, b, \varepsilon, \alpha, \gamma) = \frac{1}{2}\|w\|^2 + C \sum_{i = 1}^m \varepsilon_i -\sum_{i = 1}^{m}\alpha_i (y^{(i)}(w^Tx^{(i)} + b) - 1+ \varepsilon_i) - \sum_{i = 1}^{m}\gamma_i \varepsilon_i
L(w,b,ε,α,γ)=21∥w∥2+Ci=1∑mεi−i=1∑mαi(y(i)(wTx(i)+b)−1+εi)−i=1∑mγiεi
step 3:分别对
w
,
b
,
γ
w, b, \gamma
w,b,γ 求导置零
∇
w
L
(
w
,
b
,
ε
,
α
,
γ
)
⇒
w
=
∑
i
=
1
N
α
i
y
(
i
)
x
(
i
)
∇
b
L
(
w
,
b
,
ε
,
α
,
γ
)
⇒
∑
i
=
1
N
α
i
y
(
i
)
=
0
∇
ε
i
L
(
w
,
b
,
ε
,
α
,
γ
)
⇒
C
=
α
i
+
γ
i
⇒
α
i
≤
C
\nabla_w L(w, b, \varepsilon ,\alpha, \gamma) \Rightarrow w = \sum_{i = 1}^N \alpha_i y^{(i)}x^{(i)} \\ \nabla_b L(w, b, \varepsilon ,\alpha, \gamma) \Rightarrow \sum_{i = 1}^N \alpha_iy^{(i)} = 0 \\ \\ \nabla_{\varepsilon_i} L(w, b, \varepsilon ,\alpha, \gamma) \Rightarrow C = \alpha_i + \gamma_i \Rightarrow \alpha_i \le C
∇wL(w,b,ε,α,γ)⇒w=i=1∑Nαiy(i)x(i)∇bL(w,b,ε,α,γ)⇒i=1∑Nαiy(i)=0∇εiL(w,b,ε,α,γ)⇒C=αi+γi⇒αi≤C
step 4:带回拉格朗日函数,得:
m
a
x
α
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
(
i
)
y
(
j
)
(
x
(
i
)
⋅
x
(
j
)
)
s
.
t
.
∑
i
=
1
N
α
i
y
(
i
)
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
⋯
,
N
\underset{\alpha}{max} \ \ \sum_{i = 1}^N \alpha_i -\frac{1}{2} \sum_{i = 1}^N \sum_{j = 1}^N \alpha_i\alpha_jy^{(i)}y^{(j)}(x^{(i)} \cdot x^{(j)}) \\ s.t. \sum_{i = 1}^N \alpha_iy^{(i)} = 0\\ 0 \le \alpha_i \le C, \ i = 1, 2, \cdots ,N
αmax i=1∑Nαi−21i=1∑Nj=1∑Nαiαjy(i)y(j)(x(i)⋅x(j))s.t.i=1∑Nαiy(i)=00≤αi≤C, i=1,2,⋯,N
根据KKT条件可推得最终模型仅与支持向量有关, 也即hinge损失函数依然保持了支持向量机解的稀疏性。