支持向量机SVM 对偶问题 SMO求解

支持向量机SVM

SVM概述

p9aLHBD.jpg

图中红线就是最佳划分线,离红线最近两个点到分隔线的向量就是支持向量

假设数据是多维的,分隔线表达式为
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 a1a2an T x1x2xn 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(1yi(wTxi+b))=21∣∣ω∣∣2+iλiiλ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 bL=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λi21ijλ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.xL=02.λigi(x)=03.gi(x)04.xi0

故其对偶问题为
此时无 ω , 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λi21ijλ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+λ221(λ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)+λ221[(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})) λ2L=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(E1E2)

手算推导过程

p9vEsYR.jpg

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值