支持向量机
SMO算法
问题描述
min α 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 \begin{aligned} \min_\alpha\ &\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i\\ s.t.\ \ \ &\sum_{i=1}^N\alpha_iy_i=0\\ &0\leqslant \alpha_i \leqslant C,i=1,2,\dots,N \end{aligned} αmin s.t. 21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαii=1∑Nαiyi=00⩽αi⩽C,i=1,2,…,N
这个问题中,变量是 α \alpha α,一个变量 α i \alpha_i αi对应一个样本点 ( x i , y i ) (x_i,y_i) (xi,yi),变量总数等于 N N N
KKT 条件
- KKT条件是该最优化问题的充分必要条件
- 简单来说,约束最优化问题包含
⩽
0
\leqslant0
⩽0,和
=
0
=0
=0两种约束条件
min x ∈ R n f ( x ) s . t . c i ( x ) ⩽ 0 , i = 1 , 2 , … , k h j ( x ) = 0 , j = 1 , 2 , … , l \begin{aligned} \min_{x \in R^n}\quad &f(x) \\ s.t.\quad&c_i(x) \leqslant 0 , i=1,2,\ldots,k\\ &h_j(x) = 0 , j=1,2,\ldots,l \end{aligned} x∈Rnmins.t.f(x)ci(x)⩽0,i=1,2,…,khj(x)=0,j=1,2,…,l - 引入广义拉格朗日函数
L ( x , α , β ) = f ( x ) + ∑ i = 0 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) L(x,\alpha,\beta) = f(x) + \sum_{i=0}^k \alpha_ic_i(x) + \sum_{j=1}^l \beta_jh_j(x) L(x,α,β)=f(x)+i=0∑kαici(x)+j=1∑lβjhj(x)
- 在KKT的条件下,原始问题和对偶问题的最优值相等
∇ x L ( x ∗ , α ∗ , β ∗ ) = 0 ∇ α L ( x ∗ , α ∗ , β ∗ ) = 0 ∇ β L ( x ∗ , α ∗ , β ∗ ) = 0 α i ∗ c i ( x ∗ ) = 0 , i = 1 , 2 , … , k c i ( x ∗ ) ≤ 0 , i = 1 , 2 , … , k α i ∗ ≥ 0 , i = 1 , 2 , … , k h j ( x ∗ ) = 0 , j = 1 , 2 , … , l ∇_xL(x^∗,α^∗,β^∗)=0\\ ∇_αL(x^∗,α^∗,β^∗)=0\\ ∇_βL(x^∗,α^∗,β^∗)=0\\ α_i^∗c_i(x^*)=0,i=1,2,…,k\\ c_i(x^*)≤0,i=1,2,…,k\\ α^∗_i≥0,i=1,2,…,k\\ h_j(x^∗)=0,j=1,2,…,l ∇xL(x∗,α∗,β∗)=0∇αL(x∗,α∗,β∗)=0∇βL(x∗,α∗,β∗)=0αi∗ci(x∗)=0,i=1,2,…,kci(x∗)≤0,i=1,2,…,kαi∗≥0,i=1,2,…,khj(x∗)=0,j=1,2,…,l - 前面三个条件是由解析函数的知识,对于各个变量的偏导数为0,后面四个条件就是原始问题的约束条件以及拉格朗日乘子需要满足的约束,第四个条件是KKT的对偶互补条件
算法内容
整个SMO算法包括两部分:
- 求解两个变量二次规划的解析方法
- 选择变量的启发式方法
min α 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 \begin{aligned} \min_\alpha\ &\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i, x_j)-\sum_{i=1}^N\alpha_i\\ s.t.\ \ \ &\sum_{i=1}^N\alpha_iy_i=0\\ &0\leqslant \alpha_i \leqslant C,i=1,2,\dots,N \end{aligned} αmin s.t. 21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαii=1∑Nαiyi=00⩽αi⩽C,i=1,2,…,N
Part I
- 两个变量二次规划求解
- 选择两个变量 α 1 , α 2 \alpha_1,\alpha_2 α1,α2,由等式约束可以得到 α 1 = − y 1 ∑ i = 2 N α i y i \alpha_1=-y_1\sum\limits_{i=2}^N\alpha_iy_i α1=−y1i=2∑Nαiyi,所以这个问题等价于一个单变量优化问题
min α 1 , α 2 W ( α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 N y i α i K i l + y 2 α 2 ∑ i = 3 N y i α i K i 2 s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 N y i α i = ς 0 ⩽ α i ⩽ C , i = 1 , 2 \begin{aligned} \min_{\alpha_1,\alpha_2} W(\alpha_1,\alpha_2)=&\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2\\ &-(\alpha_1+\alpha_2)+y_1\alpha_1\sum_{i=3}^Ny_i\alpha_iK_{il}+y_2\alpha_2\sum_{i=3}^Ny_i\alpha_iK_{i2}\\ s.t. \ \ \ &\alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^Ny_i\alpha_i=\varsigma\\ &0\leqslant\alpha_i\leqslant C, i=1,2 \end{aligned} α1,α2minW(α1,α2)=s.t. 21K11α12+21K22α22+y1y2K12α1α2−(α1+α2)+y1α1i=3∑NyiαiKil+y2α2i=3∑NyiαiKi2α1y1+α2y2=−i=3∑Nyiαi=ς0⩽αi⩽C,i=1,2
- 上面存在两个约束:
- 线性等式约束
- 边界约束
- 根据简单的线性规划可以得出等式约束使得 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在平行于盒子 [ 0 , C ] × [ 0 , C ] [0,C]\times [0,C] [0,C]×[0,C]的对角线的直线上
- 首先求沿着约束方向未经剪辑,即不考虑约束
0
⩽
α
i
⩽
C
0\leqslant\alpha_i\leqslant C
0⩽αi⩽C时
α
2
\alpha_2
α2的最优解,然后再求剪辑后的解
E i = g ( x i ) − y i = ( ∑ j = 1 N α j y j K ( x i , x j ) + b ) − y i , i = 1 , 2 E_i=g(x_i)-y_i=(\sum_{j=1}^N\alpha_jy_jK(x_i, x_j)+b)-y_i,i=1,2 Ei=g(xi)−yi=(j=1∑NαjyjK(xi,xj)+b)−yi,i=1,2
E i E_i Ei为函数 g ( x ) g(x) g(x)对输入的预测值与真实输出 y i y_i yi的差
Part II
- 变量的选择方法
- 第一个变量 α 1 \alpha_1 α1外层循环,寻找违反KKT条件最严重的样本点
- 第二个变量 α 2 \alpha_2 α2内层循环,希望能使 α 2 \alpha_2 α2有足够大的变化
- 计算阈值 b b b和差值 E i E_i Ei
输入:训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T={(x_1,y_1),(x_2,y_2),\dots, (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\mathcal X=\bf R^n, y_i\in\mathcal Y=\{-1,+1\}, i=1,2,\dots,N xi∈X=Rn,yi∈Y={−1,+1},i=1,2,…,N,精度 ϵ \epsilon ϵ
输出:近似解 α ^ \hat\alpha α^
取初值 α 0 = 0 \alpha_0=0 α0=0,令 k = 0 k=0 k=0
选取优化变量 α 1 ( k ) , α 2 ( k ) \alpha_1^{(k)},\alpha_2^{(k)} α1(k),α2(k),解析求解两个变量的最优化问题,求得最优解 α 1 ( k + 1 ) , α 2 ( k + 1 ) \alpha_1^{(k+1)},\alpha_2^{(k+1)} α1(k+1),α2(k+1),更新 α \alpha α为 α k + 1 \alpha^{k+1} αk+1
若在精度 ϵ \epsilon ϵ范围内满足停止条件
∑ i = 1 N α i y i = 0 0 ⩽ α i ⩽ C , i = 1 , 2 , … , N y i ⋅ g ( x i ) = { ⩾ 1 , { x i ∣ α i = 0 } = 1 , { x i ∣ 0 < α i < C } ⩽ 1 , { x i ∣ α i = C } g ( x i ) = ∑ j = 1 N α j y j K ( x j , x i ) + b \sum_{i=1}^{N}\alpha_iy_i=0\\ 0\leqslant\alpha_i\leqslant C,i=1,2,\dots,N\\ y_i\cdot g(x_i)= \begin{cases} \geqslant1,\{x_i|\alpha_i=0\}\\ =1,\{x_i|0<\alpha_i<C\}\\ \leqslant1,\{x_i|\alpha_i=C\} \end{cases}\\ g(x_i)=\sum_{j=1}^{N}\alpha_jy_jK(x_j,x_i)+b i=1∑Nαiyi=00⩽αi⩽C,i=1,2,…,Nyi⋅g(xi)=⎩⎪⎨⎪⎧⩾1,{xi∣αi=0}=1,{xi∣0<αi<C}⩽1,{xi∣αi=C}g(xi)=j=1∑NαjyjK(xj,xi)+b
则转4,否则, k = k + 1 k=k+1 k=k+1转2取 α ^ = α ( k + 1 ) \hat\alpha=\alpha^{(k+1)} α^=α(k+1)
习题解答
-
1.比较感知机的对偶形式与线性可分支持向量机的对偶形式
- 感知机的对偶形式
f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) , α = ( α 1 , α 2 , ⋯   , α N ) T f(x)=sign\left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b\right), \alpha=(\alpha_1,\alpha_2,\cdots,\alpha_N)^T f(x)=sign(∑j=1Nαjyjxj⋅x+b),α=(α1,α2,⋯,αN)T - 线性可分支持向量机的对偶形式
f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i x i ⋅ x + b ∗ ) , α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α N ∗ ) T f(x)=sign\left(\sum_{i=1}^N\alpha_i^*y_ix_i\cdot x+b^*\right), \alpha^*=(\alpha_1^*,\alpha_2^*,\cdots,\alpha_N^*)^T f(x)=sign(∑i=1Nαi∗yixi⋅x+b∗),α∗=(α1∗,α2∗,⋯,αN∗)T
感知机学习算法的原始形式和对偶形式与线性可分支持向量机学习算法的原始形式和对偶形式相对应。在线性可分支持向量机的对偶形式中, w w w也是被表示为实例 x i x_i xi和标记 y i y_i yi的线性组合的形式
w = ∑ i = 1 N α i y i x i w=\sum_{i=1}^{N}\alpha_iy_ix_i w=i=1∑Nαiyixi
而它们的偏置 b b b的形式不同,前者 b = ∑ i = 1 N α i y i b=\sum_{i=1}^{N}\alpha_iy_i b=∑i=1Nαiyi,而后者 b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^*=y_j\color{black}-\sum_{i=1}^{N}\alpha_i^*y_i(x_i\cdot x_j) b∗=yj−∑i=1Nαi∗yi(xi⋅xj)
- 感知机的对偶形式
-
2.已知正例点 x 1 = ( 1 , 2 ) T x_1=(1,2)^T x1=(1,2)T, x 2 = ( 2 , 3 ) T x_2=(2,3)^T x2=(2,3)T, x 3 = ( 3 , 3 ) T x_3=(3,3)^T x3=(3,3)T,负例点 x 4 = ( 2 , 1 ) T x_4=(2,1)^T x4=(2,1)T, x 5 = ( 3 , 2 ) T x_5=(3,2)^T x5=(3,2)T,
试求最大间隔分离超平面和分类决策函数,并在图上画出分离超平面、间隔边界及支持向量- 根据书中算法,计算可得
w
1
=
−
1
w_1=-1
w1=−1,
w
2
=
2
w_2=2
w2=2,
b
=
−
2
b=-2
b=−2,即最大间隔分离超平面为
− x ( 1 ) + 2 x ( 2 ) − 2 = 0 -x^{(1)}+2x^{(2)}-2=0 −x(1)+2x(2)−2=0
分类决策函数为
f ( x ) = s i g n ( − x ( 1 ) + 2 x ( 2 ) − 2 ) f(x)=sign(-x^{(1)}+2x^{(2)}-2) f(x)=sign(−x(1)+2x(2)−2)
- 根据书中算法,计算可得
w
1
=
−
1
w_1=-1
w1=−1,
w
2
=
2
w_2=2
w2=2,
b
=
−
2
b=-2
b=−2,即最大间隔分离超平面为
-
3.线性支持向量机还可以定义为以下形式:
min
w
,
b
,
ξ
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
ξ
i
2
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
,
 
