机器学习算法(三)- 支持向量机

1 背景

假设样本为 { x i , y i } i = 1 N \begin{Bmatrix} x_i,y_i \end{Bmatrix}_{i=1}^{N} {xi,yi}i=1N,其中 y ∈ { 1 , − 1 } y\in{\begin{Bmatrix} 1,-1 \end{Bmatrix}} y{1,1}, 意图构造分类器 y ^ = s i g n ( w T x + b ) \hat y=sign(w^Tx+b) y^=sign(wTx+b)

若样本可分,则满足条件的 w , b w,b w,b 有无穷多组解。

支持向量机解决的问题就是从这无穷多组解中,找到泛化性能最好的一组。

2 思想

假设样本点 ( x i , y i ) (x_i,y_i) (xi,yi) 到超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0 的距离为 d i d_i di ,
则泛化性能最好的 w ^ , b ^ \hat{w},\hat{b} w^,b^ 满足: w ^ , b ^ = a r g m a x w , b ( m i n ( d 1 , d 2 , . . . , d N ) ) \hat{w},\hat{b} = \underset{w,b}{argmax}(min(d_1,d_2,...,d_N)) w^,b^=w,bargmax(min(d1,d2,...,dN))
从几何角度去解释即:找到一超平面,使得所有样本点到平面的最小距离最大化。

3 推导

根据线性代数的知识, ( x i , y i ) (x_i,y_i) (xi,yi) 到超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0 的距离为
d i = 1 ∣ ∣ w ∣ ∣ ∣ w T x i + b ∣ d_i = \frac{1}{||w||}|w^Tx_i+b| di=w1wTxi+b

结合 y i ∈ { 1 , − 1 } y_i\in{\begin{Bmatrix} 1,-1 \end{Bmatrix}} yi{1,1},可去掉绝对值符号
d i = 1 ∣ ∣ w ∣ ∣ ( w T x i + b ) y i d_i = \frac{1}{||w||}(w^Tx_i+b)y_i di=w1(wTxi+b)yi

由于对 w , b w,b w,b 等比例缩放,得到的是同一超平面,因此存在 w , b w,b w,b 满足
m i n { ( w T x i + b ) y i } i = 1 N = 1 min\begin{Bmatrix} (w^Tx_i+b)y_i \end{Bmatrix}_{i=1}^{N} = 1 min{(wTxi+b)yi}i=1N=1

因此,可将问题简化为
w ^ , b ^ = a r g m a x w , b 1 ∣ ∣ w ∣ ∣ s . t       m i n ( w T x i + b ) y i = 1 \begin{aligned} &\hat{w},\hat{b} = \underset{w,b}{argmax}\frac{1}{||w||} \\ s.t \ &\ \ \ min(w^Tx_i+b)y_i=1 \end{aligned} s.t w^,b^=w,bargmaxw1   min(wTxi+b)yi=1

将公式进一步变形可得
w ^ , b ^ = a r g m i n w , b 1 2 w T w s . t      ( w T x i + b ) y i ≥ 1 \begin{aligned} &\hat{w},\hat{b} = \underset{w,b}{argmin}\frac{1}{2}w^Tw \\ s&.t \ \ \ \ (w^Tx_i+b)y_i \geq 1 \end{aligned} sw^,b^=w,bargmin21wTw.t    (wTxi+b)yi1

定义
L ( w , b , λ ) = 1 2 w T w − ∑ i = 1 N λ i [ ( w T x i + b ) y i − 1 ] s . t      ( w T x i + b ) y i − 1 ≥ 0 ,    λ i ≥ 0 \begin{aligned} L(w,b,\lambda) &= \frac{1}{2}w^Tw - \sum_{i=1}^{N}{\lambda_i[(w^Tx_i+b)y_i-1]} \\ s.t &\ \ \ \ (w^Tx_i+b)y_i-1\geq0,\ \ \lambda_i\geq0 \end{aligned} L(w,b,λ)s.t=21wTwi=1Nλi[(wTxi+b)yi1]    (wTxi+b)yi10,  λi0

