支持向量机( S V M SVM SVM)
1 导读部分
- S V M SVM SVM是一种二分类模型
- S V M SVM SVM的基本模型是定义在特征空间上的间隔最大的线性分类器
- S V M SVM SVM还包括核技巧,这使得它成为非线性分类器
- S V M SVM SVM的学习策略是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题
-
S
V
M
SVM
SVM模型由简至繁的分类:
- 线性可分支持向量机:训练数据线性可分,通过硬间隔最大化,学习一个线性的分类器
- 线性支持向量机:训练数据近似线性可分,通过软间隔最大化,学习一个线性的分类器
- 非线性支持向量机:训练数据线性不可分,通过核技巧和软间隔最大化,学习一个非线性的分类器
2 线性可分支持向量机与硬间隔最大化
一个特征空间上的数据集:
-
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中 x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } x_{i} \in \mathcal{X}=\mathbf{R}^{n},y_{i} \in \mathcal{Y}=\{+1,-1\} xi∈X=Rn,yi∈Y={+1,−1}, i = 1 , 2 , ⋯ , N i=1,2, \cdots, N i=1,2,⋯,N, x i x_i xi是第 i i i个特征向量,也称为实例, y i y_i yi为 x i x_i xi的类别标记
-
当 y = + 1 y=+1 y=+1时,称 x i x_i xi为正例;当 y = − 1 y=-1 y=−1时,称 x i x_i xi为正例
-
( x i , y i ) (x_i,y_i) (xi,yi)为样本点,假设数据集是线性可分的
-
分离超平面为: w ⋅ x + b = 0 w \cdot x+b=0 w⋅x+b=0,由法向量 w w w和截距 b b b决定,由 ( w , b ) (w, b) (w,b)表示;将特征空间分为两部分:正类和负类
函数间隔和几何间隔:
-
函数间隔:
- 给定数据集 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 ⋅ x i + b ) \hat{\gamma}_{i}=y_{i}\left(w \cdot x_{i}+b\right) γ^i=yi(w⋅xi+b)
- 函数间隔可以表示分类预测的正确性及确信度
- 定义超平面 ( w , b ) (w,b) (w,b)关于训练数据集 T T T的函数间隔为超平面 ( w , b ) (w,b) (w,b)关于 T T T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔之和最小值,即: γ ^ = min i = 1 , ⋯ , N γ ^ i \hat \gamma=\displaystyle \min_{i=1,\cdots,N}\hat\gamma_i γ^=i=1,⋯,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 ∥ w ∥ ) \gamma_{i}=y_{i}\left(\frac{w}{\|w\|} \cdot x_{i}+\frac{b}{\|w\|}\right) γi=yi(∥w∥w⋅xi+∥w∥b)
- 几何间隔对法向量 w w w和截距 b b b做了规范化处理,同除 w w w的 L 2 L_2 L2范数,是样本点到超平面带符号的距离
- 定义超平面 ( w , b ) (w,b) (w,b)关于训练数据集 T T T的函数间隔为超平面 ( w , b ) (w,b) (w,b)关于 T T T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔之和最小值,即: γ = min i = 1 , ⋯ , N γ i \gamma=\displaystyle \min_{i=1,\cdots,N}\gamma_i γ=i=1,⋯,Nminγi
-
函数间隔和几何间隔的关系: γ i = γ ^ i ∥ w ∥ \gamma_{i}=\frac{\hat{\gamma}_{i}}{\|w\|} γi=∥w∥γ^i, γ = γ ^ ∥ w ∥ \gamma=\frac{\hat{\gamma}}{\|w\|} γ=∥w∥γ^
间隔最大化:
-
支持向量机学习:正确分类训练数据集+找到几何间隔最大的分离超平面(以获得比较好的泛化能力),这个超平面是唯一的
-
求函数间隔最大化的超平面:
max w , b γ s.t. y i ( w ∥ w ∥ ⋅ x i + b ∥ w ∥ ) ⩾ γ , i = 1 , 2 , ⋯ , N \begin{array}{ll}{\displaystyle\max _{w, b}} & {\gamma} \\ {\text { s.t. }} & {y_{i}\left(\frac{w}{\|w\|} \cdot x_{i}+\frac{b}{\|w\|}\right) \geqslant \gamma, \quad i=1,2, \cdots, N}\end{array} w,bmax s.t. γyi(∥w∥w⋅xi+∥w∥b)⩾γ,i=1,2,⋯,N -
求几何间隔最大化的超平面:
max w , b γ ^ ∥ w ∥ s.t. y i ( w ⋅ x i + b ) ⩾ γ ^ , i = 1 , 2 , ⋯ , N \begin{array}{cl}{\displaystyle\max _{w, b}} & {\frac{\hat{\gamma}}{\|w\|}} \\ {\text { s.t. }} & {y_{i}\left(w \cdot x_{i}+b\right) \geqslant \hat{\gamma}, \quad i=1,2, \cdots, N}\end{array} w,bmax s.t. ∥w∥γ^yi(w⋅xi+b)⩾γ^,i=1,2,⋯,N -
该优化问题与几何间隔 γ ^ \hat{\gamma} γ^的取值无关,故等价优化问题为:
min w , b 1 2 ∥ w ∥ 2 s.t. y i ( w ⋅ x i + b ) − 1 ⩾ 0 , i = 1 , 2 , ⋯ , N \color{red} \begin{array}{ll}{\displaystyle\min _{w, b}} & {\frac{1}{2}\|w\|^{2}} \\ {\text { s.t. }} & {y_{i}\left(w \cdot x_{i}+b\right)-1 \geqslant 0, \quad i=1,2, \cdots, N}\end{array} w,bmin s.t. 21∥w∥2yi(w⋅xi+b)−1⩾0,i=1,2,⋯,N
这是一个凸二次规划问题,这个式子是SVM的原始最优化问题 -
求得最优解: w ∗ , b ∗ w^{*}, b^{*} w∗,b∗,得分离超平面: w ∗ ⋅ x + b ∗ = 0 w^{*} \cdot x+b^{*}=0 w∗⋅x+b∗=0,得分类超平面: f ( x ) = sign ( w ∗ ⋅ x + b ∗ ) f(x)=\operatorname{sign}\left(w^{*} \cdot x+b^{*}\right) f(x)=sign(w∗⋅x+b∗)
-
最大间隔分离超平面的存在唯一性可证明
支持向量和间隔边界:
-
支持向量对应于: y i ( w ⋅ x i + b ) − 1 = 0 y_i(w\cdot x_i+b)-1 = 0 yi(w⋅xi+b)−1=0
-
对应于两个超平面:
对应 y i = + 1 y_i=+1 yi=+1的正例点,支持向量在超平面: H 1 : w ⋅ x + b = 1 H_{1}: w \cdot x+b=1 H1:w⋅x+b=1
对应 y i = − 1 y_i=-1 yi=−1的负例点,支持向量在超平面: H 2 : w ⋅ x + b = − 1 H_{2}: w \cdot x+b=-1 H2:w⋅x+b=−1;
-
在 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之间的距离称为间隔,等于: 2 ∥ w ∥ \frac{2}{\|w\|} ∥w∥2
-
在确定分离超平面时只有支持向量起着决定作用,所以将这种分类模型称为支持向量机
-
例 7.1 7.1 7.1的解法, P y t h o n Python Python程序实现为:
from scipy import optimize import numpy as np fun = lambda x: ((x[0]) ** 2 + (x[1]) ** 2)/2 cons = ({'type': 'ineq', 'fun': lambda x: 3 * x[0] + 3 * x[1] + x[2] - 1}, {'type': 'ineq', 'fun': lambda x: 4 * x[0] + 3 * x[1] + x[2] - 1}, {'type': 'ineq', 'fun': lambda x: -x[0] - x[1] - x[2] - 1}) res = optimize.minimize(fun, np.ones(3), method='SLSQP', constraints=cons) res
学习的对偶问题:
-
对偶问题往往更容易求解;自然引入核函数,进而推广到非线性分类问题
-
针对每个不等式约束,定义拉格朗日乘子 α i ≥ 0 \alpha_i\ge0 αi≥0,定义拉格朗日函数:
KaTeX parse error: No such environment: align at position 19: …olor{red}\begin{̲a̲l̲i̲g̲n̲}̲ L(w,b,\alpha)&…
其中 α = ( α 1 , α 2 , … , α N ) T \alpha=(\alpha_1,\alpha_2,\dots,\alpha_N)^T α=(α1,α2,…,αN)T为拉格朗日乘子向量 -
原始问题是极小极大问题,根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
max α min w , b L ( w , b , α ) \max\limits_\alpha\min\limits_{w,b}L(w,b,\alpha) αmaxw,bminL(w,b,α) -
求 min w , b L ( w , b , α ) \displaystyle \min _{w, b} L(w, b, \alpha) w,bminL(w,b,α):
∇ w L ( w , b , α ) = w − ∑ i = 1 N α i y i x i = 0 ∇ b L ( w , b , α ) = ∑ i = 1 N α i y i = 0 \begin{array}{l}{\nabla_{w} L(w, b, \alpha)=w-\displaystyle \sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0} \\ {\nabla_{b} L(w, b, \alpha)=\displaystyle \sum_{i=1}^{N} \alpha_{i} y_{i}=0}\end{array} ∇wL(w,b,α)=w−i=1∑Nαiyixi=0∇bL(w,b,α)=i=1∑Nαiyi=0得:
w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 \begin{array}{l}{w=\displaystyle \sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}} \\ {\displaystyle \sum_{i=1}^{N} \alpha_{i} y_{i}=0}\end{array} w=i=1∑Nαiyixii=1∑Nαiyi=0
代入 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)后得:
L ( w , b , α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i y i ( ( ∑ j = 1 N α j y j x j ) ⋅ x i + b ) + ∑ i = 1 N α i = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \begin{aligned} L(w, b, \alpha) &=\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} y_{i}\left(\left(\sum_{j=1}^{N} \alpha_{j} y_{j} x_{j}\right) \cdot x_{i}+b\right)+\sum_{i=1}^{N} \alpha_{i} \\ &=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} \end{aligned} L(w,b,α)=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαiyi((j=1∑Nαjyjxj)⋅xi+b)+i=1∑Nαi=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi即:
min w , b L ( w , b , α ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \min _{w, b} L(w, b, \alpha)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi -
求 min w , b L ( w , b , α ) \displaystyle \min _{w, b} L(w, b, \alpha) w,bminL(w,b,α)对 α \alpha α的极大,既是对偶问题:
max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , ⋯ , N \begin{array}{cl}{\displaystyle \max _{\alpha}} & {-\frac{1}{2} \displaystyle\sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}} \\ {\text { s.t. }} & \displaystyle{\sum_{i=1}^{N} \alpha_{i} y_{i}=0} \\ {} & {\alpha_{i} \geqslant 0, \quad i=1,2, \cdots, N}\end{array} αmax s.t. −21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαii=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N目标函数转化为最小:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , ⋯ , N \color{red}\begin{array}{cl}\displaystyle {\min _{\alpha}} & {\frac{1}{2} \displaystyle\sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i}} \\ {\text { s.t. }} & \displaystyle {\sum_{i=1}^{N} \alpha_{i} y_{i}=0} \\ {} & {\alpha_{i} \geqslant 0, \quad i=1,2, \cdots, N}\end{array} αmin s.t. 21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαii=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N -
根据上不等式可求得 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯ , α N ∗ ) T \alpha^{*}=\left(\alpha_{1}^{*}, \alpha_{2}^{*}, \cdots, \alpha_{N}^{*}\right)^{\mathrm{T}} α∗=(α1∗,α2∗,⋯,αN∗)T,进一步求得: w ∗ , b ∗ w^{*}, b^{*} w∗,b∗
w ∗ = ∑ i = 1 N α i ∗ y i x i b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) \color{red}\begin{aligned} w^{*} &=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i} \\ b^{*}=& y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) \end{aligned} w∗b∗==i=1∑Nαi∗yixiyj−i=1∑Nαi∗yi(xi⋅xj)
分离超平面为:
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \color{red} \sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}=0 i=1∑Nαi∗yi(x⋅xi)+b∗=0
线性可分支持向量机的对偶形式,分类决策函数:
f ( x ) = sign ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) \color{red}f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}\right) f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
定义:训练数据集中对应于 α i ∗ > 0 \alpha_{i}^{*}>0 αi∗>0的样本点 ( x i , y i ) \left(x_{i}, y_{i}\right) (xi,yi)的实例点 x i ∈ R n x_{i} \in \mathbf{R}^{n} xi∈Rn称为支持向量
由 K K T KKT KKT互补条件可知: α i ∗ ( y i ( w ∗ ⋅ x i + b ∗ ) − 1 ) = 0 , i = 1 , 2 , ⋯ , N \alpha_{i}^{*}\left(y_{i}\left(w^{*} \cdot x_{i}+b^{*}\right)-1\right)=0, \quad i=1,2, \cdots, N αi∗(yi(w∗⋅xi+b∗)−1)=0,i=1,2,⋯,N
对于 α i ∗ > 0 \alpha_{i}^{*}>0 αi∗>0的样本点 ( x i , y i ) \left(x_{i}, y_{i}\right) (xi,yi),有: y i ( w ∗ ⋅ x i + b ∗ ) − 1 = 0 y_{i}\left(w^{*} \cdot x_{i}+b^{*}\right)-1=0 yi(w∗⋅xi+b∗)−1=0
或者: w ∗ ⋅ x i + b ∗ = ± 1 w^{*} \cdot x_{i}+b^{*}=\pm 1 w∗⋅xi+b∗=±1
即:样本点 ( x i , y i ) \left(x_{i}, y_{i}\right) (xi,yi)一定在间隔边界上