【数据挖掘】十大算法之SVM支持向量机分类算法

1 基本概念

支持向量机(support vector machines,SVM)是一种二分类模型。分为

  • 线性可分支持向量机:训练数据线性可分,通过硬间隔最大化学习一个线性的分类器,又称为硬间隔支持向量机。
  • 线性支持向量机:训练数据近似线性可分,通过软间隔最大化学习一个线性的分类器,又称为软间隔支持向量机。
  • 非线性支持向量机:训练数据线性不可分,通过核技巧及软间隔最大化,学习非线性支持向量机。(核技巧:当输入空间为欧式空间或离散集合、特征空间为希尔伯特空间时,核函数表示将输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数,可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机)

2 线性可分支持向量机

2.1 定义

给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
w ∗ ⋅ x + b ∗ = 0 (1) w^* \cdot x + b^* = 0\tag{1} wx+b=0(1)
以及相应的分类决策函数
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) (2) f(x) = sign(w^* \cdot x +b^*)\tag{2} f(x)=sign(wx+b)(2)
称为线性可分支持向量机。

2.2 相关概念

(1)函数间隔

一个点距离超平面的远近可以表示分类预测的确信程度,即函数间隔来表述分类的正确性及确信度。

对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔为
γ ^ i = y i ( w ⋅ x i + b ) (3) \hat{\gamma } _i = y_i(w \cdot x_i +b) \tag{3} γ^i=yi(wxi+b)(3)
定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔之最小值,即
γ ^ = m i n i γ ^ i     i = 1 , . . . , N (4) \hat{\gamma} = min_{i}\hat{\gamma} _i ~~~ i = 1,...,N \tag{4} γ^=miniγ^i   i=1,...,N(4)

(2)几何间隔

在函数间隔的基础上,将点与超平面之间的间隔规范化。对分离超平面的法向量 w w w取L2范数。表示为 ∣ ∣ w ∣ ∣ ||w|| w,使得超平面的两个参数成比例变化,间隔都是确定。

对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔为
γ ^ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) (5) \hat{\gamma } _i = y_i(\frac{w}{||w||} \cdot x_i +\frac{b}{||w||}) \tag{5} γ^i=yi(wwxi+wb)(5)
其中 ∣ ∣ w ∣ ∣ ||w|| w表示取w的L2范数。 定义超平面(w,b)关于训练数据集T的几何间隔为超平面(w,b)关于T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔之最小值,即
γ ^ = m i n i γ ^ i     i = 1 , . . . , N (6) \hat{\gamma} = min_{i}\hat{\gamma} _i ~~~ i = 1,...,N \tag{6} γ^=miniγ^i   i=1,...,N(6)

(3)间隔最大化

支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。

间隔最大化:对训练数据集找到几何间隔最大的超平面,以充分大的确信度对训练数据进行分类。

(4)最大间隔法

输入:线性可分训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={ (x1,y1),(x2,y2),...,(xN,yN)},其中 x ∈ X = R n , y i ∈ Y = − 1 , + 1 , i = 1 , 2 , . . . , N x \in X = R^n,y_i \in Y = {-1,+1},i=1,2,...,N xX=Rn,yiY=1,+1,i=1,2,...,N

输出:最大间隔分离超平面和分类决策函数

a.构造并求解约束最优化问题
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , . . , N (7) min_{w,b} \frac{1}{2}||w||^2 \\ s.t. y_i(w \cdot x_i +b)-1 \geq 0,i=1,2,..,N \tag{7} minw,b21w2s.t.yi(wxi+b)10,i=1,2,..,N(7)

求得最优解 w ∗ , b ∗ w^*,b^* w,b

b.由此得到分离超平面
w ∗ ⋅ x + b ∗ = 0 (8) w^* \cdot x + b^* = 0\tag{8} wx+b=0(8)
分类决策函数
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) (9) f(x) = sign(w^* \cdot x +b^*) \tag{9} f(x)=sign(wx+b)(9)
注意:线性可分训练数据集的最大间隔分离超平面是存在且唯一的。

(5)支持向量

在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量。