由于 λ i ≥ 0 \lambda_i\geq0 λi0
m a x λ ≥ 0 L ( w , b , λ ) = { 1 2 w T w      ( w T x i + b ) y i − 1 ≥ 0 + ∞      ( w T x i + b ) y i − 1 < 0 \underset{\lambda\geq0}{max}L(w,b,\lambda) = \left\{ \begin{matrix} \frac{1}{2}w^Tw \ \ \ \ &(w^Tx_i+b)y_i-1\geq0 \\ +\infty \ \ \ \ &(w^Tx_i+b)y_i-1\lt0 \end{matrix} \right. λ0maxL(w,b,λ)={21wTw    +    (wTxi+b)yi10(wTxi+b)yi1<0

m i n w , b , λ i ≥ 0 L ( w , b , λ ) = m i n w , b ( 1 2 w T w , + ∞ ) = m i n w , b 1 2 w T w \underset{w,b,\lambda_i\geq0}{min}L(w,b,\lambda) = \underset{w,b}{min}(\frac{1}{2}w^Tw,+\infty) = \underset{w,b}{min}{\frac{1}{2}w^Tw} w,b,λi0minL(w,b,λ)=w,bmin(21wTw,+)=w,bmin21wTw

因此,可去掉 ( w T x i + b ) y i − 1 ≥ 0 (w^Tx_i+b)y_i-1\geq0 (wTxi+b)yi10 的约束,将原问题变形为
L ( w ^ , b ^ , λ ^ ) = m i n w , b m a x λ L ( w , b , λ )    s . t    λ ≥ 0 L(\hat{w},\hat{b},\hat\lambda) = \underset{w,b}{min}\underset{\lambda}{max}L(w,b,\lambda) \ \ s.t \ \ \lambda\geq0 L(w^,b^,λ^)=w,bminλmaxL(w,b,λ)  s.t  λ0

上式即为SVM的原问题。

4 计算

在上述SVM的原问题中,不能直接将 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ) λ \lambda λ 求导,考虑到函数 f ( w ) = 1 2 w T w f(w)=\frac{1}{2}w^Tw f(w)=21wTw 为凸函数,且约束条件 λ i ≥ 0 \lambda_i\geq0 λi0 满足Slater条件。

所以,SVM的原问题可等价转化为其对偶问题求解,也即
L ( w ^ , b ^ , λ ^ ) = m a x λ m i n w , b L ( w , b , λ ) = m a x λ m i n w , b ( 1 2 w T w − ∑ i = 1 N λ i [ ( w T x i + b ) y i − 1 ] )    s . t    λ ≥ 0 \begin{aligned} L(\hat{w},\hat{b},\hat\lambda) &= \underset{\lambda}{max}\underset{w,b}{min}L(w,b,\lambda) \\ &= \underset{\lambda}{max}\underset{w,b}{min}(\frac{1}{2}w^Tw - \sum_{i=1}^{N}{\lambda_i[(w^Tx_i+b)y_i-1])} \ \ s.t \ \ \lambda\geq0 \end{aligned} L(w^,b^,λ^)=λmaxw,bminL(w,b,λ)=λmaxw,bmin(21wTwi=1Nλi[(wTxi+b)yi1])  s.t  λ0

b b b求导可得
∑ i = 1 N λ i y i = 0 \sum_{i=1}^{N}\lambda_iy_i = 0 i=1Nλiyi=0

w w w求导可得
w = ∑ i = 1 N λ i y i x i w =\sum_{i=1}^{N}\lambda_iy_ix_i w=i=1Nλiyixi

将结果带入 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ),化简可得
L ( w ^ , b ^ , λ ^ ) = m a x λ ( ∑ i = 1 N λ i − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j x i T x j ) L(\hat{w},\hat{b},\hat\lambda) = \underset{\lambda}{max}(\sum_{i=1}^{N}{\lambda_i} - \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}{\lambda_i\lambda_jy_iy_jx_i^Tx_j}) L(w^,b^,λ^)=λmax(i=1Nλi21i=1Nj=1NλiλjyiyjxiTxj)

s . t      0 ≤ λ i ≤ C ,      ∑ i = 1 N λ i y i = 0 s.t \ \ \ \ 0 \leq \lambda_i \leq C, \ \ \ \ \sum_{i=1}^{N}{\lambda_iy_i}=0 s.t    0λiC,    i=1Nλiyi=0

5 SMO算法

为了求出满足条件的 λ \lambda λ, 结合约束条件 ∑ i = 1 N λ i y i = 0 \sum_{i=1}^{N}{\lambda_iy_i}=0 i=1Nλiyi=0,可使用SMO算法成对更新 λ i , λ j \lambda_i, \lambda_j λi,λj
详细过程见SMO算法详解,这里直接给出结论

