支持向量机SVM
SVM概述
图中红线就是最佳划分线,离红线最近两个点到分隔线的向量就是支持向量
假设数据是多维的,分隔线表达式为
x
1
a
1
+
x
2
a
2
+
.
.
.
+
x
n
a
n
+
b
=
0
x_1a_1+x_2a_2+ ... +x_na_n+b=0
x1a1+x2a2+...+xnan+b=0
( a 1 a 2 ⋮ a n ) T ∗ ( x 1 x 2 ⋮ x n ) T + b = 0 \begin{pmatrix} a_1\\ a_2\\ \vdots\\ a_n \end{pmatrix}^T * \begin{pmatrix} x_1\\ x_2\\ \vdots\\ x_n \end{pmatrix}^T +b = 0 a1a2⋮an T∗ x1x2⋮xn T+b=0
就可以简化为
w
x
+
b
=
0
wx+b=0
wx+b=0
支持向量点到分隔线的距离
d
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
d=\dfrac{|w^Tx+b|}{||w||}
d=∣∣w∣∣∣wTx+b∣ 要使d最大,则
∣
∣
w
∣
∣
||w||
∣∣w∣∣最小
每个点都满足
y
i
(
w
T
x
i
+
b
)
⩾
1
y_i(w^Tx_i+b)\geqslant1
yi(wTxi+b)⩾1
所以目标函数为
{
min
∣
∣
w
∣
∣
y
i
(
w
T
x
i
+
b
)
⩾
1
\begin{cases} \min ||w||\\ y_i(w^Tx_i+b)\geqslant1\\ \end{cases}
{min∣∣w∣∣yi(wTxi+b)⩾1
利用拉格朗日定理就可以得出求解函数,如下
L ( ω , b , λ ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + λ i ∑ i ( 1 − y i ( w T x i + b ) ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i λ i − ∑ i λ i y i ( w T x i + b ) L(\omega,b,\lambda) = \dfrac{1}{2}{||\omega||}^2 + \lambda_i\sum\limits_{i}(1-y_i(w^Tx_i+b)) = \dfrac{1}{2}{||\omega||}^2 + \sum\limits_{i}\lambda_i - \sum\limits_{i}\lambda_iy_i(w^Tx_i+b) L(ω,b,λ)=21∣∣ω∣∣2+λii∑(1−yi(wTxi+b))=21∣∣ω∣∣2+i∑λi−i∑λiyi(wTxi+b)
对
L
(
λ
,
b
,
ω
)
求
λ
和
b
的偏导,当为
0
时结果如下
对L(\lambda,b,\omega)求\lambda和b的偏导,当为0时结果如下
对L(λ,b,ω)求λ和b的偏导,当为0时结果如下
∂
L
∂
b
=
−
∑
i
λ
i
y
i
=
0
\dfrac{\partial L}{\partial b} = -\sum\limits_i\lambda_iy_i=0
∂b∂L=−i∑λiyi=0
∂ L ∂ ω = ω − ∑ i λ i y i x i = 0 则 ω = ∑ i λ i y i x i \dfrac{\partial L}{\partial \omega} = \omega - \sum\limits_i\lambda_iy_ix_i=0 \quad则\quad\omega = \sum\limits_i\lambda_iy_ix_i ∂ω∂L=ω−i∑λiyixi=0则ω=i∑λiyixi
将w,b的取值代入原式
L
(
ω
,
b
,
λ
)
L(\omega,b,\lambda)
L(ω,b,λ)中,则为
L
(
λ
,
b
,
ω
)
=
∑
i
λ
i
−
1
2
∑
i
∑
j
λ
i
λ
j
y
i
y
j
x
i
T
x
j
T
L(\lambda,b,\omega) = \sum\limits_i\lambda_i - \dfrac{1}{2}\sum\limits_i\sum\limits_j\lambda_i\lambda_jy_iy_jx_i^Tx_j^T
L(λ,b,ω)=i∑λi−21i∑j∑λiλjyiyjxiTxjT
补充
原问题是
m
i
n
(
ω
,
b
)
m
a
x
(
λ
)
L
(
λ
,
b
,
ω
)
,
若满足强对偶条件条件,即可使用对偶问题求解,对偶问题是
m
a
x
(
λ
)
m
i
n
(
ω
,
b
)
L
(
λ
,
b
,
ω
)
原问题是min(\omega,b)max(\lambda)L(\lambda,b,\omega),若满足强对偶条件条件,即可使用对偶问题求解,对偶问题是max(\lambda)min(\omega,b)L(\lambda,b,\omega)
原问题是min(ω,b)max(λ)L(λ,b,ω),若满足强对偶条件条件,即可使用对偶问题求解,对偶问题是max(λ)min(ω,b)L(λ,b,ω)
强对偶条件为 1. 原问题为凸函数 2. g ( x ) ω ∗ x + b < 0 线性条件 3. 满足 K K T 条件 强对偶条件为1.原问题为凸函数2.g(x)\quad\omega*x+b<0\quad线性条件3.满足KKT条件 强对偶条件为1.原问题为凸函数2.g(x)ω∗x+b<0线性条件3.满足KKT条件
K K T 条件 1. ∂ L ∂ x = 0 2. λ i g i ( x ) = 0 3. g i ( x ) ⩽ 0 4. x i ⩾ 0 KKT条件1.\dfrac{\partial L}{\partial x}=0\quad2.\lambda_ig_i(x)=0\quad3.g_i(x)\leqslant0\quad 4.x_i\geqslant0 KKT条件1.∂x∂L=02.λigi(x)=03.gi(x)⩽04.xi⩾0
故其对偶问题为
此时无
ω
,
b
参数
m
a
x
(
λ
)
L
(
λ
,
b
,
ω
)
=
∑
i
λ
i
−
1
2
∑
i
∑
j
λ
i
λ
j
y
i
y
j
x
i
T
x
j
T
此时无\omega,b参数\quad max(\lambda)\quad L(\lambda,b,\omega) = \sum\limits_i\lambda_i - \dfrac{1}{2}\sum\limits_i\sum\limits_j\lambda_i\lambda_jy_iy_jx_i^Tx_j^T
此时无ω,b参数max(λ)L(λ,b,ω)=i∑λi−21i∑j∑λiλjyiyjxiTxjT
S M O 算法求 m a x ( λ ) SMO算法求max(\lambda) SMO算法求max(λ)
原理概要
SMO算法是一种启发式算法,基本思路为:如果所有变量的解满足此最优化问题的KKT条件,那么就得到了最优解,因为KKT条件是该最优化问题的充分必要条件。
否则,需要选择两个变量,并且固定其他变量,只针对这两个变量构建一个最优化问题,这里的两个变量一个是违反KKT条件最严重的那一个,另一个则是由约束条件确定。这样原问题就可以不断划分成若干个子问题,从而提高了整个算法的效率。
假设选择
λ
1
,
λ
2
\lambda_1,\lambda_2
λ1,λ2则求解函数为
L
(
λ
1
,
λ
2
)
=
λ
1
+
λ
2
−
1
2
(
λ
1
2
k
11
+
2
λ
1
y
1
λ
2
y
2
k
12
+
λ
2
2
k
22
+
2
∑
j
=
3
λ
1
y
1
λ
j
y
j
k
1
j
+
2
∑
j
=
3
λ
2
y
2
λ
j
y
j
k
2
j
)
L(\lambda_1,\lambda_2)=\lambda_1+\lambda_2-\dfrac{1}{2}(\lambda_1^2k_{11}+2\lambda_1y_1\lambda_2y_2k_{12}+\lambda_2^2k_{22}+2\sum\limits_{j=3}\lambda_1y_1\lambda_jy_jk_{1j}+2\sum\limits_{j=3}\lambda_2y_2\lambda_jy_jk_{2j})
L(λ1,λ2)=λ1+λ2−21(λ12k11+2λ1y1λ2y2k12+λ22k22+2j=3∑λ1y1λjyjk1j+2j=3∑λ2y2λjyjk2j)
补充
K
11
=
x
1
x
1
,
K
1
j
=
x
1
x
j
K_{11}=x_1x_1,K_{1j}=x_1x_j
K11=x1x1,K1j=x1xj以此类推
i,j大于3时,按常数处理
由于
λ
1
y
1
+
λ
2
y
2
+
∑
i
=
3
λ
i
y
i
=
0
假设
∑
i
=
3
λ
i
y
i
=
−
c
\lambda_1y_1+\lambda_2y_2+\sum\limits_{i=3}\lambda_iy_i=0\quad假设\sum\limits_{i=3}\lambda_iy_i=-c
λ1y1+λ2y2+i=3∑λiyi=0假设i=3∑λiyi=−c
λ
1
y
1
+
λ
2
y
2
=
c
则
λ
1
=
y
1
(
c
−
λ
2
y
2
)
\lambda_1y_1+\lambda_2y_2=c\quad则\lambda_1=y_1(c-\lambda_2y_2)
λ1y1+λ2y2=c则λ1=y1(c−λ2y2)
代入得
L
(
λ
2
)
=
y
1
(
c
−
λ
2
y
2
)
+
λ
2
−
1
2
[
(
c
−
λ
2
y
2
)
2
k
11
+
2
(
c
−
λ
2
y
2
)
λ
2
y
2
k
12
+
λ
2
2
k
22
+
2
∑
j
=
3
(
c
−
λ
2
y
2
)
λ
j
y
j
k
1
j
+
2
∑
j
=
3
λ
2
y
2
λ
j
y
j
k
2
j
]
L(\lambda_2)=y_1(c-\lambda_2y_2)+\lambda_2-\dfrac{1}{2}[(c-\lambda_2y_2)^2k_{11}+2(c-\lambda_2y_2)\lambda_2y_2k_{12}+\lambda_2^2k_{22}+2\sum\limits_{j=3}(c-\lambda_2y_2)\lambda_jy_jk_{1j}+2\sum\limits_{j=3}\lambda_2y_2\lambda_jy_jk_{2j}]
L(λ2)=y1(c−λ2y2)+λ2−21[(c−λ2y2)2k11+2(c−λ2y2)λ2y2k12+λ22k22+2j=3∑(c−λ2y2)λjyjk1j+2j=3∑λ2y2λjyjk2j]
对
L
求
λ
2
求导,得
对L求\lambda_2求导,得
对L求λ2求导,得
∂
L
∂
λ
2
=
y
2
(
f
(
x
1
)
−
y
1
−
(
f
(
x
2
)
−
y
2
)
+
λ
2
o
l
d
y
2
(
K
11
+
K
22
+
2
K
12
)
)
\dfrac{\partial L}{\partial \lambda_2}=y_2(f(x_1)-y_1-(f(x_2)-y_2)+\lambda_2^{old}y_2(K_{11}+K_{22}+2K_{12}))
∂λ2∂L=y2(f(x1)−y1−(f(x2)−y2)+λ2oldy2(K11+K22+2K12))
补充
f
(
x
1
)
−
y
1
=
E
1
f
(
x
2
)
−
y
2
=
E
2
K
11
+
K
22
+
2
K
12
=
ξ
f(x_1)-y_1=E_1\quad f(x_2)-y_2=E_2\quad K_{11}+K_{22}+2K_{12}=\xi
f(x1)−y1=E1f(x2)−y2=E2K11+K22+2K12=ξ
则 λ 2 n e w = λ 2 o l d + y 2 ( E 1 − E 2 ) ξ 则\quad \lambda_2^{new}=\lambda_2^{old}+\dfrac{y_2(E_1-E_2)}{\xi} 则λ2new=λ2old+ξy2(E1−E2)
手算推导过程