对于 y i y_i yi = +1 的正例点,支持向量在超平面
H 1 : w ⋅ x + b = 1 (10) H_1:w \cdot x+b = 1\tag{10} H1:wx+b=1(10)
对于 y i y_i yi = -1 的负例点,支持向量在超平面
H 1 : w ⋅ x + b = − 1 (11) H_1:w \cdot x+b = -1\tag{11} H1:wx+b=1(11)

(6)间隔边界

H 1 H_1 H1 H 2 H_2 H2平行,并且没有实例点落在它们中间。在 H 1 H_1 H1 H 2 H_2 H2之间形成一条长带,分离超平面与他们平行且位于他们中央。长带的宽度,即 H 1 H_1 H1 H 2 H_2 H2之间的距离称为间隔。间隔依赖于分离超平民啊的法向量 w w w,等于 2 ∣ ∣ w ∣ ∣ \frac{2}{||w||} w2。称为 H 1 H_1 H1 H 2 H_2 H2称为间隔边界。
在这里插入图片描述

2.3 学习算法

(1)学习的原始算法

线性可分支持向量机学习的原始最优化问题
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w i ⋅ i + b ) − 1 ≥ 0 , i = 1 , 2 , . . . , N (12) min_{w,b} \frac{1}{2}||w||^2 \\ s.t. \quad y_i(w_i \cdot_i+b)-1 \geq 0 ,i=1,2,...,N \tag{12} minw,b21w2s.t.yi(wii+b)10,i=1,2,...,N(12)
这是一个凸二次规划问题。

(2) 学习的对偶算法

线性可分支持向量机的对偶算法

对偶算法:将原始最优化问题,应用拉格朗日对偶性,求解对偶问题得到原始问题的最优解。

与原始最优化问题等价的最优化问题:
m i n 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 (13) min \frac{1}{2} \sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) - \sum_{i=1}^N \alpha_i \\ s.t. \quad \sum_{i=1}^N \alpha_i y_i = 0\\ \alpha _i \geq 0,i=1,2,...,N \tag{13} min21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=0αi0,i=1,2,...,N(13)
其中 α = ( α 1 , α 2 , . . . , α N ) T \alpha = (\alpha_1,\alpha_2,...,\alpha_N)^T α=(α1,α2,...,αN)T为朗格朗日乘子向量。

定理: α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α l ∗ ) \alpha^* = (\alpha_1^*,\alpha_2^*,...,\alpha_l^*) α=(α1,α2,...,αl)是以上公式13对偶最优化问题的解,则存在小标j,使得 α j ∗ > 0 \alpha_j^* >0 αj>0,并按下式求得原始最优化问题公式12的解 w ∗ w^* w b ∗ b^* b
w ∗ = ∑ i = 1 N α i ∗ y i x i b ∗ = y i − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) (14) w^* = \sum_{i=1}^N \alpha_i^*y_ix_i\\ b^* = y_i - \sum_{i=1}^N\alpha_i^* y_i(x_i \cdot x_j) \tag{14} w=i=1Nαiyixib=yii=1Nαiyi(xixj)(14)

优点

  • 对偶问题更容易求解
  • 自然引入核函数,进而推广到非线性分类问题

4 线性支持向量机

4.1 软间隔最大化

假设给定一个特征空间上的训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } (15) T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} \tag{15} T={ (x1,y1),(x2,y2),...,(xN,yN)}(15)
其中, x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , . . , N , x i x_i \in X = R^n,y_i \in Y = \{+1,-1\},i=1,2,..,N,x_i xiX=Rn,yiY={ +1,1},i=1,2,..,N,xi是第i个特征向量, y i y_i yi x i x_i xi的类标记。

线性不可分意味着某些样本点 ( x i , y i ) (x_i,y_i) (xi,yi)不能满足函数间隔大于等于1的约束条件公式12。软间隔最大化就是对每个样本点 ( x i , y i ) (x_i,y_i) (xi,yi)引进一个松弛变量 ξ ≥ 0 \xi \geq 0 ξ0,使函数间隔加上松弛变量大于等于1。公式12的约束条件就变为
y i ( w ⋅ x i + b ) ≥ 1 − ξ i (16) y_i (w \cdot x_i +b) \geq 1- \xi_i \tag{16} yi(wxi+b)1ξi(16)