x i , x j x_i, x_j xi,xj 的内积为 K i j K_{ij} Kij η = K 11 + K 12 − 2 K 12 \eta = K_{11}+K_{12}-2K_{12} η=K11+K122K12,误差 E i = w T x i + b − y i E_i = w^Tx_i+b-y_i Ei=wTxi+byi

5.1 更新 λ \lambda λ

更新后的 λ j \lambda_j λj
λ j n e w = λ j o l d + y j ( E i − E j ) η \lambda_j^{new} = \lambda_j^{old} + \frac{y_j(E_i-E_j)}{\eta} λjnew=λjold+ηyj(EiEj)

结合约束条件 0 ≤ λ i ≤ C 0 \leq \lambda_i \leq C 0λiC
λ j n e w = m i n ( m a x ( λ j n e w , L ) , H ) \lambda_j^{new} = min(max(\lambda_j^{new}, L), H) λjnew=min(max(λjnew,L),H)

其中
L = { m a x ( 0 , λ j o l d − λ i o l d )           ( y i ≠ y j ) m a x ( 0 , λ j o l d + λ i o l d − C )           ( y i = y j ) L = \left\{ \begin{matrix} max(0, \lambda_j^{old}-\lambda_i^{old}) \ \ \ \ \ \ \ \ \ &(y_i \neq y_j) \\ max(0, \lambda_j^{old}+\lambda_i^{old}-C) \ \ \ \ \ \ \ \ \ &(y_i = y_j) \end{matrix} \right. L={max(0,λjoldλiold)         max(0,λjold+λioldC)         (yi=yj)(yi=yj)

H = { m i n ( C , C + λ j o l d − λ i o l d )           ( y i ≠ y j ) m i n ( C , λ j o l d + λ i o l d )           ( y i = y j ) H = \left\{ \begin{matrix} min(C, C+\lambda_j^{old}-\lambda_i^{old}) \ \ \ \ \ \ \ \ \ &(y_i \neq y_j) \\ min(C, \lambda_j^{old}+\lambda_i^{old}) \ \ \ \ \ \ \ \ \ &(y_i = y_j) \end{matrix} \right. H={min(C,C+λjoldλiold)         min(C,λjold+λiold)         (yi=yj)(yi=yj)

结合约束条件 ∑ i = 1 N λ i y i = 0 \sum_{i=1}^{N}{\lambda_iy_i}=0 i=1Nλiyi=0,更新 λ i \lambda_i λi
λ i n e w = λ i o l d + y i y j ( λ j o l d − λ j n e w ) \lambda_i^{new} = \lambda_i^{old} + y_iy_j(\lambda_j^{old}-\lambda_j^{new}) λinew=λiold+yiyj(λjoldλjnew)

5.2 更新 b b b

根据互补松弛条件

b i = E i − ( λ i n e w − λ i o l d ) y i K i i − ( λ j n e w − λ j o l d ) y j K i j + b o l d b_i = E_i - (\lambda_i^{new}-\lambda_i^{old})y_iK_{ii} - (\lambda_j^{new}-\lambda_j^{old})y_jK_{ij} + b^{old} bi=Ei(λinewλiold)yiKii(λjnewλjold)yjKij+bold
b j = E j − ( λ i n e w − λ i o l d ) y i K i j − ( λ j n e w − λ j o l d ) y j K j j + b o l d b_j = E_j - (\lambda_i^{new}-\lambda_i^{old})y_iK_{ij} - (\lambda_j^{new}-\lambda_j^{old})y_jK_{jj} + b^{old} bj=Ej(λinewλiold)yiKij(λjnewλjold)yjKjj+bold

更新 b b b
b n e w = { b i           ( 0 < λ i < C ) b j           ( 0 < λ j < C ) b i + b j 2           ( o t h e r s ) b^{new} = \left\{ \begin{matrix} b_i \ \ \ \ \ \ \ \ \ &(0 \lt \lambda_i \lt C) \\ b_j \ \ \ \ \ \ \ \ \ &(0 \lt \lambda_j \lt C) \\ \frac{b_i+b_j}{2} \ \ \ \ \ \ \ \ \ &(others) \\ \end{matrix} \right. bnew=bi         bj         2bi+bj         (0<λi<C)(0<λj<C)(others)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anycall201

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值