SVM
问题的提出
针对分类问题,我们经常会尝试构建一个线性判别边界,尝试将样本进行划分。
通过进行特征变换,支持向量机将在变换后的大的特征空间内产生超平面判别边界,对应在原空间为非线性边界。
假设我们有 N N N 个数据 ( x i , y i ) , x i ∈ R p , y i ∈ { − 1 , 1 } (x_i,y_i),x_i \in R^p,y_i \in \{-1,1\} (xi,yi),xi∈Rp,yi∈{−1,1}
定义超平面
{ x : f ( x ) = x T β + β 0 = 0 } \{x: f(x) = x^T\beta + \beta_0 = 0\} {x:f(x)=xTβ+β0=0}
导出的优化问题为:
max β , β 0 , ∣ ∣ β ∣ ∣ = 1 C \max_{\beta,\beta_0,||\beta|| = 1} C β,β0,∣∣β∣∣=1maxC y i ( x i T β + β 0 ) ≥ C , i = 1 , . . . , N y_i(x_i^T\beta + \beta_0) \geq C,i = 1,...,N yi(xiTβ+β0)≥C,i=1,...,N
等价于
min
β
∣
∣
β
∣
∣
\min_{\beta} ||\beta||
βmin∣∣β∣∣
y
i
(
x
i
T
β
+
β
0
)
≥
1
,
i
=
1
,
.
.
.
,
N
y_i(x_i^T\beta + \beta_0) \geq 1,i = 1,...,N
yi(xiTβ+β0)≥1,i=1,...,N
即此时
C
=
1
/
∣
∣
β
∣
∣
C = 1/||\beta||
C=1/∣∣β∣∣
对应软间隔形式可以写为:
min β ∣ ∣ β ∣ ∣ \min_{\beta} ||\beta|| βmin∣∣β∣∣ y i ( x i T β + β 0 ) ≥ 1 − ξ i , ξ i ≥ 0 , ∑ ξ i ≤ K y_i(x_i^T\beta + \beta_0) \geq 1 - \xi_i,\xi_i \geq0,\sum\xi_i\leq K yi(xiTβ+β0)≥1−ξi,ξi≥0,∑ξi≤K
关于
K
K
K 的理解:
ξ
i
\xi_i
ξi代表了使得预测
f
(
x
i
)
=
β
0
+
x
i
T
β
f(x_i) = \beta_0 + x_i^T\beta
f(xi)=β0+xiTβ 出现在错误一侧的比例
那么
∑
ξ
i
≤
K
\sum\xi_i\leq K
∑ξi≤K 控制了出错的总比例
进一步可以写成等价的便于求解的形式,将
∣
∣
β
∣
∣
||\beta||
∣∣β∣∣ 写成二次,同时将
∑
ξ
i
≤
K
\sum\xi_i\leq K
∑ξi≤K 写入优化目标:
min
β
1
2
∣
∣
β
∣
∣
2
+
γ
∑
i
=
1
N
ξ
i
\min_{\beta} \frac{1}{2}||\beta||^2 + \gamma\sum_{i=1}^N \xi_i
βmin21∣∣β∣∣2+γi=1∑Nξi
y
i
(
x
i
T
β
+
β
0
)
≥
1
−
ξ
i
,
ξ
i
≥
0
y_i(x_i^T\beta + \beta_0) \geq 1 - \xi_i,\xi_i \geq0
yi(xiTβ+β0)≥1−ξi,ξi≥0
问题的求解
容易写出对应的拉格朗日函数
L = 1 2 ∣ ∣ β ∣ ∣ 2 + γ ∑ i = 1 N ξ i − ∑ i = 1 N α i [ y i ( x i T β + β 0 ) − ( 1 − ξ i ) ] − ∑ i = 1 N μ i ξ i L = \frac{1}{2}||\beta||^2 + \gamma \sum_{i=1}^N\xi_i - \sum_{i=1}^N\alpha_i[y_i(x_i^T\beta+\beta_0) - (1-\xi_i)] - \sum_{i=1}^N\mu_i\xi_i L=21∣∣β∣∣2+γi=1∑Nξi−i=1∑Nαi[yi(xiTβ+β0)−(1−ξi)]−i=1∑Nμiξi
对参数 β , β 0 , ξ i \beta,\beta_0,\xi_i β,β0,ξi 求偏导,对其极小化
β = ∑ i = 1 N α i y i x i \beta = \sum_{i=1}^N\alpha_iy_ix_i β=i=1∑Nαiyixi 0 = ∑ i = 1 N α i y i 0 = \sum_{i=1}^N\alpha_iy_i 0=i=1∑Nαiyi α i = γ − μ i , ∀ i \alpha_i = \gamma - \mu_i,{\forall i} αi=γ−μi,∀i
我们可以得到对应的对偶函数:
L D = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i T x j L_D = \sum_{i=1}^N\alpha_i - \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jx_i^Tx_j LD=i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxj
对应加入 K K T KKT KKT 条件
α i [ y i ( x i T β + β 0 ) − ( 1 − ξ i ) ] = 0 \alpha_i[y_i(x_i^T \beta + \beta_0) - (1 - \xi_i)] = 0 αi[yi(xiTβ+β0)−(1−ξi)]=0 μ i ξ i = 0 \mu_i\xi_i = 0 μiξi=0 y i ( x i T β + β 0 ) − ( 1 − ξ i ) ≥ 0 y_i(x_i^T\beta+\beta_0) - (1-\xi_i) \geq 0 yi(xiTβ+β0)−(1−ξi)≥0
可以发现 β \beta β 的解的形式为:
β ^ = ∑ i = 1 N α ^ i y i x i \hat \beta = \sum_{i=1}^N\hat \alpha_iy_ix_i β^=i=1∑Nα^iyixi
同时由条件
α
i
[
y
i
(
x
i
T
β
+
β
0
)
−
(
1
−
ξ
i
)
]
=
0
\alpha_i[y_i(x_i^T \beta + \beta_0) - (1 - \xi_i)] = 0
αi[yi(xiTβ+β0)−(1−ξi)]=0
可以发现对于那些具有非零系数
α
i
\alpha_i
αi的观测样本,
β
^
\hat \beta
β^ 只由这些样本表示,这些样本被称为支持向量。
这些样本中,除了部分在边缘处,即有 ξ i = 0 \xi_i = 0 ξi=0,则由 μ i ξ i = 0 , α i = γ − μ i \mu_i\xi_i = 0,\alpha_i = \gamma - \mu_i μiξi=0,αi=γ−μi,得出这些样本将会由 0 < α ^ i < γ 0<\hat \alpha_i < \gamma 0<α^i<γ 来刻画;其余的 ξ i > 0 \xi_i > 0 ξi>0 的样本,有 α ^ i = γ \hat \alpha_i = \gamma α^i=γ
求解
L
D
=
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
x
i
T
x
j
L_D = \sum_{i=1}^N\alpha_i - \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jx_i^Tx_j
LD=i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxj
C
≥
α
i
≥
0
,
i
=
1
,
.
.
.
,
m
C\geq\alpha_i \geq 0,i = 1,...,m
C≥αi≥0,i=1,...,m
∑
i
=
1
m
α
i
y
i
=
0
\sum_{i=1}^m\alpha_iy_i = 0
i=1∑mαiyi=0
对应的 K K T KKT KKT 条件为
{ α i ≥ 0 , μ i ≥ 0 , y i f ( x i ) − 1 + ξ i ≥ 0 , α i ( y i f ( x i ) − 1 + ξ i ) = 0 , ξ i ≥ 0 , μ i ξ i = 0. \begin{cases} \alpha_i \geq 0 ,\mu_i \geq 0, \\ y_if(x_i) -1+\xi_i \geq 0,\\ \alpha_i(y_if(x_i) -1+\xi_i) = 0,\\ \xi_i \geq 0,\mu_i\xi_i = 0. \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧αi≥0,μi≥0,yif(xi)−1+ξi≥0,αi(yif(xi)−1+ξi)=0,ξi≥0,μiξi=0.
其中 f ( x i ) = x i T β + β 0 f(x_i) = x_i^T \beta + \beta_0 f(xi)=xiTβ+β0
是一个较为简单的凸二次规划问题。可以使用标准的求解方式进行求解。
核形式:
L D = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j k ( x i , x j ) L_D = \sum_{i=1}^N\alpha_i - \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jk(x_i,x_j) LD=i=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyjk(xi,xj) C ≥ α i ≥ 0 , i = 1 , . . . , m C\geq\alpha_i \geq 0,i = 1,...,m C≥αi≥0,i=1,...,m ∑ i = 1 m α i y i = 0 \sum_{i=1}^m\alpha_iy_i = 0 i=1∑mαiyi=0
S M O SMO SMO 算法
我们容易发现, S V M SVM SVM 的最终优化目标是找到一组 α \alpha α 以及 b b b。
S
M
O
SMO
SMO 算法采用了一种分而治之的想法,每一次只优化其中两个参数
α
i
,
α
j
.
\alpha_i,\alpha_j.
αi,αj. 至于一次优化两个参数的原因为约束
∑
i
=
1
m
α
i
y
i
=
0
\sum_{i=1}^m\alpha_iy_i = 0
i=1∑mαiyi=0
的存在使得我们一次最少要同时优化两个参数。
下面给出 S M O SMO SMO 的具体细节:
当我们只考虑 α 1 , α 2 \alpha_1,\alpha_2 α1,α2 时,优化目标就变成
m i n 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) min \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) min21K11α12+21K22α22+y1y2K12α1α2−(α1+α2) + α 1 y 1 ∑ i ≠ 1 , 2 N α i y i K 1 i + α 2 y 2 ∑ j ≠ 1 , 2 N α j y j K 2 j + c +\alpha_1y_1\sum_{i \neq 1,2}^N\alpha_iy_iK_{1i}+\alpha_2y_2\sum_{j \neq 1,2}^N\alpha_jy_jK_{2j}+c +α1y1i̸=1,2∑NαiyiK1i+α2y2j̸=1,2∑NαjyjK2j+c
其中 c c c 是一个与 α 1 , α 2 \alpha_1,\alpha_2 α1,α2 无关的常数, K i j K_{ij} Kij 代表 K ( x i , x j ) K(x_i,x_j) K(xi,xj).
由约束条件可以得到
α 1 y 1 + α 2 y 2 = C ⇒ α 1 = ( C − α 2 y 2 ) y 1 \alpha_1y_1+\alpha_2y_2 = C \Rightarrow \alpha_1 = (C - \alpha_2y_2)y_1 α1y1+α2y2=C⇒α1=(C−α2y2)y1
代入上式可得
m i n l ( α 2 ) = 1 2 K 11 ( C − α 2 y 2 ) 2 + 1 2 K 22 α 2 2 + y 2 K 12 α 2 ( C − α 2 y 2 ) min\ l(\alpha_2) = \frac{1}{2}K_{11}(C-\alpha_2y_2)^2+\frac{1}{2}K_{22}\alpha_2^2+y_2K_{12}\alpha_2(C - \alpha_2y_2) min l(α2)=21K11(C−α2y2)2+21K22α22+y2K12α2(C−α2y2) − y 1 ( C − α 2 y 2 ) − α 2 + ( C − α 2 y 2 ) ∑ i ≠ 1 , 2 N α i y i K 1 i + α 2 y 2 ∑ j ≠ 1 , 2 N α j y j K 2 j + c - y_1(C - \alpha_2y_2) - \alpha_2 + (C - \alpha_2y_2)\sum_{i \neq{1,2}}^N\alpha_iy_iK_{1i}+\alpha_2y_2\sum_{j \neq 1,2}^N\alpha_jy_jK_{2j}+c −y1(C−α2y2)−α2+(C−α2y2)i̸=1,2∑NαiyiK1i+α2y2j̸=1,2∑NαjyjK2j+c
上式对 α 2 \alpha_2 α2 求偏导可以得到
∂ l ( α 2 ) ∂ α 2 = ( K 11 + K 22 − 2 K 12 ) α 2 − K 11 C y 2 + K 12 C y 2 + y 1 y 2 \frac{\partial l(\alpha_2)}{\partial\alpha_2} = (K_{11}+K_{22} - 2K_{12})\alpha_2 - K_{11}Cy_2+K_{12}Cy_2 + y_1y_2 ∂α2∂l(α2)=(K11+K22−2K12)α2−K11Cy2+K12Cy2+y1y2 − 1 − y 2 ∑ i ≠ 1 , 2 N α i y i K 1 i + y 2 ∑ j ≠ 1 , 2 N α j y j K 2 j - 1 - y_2\sum_{i \neq 1,2}^N\alpha_iy_iK_{1i}+y_2\sum_{j \neq 1,2}^N\alpha_jy_jK_{2j} −1−y2i̸=1,2∑NαiyiK1i+y2j̸=1,2∑NαjyjK2j
由约束条件可以得到:
{ α 1 o l d y 1 + α 2 o l d y 2 = C ∑ i ≠ 1 , 2 N α i y i K 1 i = f ( x 1 ) − y 1 α 1 K 11 − y 2 α 2 K 12 − b ∑ j ≠ 1 , 2 N α j y j K 2 j = f ( x 2 ) − y 1 α 1 K 21 − y 2 α 2 K 22 − b \begin{cases} \alpha_1^{old}y_1 + \alpha_2^{old}y_2 = C\\ \sum\nolimits_{i \neq1,2}^N\alpha_iy_iK_{1i} = f(x_1) - y_1\alpha_1K_{11} - y_2\alpha_2K_{12} - b\\ \sum\nolimits_{j \neq1,2}^N\alpha_jy_jK_{2j} = f(x_2) - y_1\alpha_1K_{21} - y_2\alpha_2K_{22} - b \end{cases} ⎩⎪⎨⎪⎧α1oldy1+α2oldy2=C∑i̸=1,2NαiyiK1i=f(x1)−y1α1K11−y2α2K12−b∑j̸=1,2NαjyjK2j=f(x2)−y1α1K21−y2α2K22−b
代入上式化简后可得
α 2 n e w = α 2 o l d + y 2 { [ f ( x 1 ) − y 1 ] − [ f ( x 2 ) − y 2 ] } K 11 + K 22 − 2 K 12 \alpha_2^{new} = \alpha_2^{old} + \frac{y_2\{[f(x_1) - y_1] - [f(x_2) - y_2]\}}{K_{11}+K_{22}-2K_{12}} α2new=α2old+K11+K22−2K12y2{[f(x1)−y1]−[f(x2)−y2]}
我们得到了更新 α 2 \alpha_2 α2 的主要公式,但是由于 α 2 \alpha_2 α2 有取值范围 ( 0 , C ) (0,C) (0,C) ,所以需要进行一定的修改
α 1 y 1 + α 2 y 2 = k \alpha_1y_1+\alpha_2y_2 = k α1y1+α2y2=k
同时 y y y 的取值就只有 1 , − 1 1,-1 1,−1,所以容易讨论出最终的更新公式为
{ α 2 = h i g h , α 2 n e w ≥ h i g h ; α 2 = l o w , α 2 n e w ≤ l o w ; α 2 = α 2 n e w , l o w < α 2 n e w < h i g h \begin{cases} \alpha_2 = high, & \alpha_2^{new} \geq high ;\\ \alpha_2 = low, & \alpha_2^{new} \leq low ;\\ \alpha_2 = \alpha_2^{new}, & low < \alpha_2^{new}< high\\ \end{cases} ⎩⎪⎨⎪⎧α2=high,α2=low,α2=α2new,α2new≥high;α2new≤low;low<α2new<high
其中
{
l
o
w
=
m
a
x
(
0
,
−
k
)
h
i
g
h
=
m
i
n
(
C
,
C
−
k
)
\begin{cases} low = max(0,- k)\\ high = min(C,C - k) \end{cases}
{low=max(0,−k)high=min(C,C−k)
对应 α 1 \alpha_1 α1 的更新公式为
α 1 n e w = α 1 o l d + y 1 y 2 ( α 2 o l d − α 2 n e w ) \alpha_1^{new} = \alpha_1^{old} + y_1y_2(\alpha_2^{old} - \alpha_2^{new}) α1new=α1old+y1y2(α2old−α2new)
接下来给出 b b b 的更新公式
{ b 1 n e w = − E 1 − y 1 K 11 ( α 1 n e w − α 1 o l d ) − y 2 K 21 ( α 2 n e w − α 2 o l d ) + b o l d , b 2 n e w = − E 2 − y 1 K 12 ( α 1 n e w − α 1 o l d ) − y 2 K 22 ( α 2 n e w − α 2 o l d ) + b o l d , b n e w = b 1 n e w + b 2 n e w 2 \begin{cases} b_1^{new} = -E_1 - y_1K_{11}(\alpha_1^{new} - \alpha_1^{old}) - y_2K_{21}(\alpha_2^{new} - \alpha_2^{old}) + b^{old},\\ b_2^{new} = -E_2 - y_1K_{12}(\alpha_1^{new} - \alpha_1^{old}) - y_2K_{22}(\alpha_2^{new} - \alpha_2^{old}) + b^{old},\\ b_{new} = \frac{b_1^{new}+b_2^{new}}{2}\\ \end{cases} ⎩⎪⎨⎪⎧b1new=−E1−y1K11(α1new−α1old)−y2K21(α2new−α2old)+bold,b2new=−E2−y1K12(α1new−α1old)−y2K22(α2new−α2old)+bold,bnew=2b1new+b2new
其中
E i = f ( x i ) − y i E_i = f(x_i) - y_i Ei=f(xi)−yi
为预测误差
那么如何选取 α 1 , α 2 \alpha_1,\alpha_2 α1,α2 ?
在已经选取了 α 1 \alpha_1 α1 的条件下,我们通过选取与 α 1 \alpha_1 α1 对应的预测误差值 差异最大的预测误差对应的样本,即
arg j ≠ i max ∣ E j − E i ∣ \arg\limits_{j \neq i}\max|E_j - E_i| j̸=iargmax∣Ej−Ei∣
第一个 α \alpha α 的选取规则可以为:
初始选择为循环选择所有 α i \alpha_i αi ,然后每一次循环优化不为0的 α i \alpha_i αi 即可。