同时,对每个松弛变量 ξ i \xi_i ξi,支付一个代码 ξ i \xi _i ξi。目标函数由原来的 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2变成
1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i (17) \frac{1}{2}||w||^2 +C \sum_{i=1}{N} \xi _i \tag{17} 21w2+Ci=1Nξi(17)
这里, C > 0 C >0 C>0称为惩罚参数,一般由问题决定,C值大时对误分裂的惩罚增大,反之。

这里的最小目标函数有两层含义

  • 使得 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2尽量小,间隔尽量大。
  • 使误分类的个数尽量小。C是调和二者的系数。

通过软间隔最大化,就能以线性可分的方式来处理线性不可分的线性支持向量机学习问题。

4.2 线性支持向量机的原始最优化问题

线性不可分的线性支持向量机的学习问题变成凸二次规划问题
m i n w , b . ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ξ i s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . , N ξ i ≥ 0 , i = 1 , 2 , . . , N (18) min_{w,b.\xi} \quad \frac{1}{2}||w||^2 +C\sum_{i=1}^N \xi _i\\ s.t. \quad y_i(w \cdot x_i +b) \geq 1- \xi _i,i=1,2,...,N\\ \xi _i \geq 0,i=1,2,..,N \tag{18} minw,b.ξ21w2+Ci=1Nξis.t.yi(wxi+b)1ξi,i=1,2,...,Nξi0,i=1,2,..,N(18)

4.3 线性支持向量机定义

对于给定的线性不可分的训练数据集,通过求解凸二次规划问题,即软间隔最大化问题,得到的分离超平面为
w ∗ ⋅ x + b ∗ = 0 (19) w^* \cdot x +b^* = 0 \tag{19} wx+b=0(19)
以及相应的分类决策函数
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) (20) f(x) = sign(w^* \cdot x +b^*) \tag{20} f(x)=sign(wx+b)(20)

称为线性支持向量机。

4.4 线性支持向量机的对偶最优化问题

m i n α 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 0 ≤ α i ≤ C , i = 1 , 2 , . . . , N (21) min_{\alpha} \frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) - \sum_{i=1}^N \alpha_i\\ s.t. \quad \sum_{i=1}^N\alpha_i y_i = 0\\ 0 \leq \alpha_i \leq C,i=1,2,...,N \tag{21} minα21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=00αiC,i=1,2,...,N(21)

4.5 线性支持向量机学习算法

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={ (x1,y1),(x2,y2),...,(xN,yN)}其中, x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , . . . , N x_i \in X =R^n,y_i \in Y = \{+1,-1\},i=1,2,...,N xiX=RnyiY={ +1,1},i=1,2,...,N

输出:分离超平面和分类决策函数

(1)选择惩罚参数C>0,构造并求解凸二次规划问题
m i n α 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 0 ≤ α i ≤ C , i = 1 , 2 , . . . , N (22) min_{\alpha} \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j(x_i \cdot x_j)-\sum_{i=1}^N \alpha_i\\ s.t. \quad \sum_{i=1}^N \alpha_i y_i =0\\ 0 \leq \alpha_i \leq C ,i = 1,2,...,N \tag{22} minα21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=00αiC,i=1,2,...,N(22)
求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T \alpha^* = (\alpha^*_1,\alpha^*_2,...,\alpha^*_N)^T α=(α1,α2,...,αN)T

(2)计算 w ∗ = ∑ i = 1 N α i ∗ y i x i w^* = \sum_{i=1}^N\alpha_i^* y_i x_i w=i=1Nαiyixi

选择 α ∗ \alpha^* α的一个分量 α j ∗ \alpha_j^* αj适合条件 0 < α j ∗ < C 0<\alpha_j^*<C 0<αj<C,计算
b ∗ = y j − ∑ i = 1 N y i α i ∗ ( x i ⋅ x j ) (23) b^* =y_j-\sum_{i=1}^N y_i \alpha_i^*(x_i \cdot x_j) \tag{23} b=yji=1Nyiαi(xixj)(23)
(3)求得分离超平面
w ∗ ⋅ x + b ∗ = 0 (24) w^* \cdot x + b^* = 0 \tag{24} wx+b=0(24)
分类决策函数
f ( x ) = s i g n ( s ∗ ⋅ x + b ∗ ) (25) f(x) = sign(s^* \cdot x +b^*) \tag{25} f(x)=sign(sx+b)(25)