i
=
1
,
2
,
⋯
 
,
N
ξ
i
≥
0
,
 
i
=
1
,
2
,
⋯
 
,
N
\min_{w,b,\xi}{\frac{1}{2}\|w\|^2}+C\sum^N_{i=1}\xi_i^2\\s.t.{\quad}y_i(w{\cdot}x_i+b)\ge1-\xi_i,\,i=1,2,\cdots,N\\\xi_i\ge0,\,i=1,2,\cdots,N
w,b,ξmin21∥w∥2+Ci=1∑Nξi2s.t.yi(w⋅xi+b)≥1−ξi,i=1,2,⋯,Nξi≥0,i=1,2,⋯,N
试求其对偶形式
- 首先求得原始化最优问题的拉格朗日函数是:
L ( w , b , α , ξ , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i 2 − ∑ i = 1 N α i ( y i ( w ⋅ x i + b − 1 ) + ξ i ) − ∑ i = 1 N μ i ξ i L(w,b,\alpha,\xi,μ)=\frac{1}{2}\left\|w\right\|^2+C\sum_{i=1}^N\xi_i^2-\sum_{i=1}^N\alpha_i(y_i(w\cdot x_i+b-1)+\xi_i)-\sum_{i=1}^Nμ_i\xi_i L(w,b,α,ξ,μ)=21∥w∥2+C∑i=1Nξi2−∑i=1Nαi(yi(w⋅xi+b−1)+ξi)−∑i=1Nμiξi - 对偶问题是拉格朗日的极大极小问题。首先求
L
(
w
,
b
,
α
,
ξ
,
μ
)
L(w,b,\alpha,\xi,μ)
L(w,b,α,ξ,μ)对
w
,
b
,
ξ
w,b,\xi
w,b,ξ的极小,即对该三项求偏导,得
w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 2 C ξ i − α i − μ i = 0 w=\sum_{i=1}^{N}\alpha_iy_ix_i\\ \sum_{i=1}^N\alpha_iy_i=0\\ 2C\xi_i-\alpha_i-μ_i=0 w=i=1∑Nαiyixii=1∑Nαiyi=02Cξi−αi−μi=0
将上述带入拉格朗日函数,得
− 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − C ∑ i = 1 N ξ i 2 + ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − 1 4 C ∑ i = 1 N ( α i + μ i ) 2 + ∑ i = 1 N α i -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-C\sum_{i=1}^N\xi_i^2+\sum_{i=1}^N\alpha_i\\ -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\frac{1}{4C}\sum_{i=1}^N(\alpha_i+μ_i)^2+\sum_{i=1}^N\alpha_i −21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−Ci=1∑Nξi2+i=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−4C1i=1∑N(αi+μi)2+i=1∑Nαi - 4.证明内积的正整数幂函数
K
(
x
,
z
)
=
(
x
⋅
z
)
p
K(x,z)=(x{\cdot}z)^p
K(x,z)=(x⋅z)p是正定核函数,这里
p
p
p是正整数,
x
,
z
∈
R
n
x,z{\in}R^n
x,z∈Rn
-
要证明正整数幂函数是正定核函数,只需证明其对应得Gram矩阵 K = [ K ( x i , x j ) ] m × m K=[K(x_i,x_j)]_{m\times m} K=[K(xi,xj)]m×m是半正定矩阵
-
对任意 c 1 , c 2 … c m ∈ R c_1,c_2…c_m\in R c1,c2…cm∈R,有
∑ i , j = 1 m c i c j K ( x i , x j ) = ∑ i , j = 1 m c i c j ( x i ⋅ x j ) p = ( ∑ i = 1 m c i x i ) ( ∑ j = 1 m c j x j ) ( x i x j ) p − 1 = ∣ ∣ ∑ i = 1 m c i x i ∣ ∣ 2 ( x i x j ) p − 1 \begin{aligned} \sum_{i,j=1}^{m}c_ic_jK(x_i,x_j)\\ =&\sum_{i,j=1}^{m}c_ic_j(x_i\cdot x_j)^p\\ =&(\sum_{i=1}^{m}c_ix_i)(\sum_{j=1}^{m}c_jx_j)(x_ix_j)^{p-1}\\ =&||\sum_{i=1}^{m}c_ix_i||^2(x_ix_j)^{p-1} \end{aligned} i,j=1∑mcicjK(xi,xj)===i,j=1∑mcicj(xi⋅xj)p(i=1∑mcixi)(j=1∑mcjxj)(xixj)p−1∣∣i=1∑mcixi∣∣2(xixj)p−1
- 由于p大于等于1,该式子也大于等于0,即Gram矩阵半正定,所以正整数的幂函数是正定核函数
-