4.6 软间隔的支持向量

在线性不可分的情况下,对偶问题的解 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T \alpha^* = (\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T α=(α1,α2,...,αN)T中对应于 α i ∗ > 0 \alpha_i^*>0 αi>0的样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的实例称为软间隔的支持向量。图中标出了实例 x i x_i xi到间隔边界的距离 ξ i ∣ ∣ w ∣ ∣ \frac{\xi_i}{||w||} wξi
在这里插入图片描述

α i ∗ < C \alpha_i^*<C αi<C,则 ξ i = 0 \xi_i = 0 ξi=0,支持向量 x i x_i xi恰好落在间隔边界上;

α i ∗ = C , 0 < ξ i < 0 \alpha_i^* = C ,0<\xi_i < 0 αi=C0<ξi<0,则分类正确。 x i x_i xi在间隔边界与分离超平面之间;

α i ∗ = C , ξ i = 1 \alpha_i^* = C,\xi_i = 1 αi=C,ξi=1,则 x i x_i xi在分离超平面上;

α i ∗ = C , ξ i > 1 \alpha_i^* = C,\xi_i > 1 αi=C,ξi>1,则 x i x_i xi位于分离超平面上误分一侧。

5 非线性支持向量机

5.1 基本概念

(1)核技巧

用线性可分方法求解非线性分类问题。分为两步,第一步,使用一个变换将原空间的数据映射到新空间。第二步,在新空间用线性分类方法从训练数据中训练分类模型。

(2)核函数

输入X是输入空间(欧式空间 R n R^n Rn的子集或离散集合),又设H特征空间(希尔伯特空间,一个内积空间,当作为一个赋范向量空间是完备的时候),如果存在一个从X到H的映射
ϕ ( x ) : X → H (26) \phi(x) :X \rightarrow H \tag{26} ϕ(x):XH(26)

使得对所有 x , z ∈ X x,z \in X x,zX,函数 K ( x , z ) K(x,z) K(x,z)满足条件
K ( x , z ) = ϕ ( x ) ⋅ ( z ) (27) K(x,z) = \phi(x) \cdot(z) \tag{27} K(x,z)=ϕ(x)(z)(27)
则称 K ( x , z ) K(x,z) K(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数, ⋅ \cdot 表示内积。

(3)非线性支持向量机的定义

从非线性分类训练集,通过核函数与软间隔最大化,或凸二次规划,学习得到的分类决策函数
f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ ) (28) f(x) = sign(\sum_{i=1}^N \alpha_i^* y_i K(x,x_i)+b^*) \tag{28} f(x)=sign(i=1NαiyiK(x,xi)+b)(28)
称为非线性支持向量机, K ( x , z ) K(x,z) K(x,z)是正定核函数。

5.2 常用核函数

(1)多项式核函数
K ( x , z ) = ( x ⋅ z + 1 ) p (29) K(x,z) = (x \cdot z+1)^p \tag{29} K(x,z)=(xz+1)p(29)
对应的支持向量机是一个p次多项式分类器。此时,分类决策函数为
f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i ( x i ⋅ x + 1 ) p + b ∗ ) (30) f(x) = sign(\sum_{i=1}^{N_s} \alpha_i ^* y_i(x_i \cdot x+1)^p +b^*) \tag{30} f(x)=sign(i=1Nsαiyi(xix+1)p+b)(30)

(2)高斯核函数
K ( x , z ) = e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 ρ 2 ) (31) K(x,z) = exp(-\frac{||x-z||^2}{2 \rho ^2}) \tag{31} K(x,z)=exp(2ρ2xz2)(31)
对应的支持向量机是高斯径向基函数分类器。此时,分类决策函数为
f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i e x p ( − ∣ ∣ x − x i ∣ ∣ 2 2 ρ 2 ) + b ∗ ) (32) f(x) = sign(\sum_{i=1}^{N_s} \alpha_i^* y_i exp(-\frac{||x-x_i||^2}{2\rho ^2})+b^*) \tag{32} f(x)=sign(i=1Nsαiyiexp(2ρ2xxi2)+b)(32)

(3)字符串核函数

两个字符串s和t上的字符串核函数是基于映射 ϕ n \phi _n ϕn的特征空间中的内积:
k n ( s , t ) = ∑ u ∈ ∑ n [ ϕ n ( s ) ] u [ ϕ n ( t ) ] u = ∑ u ∈ s u m n ( i , j ) ∑ : s ( i ) = t ( j ) = u λ l ( i ) λ l ( j ) (33) k_n(s,t) = \sum_{u \in \sum ^n}[\phi _n(s)]_u[\phi _n(t)]_u\\ = \sum_{u \in sum^n(i,j)} \sum_{:s(i)=t(j)=u} \lambda^{l(i)\lambda^{l(j)}} \tag{33} kn(s,t)=un[ϕn(s)]u[ϕn(t)]u=usumn(i,j):s(i)=t(j)=uλl(i)λl(j)(33)
字符串核函数 k n ( s , t ) k_n(s,t) kn(s,t)给出了字符串s和t中长度等于n的所有子串组成的特征想来那个的余弦相似度。

5.3 学习算法

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={ (x1,y1),(x2,y2),...,(xN,yN)}其中, x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , . . . , N x_i \in X =R^n,y_i \in Y = \{+1,-1\},i=1,2,...,N xiX=RnyiY={ +1,1},i=1,2,...,N

输出:分类决策函数

(1)选取适当的核函数K(x,z)和适当的参数C,构造并求解最优化问题
m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , . . . , N (34) min_{\alpha} \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i,x_j)-\sum_{i=1}^N \alpha_i\\ s.t. \quad \sum_{i=1}^N \alpha_i y_i =0\\ 0 \leq \alpha_i \leq C ,i = 1,2,...,N \tag{34} minα21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαis.t.i=1Nαiyi=00αiC,i=1,2,...,N(34)
求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T \alpha^* = (\alpha^*_1,\alpha^*_2,...,\alpha^*_N)^T α=(α1,α2,...,αN)T

(2)选择 α ∗ \alpha^* α的一个正分量 0 < α j ∗ < C 0 <\alpha^*_j <C 0<αj<C计算

选择 α ∗ \alpha^* α的一个分量 α j ∗ \alpha_j^* αj适合条件 0 < α j ∗ < C 0<\alpha_j^*<C 0<αj<C,计算
b ∗ = y j − ∑ i = 1 N y i α i ∗ K ( x i , x j ) (35) b^* =y_j-\sum_{i=1}^N y_i \alpha_i^*K(x_i, x_j) \tag{35} b=yji=1NyiαiK(xi,xj)(35)
(3)构造决策函数
w ∗ ⋅ x + b ∗ = 0 (36) w^* \cdot x + b^* = 0 \tag{36} wx+b=0(36)
分类决策函数
f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ ) (37) f(x) = sign(\sum_{i=1}^N \alpha_i^* y_iK(x,x_i)+b^*) \tag{37} f(x)=sign(i=1NαiyiK(x,xi)+b)(37)

当K(x,z)是正定核函数时,解是存在的。

6 算法改进—SMO算法

6.1 基本概念

支持向量机的学习问题可以形式化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以应用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。序列最小最优化算法(Sequential minimal optimization,SMO)算法就是一种快速实现的算法。

6.2 算法思想

是一种启发式算法。思路是如果所有变量的解都满足此最优化问题的KKT条件(Karush-Kuhn-Tucker conditions),那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件,否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这个会使得原始二次规划问题的目标函数值变得更小。更重要的是,这时子问题可以通过解析方法求解,这样可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。

整个SMO算法包括两个部分

  • 求解两个变量二次规划的解析方法
  • 选择变量的启发式方法。

6.2 算法过程

SMO算法要解如下凸二次规划的对偶问题
m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , . . . , N (38) min_{\alpha} \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i,x_j)-\sum_{i=1}^N \alpha_i\\ s.t. \quad \sum_{i=1}^N \alpha_i y_i =0\\ 0 \leq \alpha_i \leq C ,i = 1,2,...,N \tag{38} minα21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαis.t.i=1Nαiyi=00αiC,i=1,2,...,N(38)

变量是拉格朗日乘子,一个变量 α i \alpha_i αi对应于一个样本点 ( x i , y i ) (x_i,y_i) (xi,yi),变量的综述等于训练样本容量N。

不失一般性,假设选择的两个变量是 α 1 , α 2 \alpha_1,\alpha_2 α1,α2,其他变量 α i , i = 3 , 4 , . . . , N \alpha _i, i=3,4,...,N αi,i=3,4,...,N是固定的。 于是SMO的最优化问题可写成
m i n α 1 , α 2 W ( α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y i y j K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 N y i α i K i 1 + y 2 α 2 ∑ i = 3 N y i α i K i 2 s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α i y i = δ 0 ≤ α i ≤ C , i = 1 , 2 (39) min_{\alpha_1,\alpha_2} \quad W(\alpha_1,\alpha_2) = \frac{1}{2}K_{11}\alpha_1^2 +\frac{1}{2}K_{22}\alpha_2^2 + y_i y_j K_{12}\alpha_1 \alpha_2 -(\alpha_1 +\alpha_2) +y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_{i1}+ y_2\alpha_2 \sum_{i=3}^N y_i \alpha_i K_{i2}\\ s.t. \quad \alpha_1y_1 +\alpha_2y_2 = -\sum_{i=3}^N \alpha_i y_i = \delta \\ 0 \leq \alpha_i \leq C ,i = 1,2 \tag{39} minα1α2W(α1,α2)=21K11α12+21K22α22+yiyjK12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi2s.t.α1y1+α2y2=i=3Nαiyi=δ0αiC,i=1,2(39)
其中, K i j − K ( x i , x j ) , i , j = 1 , 2 , . . . , N , δ K_{ij} - K(x_i,x_j),i,j=1,2,...,N,\delta KijK(xi,xj),i,j=1,2,...,N,δ是常数。

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={ (x1,y1),(x2,y2),...,(xN,yN)}其中, x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , . . . , N x_i \in X =R^n,y_i \in Y = \{+1,-1\},i=1,2,...,N xiX=RnyiY={ +1,1},i=1,2,...,N

输出:近似解 α ^ \hat{\alpha} α^

(1)取初值 α ( 0 ) = 0 \alpha^{(0)} = 0 α(0)=0,令k=0;

(2)选取优化变量 α 1 k , α 2 k \alpha_1^{k},\alpha_2^k α1k,α2k,解析求解公式39的两个变量的最优化问题。求得最优解 α 1 k + 1 , α 2 k + 1 \alpha_1^{k+1},\alpha_2^{k+1} α1k+1,α2k+1,更新 α \alpha α α k + 1 \alpha^{k+1} αk+1:

(3)若精度 ϵ \epsilon ϵ 范围内满足停机条件
$$
\sum_{i=1}^N \alpha_i y_i = 0,0\leq \alpha_i \leq C,i=1,2,…,N\
y_i \cdot g(x_i) =\left{
\begin{matrix}
\geq 1 ,{x_i|\alpha_i = 0}\
= 1 ,{x_i|0<\alpha_i < C}\
\leq 1 ,{x_i|\alpha_i = C}\
\end{matrix}

\right.
$$

其中,
g ( x i ) = ∑ j = 1 N α j y j K ( x j , x i ) + b g(x_i) = \sum_{j=1}^N \alpha_j y_j K(x_j,x_i)+b g(xi)=j=1NαjyjK(xj,xi)+b
则转第(4),否则令k=k+1,转第(2)

(4)取 α ^ = α k + 1 \hat{\alpha} = \alpha^{k+1} α^=αk+1

猜你喜欢

转载自blog.csdn.net/weixin_43935696/article/details/125113964