SVM

机器学习算法完整版见fenghaootong-github

SVM

  • Linear Support Vector Machine
  • Dual Support Vector Machine
  • Kernel Support Vector Machine
  • Soft-Margin Support Vector Machine

Linear Support Vector Mahine

对于一个线性分类器,怎么的线性分类器才是最好的呢?

  • 保证它的强壮性(就是可以容忍更多的噪声),就是让离这个分类器最近的点到这个分类器的距离间隔最大,这就是我们接下来要做的事情

  • 首先我们要找到一个分类器可以分割开数据,并且使这个分类器最胖,专业一点表示如下

max ⁡ w \max\limits_w wmax f a t n e s s ( w ) fatness(w) fatness(w)
目标是: w w w分类器使每个( X n , y n X_n,y_n Xn,yn)都正确,fatness( w w w) = min ⁡ n = 1 , . . . N \min\limits_{n=1,...N} n=1,...Nmin distance( x n x_n xn, w w w)

max ⁡ w \max\limits_w wmax m a r g i n ( w ) margin(w) margin(w)
目标是: 每个 y n W T x n > 0 y_nW^Tx_n>0 ynWTxn>0,margin( w w w) = min ⁡ n = 1 , . . . N \min\limits_{n=1,...N} n=1,...Nmin distance( x n x_n xn, w w w)

  • 加上常数项

max ⁡ b , w \max\limits_{b,w} b,wmax m a r g i n ( b , w ) margin(b,w) margin(b,w)
目标是: 每个 y n ( W T x n + b ) > 0 y_n(W^Tx_n+b)>0 yn(WTxn+b)>0,margin( b , w b,w b,w) = min ⁡ n = 1 , . . . N 1 ∣ ∣ w ∣ ∣ y n ( w T x n + b ) \min\limits_{n=1,...N} \frac{1}{||w||}y_n(w^Tx_n+b) n=1,...Nminw1yn(wTxn+b)

  • min ⁡ n = 1 , . . . N y n ( w T x n + b ) = 1 \min\limits_{n=1,...N} y_n(w^Tx_n+b)=1 n=1,...Nminyn(wTxn+b)=1时候 m a r g i n ( margin( margin(b,w ) = 1 ∣ ∣ w ∣ ∣ )= \frac{1}{||w||} )=w1

max ⁡ b , w 1 ∣ ∣ w ∣ ∣ \max\limits_{b,w} \frac{1}{||w||} b,wmaxw1

目标是: 每个 y n ( W T x n + b ) > 0 y_n(W^Tx_n+b)>0 yn(WTxn+b)>0 min ⁡ n = 1 , . . . N y n ( w T x n + b ) = 1 \min\limits_{n=1,...N} y_n(w^Tx_n+b)=1 n=1,...Nminyn(wTxn+b)=1

  • 最后的变形,这就是SVM的最初形式

min ⁡ b , w 1 2 w T w \min\limits_{b,w} \frac{1}{2}w^Tw b,wmin21wTw

目标是: 每个 y n ( W T x n + b ) > 1 y_n(W^Tx_n+b)>1 yn(WTxn+b)>1 对所有的n成立

  • 这是一个关于 ( b , w ) (b,w) (b,w)二次目标函数
  • 约束条件线性
  • 所以可以使用二次规划QP很容易的解决最优化问题

如果不是线性的

  • 可以通过特征转换: z n = Φ ( x n ) z_n = \Phi(x_n) zn=Φ(xn)

SVM和正则化的区别

minimizeconstraint
regularization E i n E_in Ein w T w &lt; = C w^Tw &lt;= C wTw<=C
SVM w T w w^Tw wTw E i n = 0 E_in=0 Ein=0[any more]

Dual Support Vector Machine

  • 非线性支持向量机

非线性支持向量机

min ⁡ b , w 1 2 w T w \min\limits_{b,w} \frac{1}{2}w^Tw b,wmin21wTw

目标是: 每个 y n ( W T z n + b ) ≥ 1 y_n(W^Tz_n+b)\ge1 yn(WTzn+b)1 对所有的n成立

  • 在解决非线性问题时,二次规划问题有 d ~ + 1 \widetilde{d} + 1 d +1个变量和N个条件
  • 如果 d ~ \widetilde{d} d 很大,或者无限怎么办?

首先我们用拉格朗日函数去掉限制

L ( b , w , α ) = 1 2 w T w + ∑ n = 1 N α n ( 1 − y n ( w T z n + b ) ) \mathcal{L}(b,w,\alpha) = \frac{1}{2}w^Tw + \sum\limits_{n=1}^N\alpha_n(1-y_n(w^Tz_n+b)) L(b,w,α)=21wTw+n=1Nαn(1yn(wTzn+b))

S V M ≡ min ⁡ b , w ( max ⁡ a l l α n ≥ 0 L ( b , w , α ) ) = min ⁡ b , w SVM \equiv\min\limits_{b,w}(\max\limits_{all \alpha_n\ge0} \mathcal{L}(b,w,\alpha)) = \min\limits_{b,w} SVMb,wmin(allαn0maxL(b,w,α))=b,wmin($\infty $if violate; $\frac{1}{2} $if feasible)

经过一系列证明,得出强对偶关系

min ⁡ b , w ( max ⁡ a l l α n ≥ 0 L ( b , w , α ) ) = max ⁡ a l l α n ≥ 0 ( min ⁡ b , w L ( b , w , α ) ) \min\limits_{b,w}(\max\limits_{all \alpha_n\ge0} \mathcal{L}(b,w,\alpha)) = \max\limits_{all \alpha_n\ge0}(\min\limits_{b,w}\mathcal{L}(b,w,\alpha)) b,wmin(allαn0maxL(b,w,α))=allαn0max(b,wminL(b,w,α))

max ⁡ a l l α n ≥ 0 ( min ⁡ b , w 1 2 w T w + ∑ n = 1 N α n ( 1 − y n ( w T z n + b ) ) ) \max\limits_{all \alpha_n\ge0} (\min\limits_{b,w} \frac{1}{2}w^Tw + \sum\limits_{n=1}^N\alpha_n(1-y_n(w^Tz_n+b))) allαn0max(b,wmin21wTw+n=1Nαn(1yn(wTzn+b)))

去掉 b , w b,w b,w

max ⁡ a l l α n ≥ 0 , ∑ y n α n = 0 , w = ∑ α n y n z n − 1 2 ∣ ∣ ∑ n = 1 N α n y n z n ∣ ∣ 2 + ∑ n = 1 α n \max\limits_{all \alpha_n\ge0, \sum y_n\alpha_n=0,w=\sum\alpha_ny_nz_n}-\frac{1}{2}||\sum\limits_{n=1}^N\alpha_ny_nz_n||^2 + \sum\limits_{n=1}\alpha_n allαn0,ynαn=0,w=αnynznmax21n=1Nαnynzn2+n=1αn

使用KKT条件从最优的 α \alpha α得出 ( b , w ) (b,w) (b,w)

primal feasible: y n ( W T z n + b ) ≥ 1 y_n(W^Tz_n+b)\ge1 yn(WTzn+b)1
dual feasible: α n ≥ 0 \alpha_n\ge0 αn0
dual-inner optimal: ∑ y n α n = 0 , w = ∑ α n y n z n \sum y_n\alpha_n=0,w=\sum\alpha_ny_nz_n ynαn=0,w=αnynzn
primal-inner optimal: α n ( 1 − y n ( w T z n + b ) ) = 0 \alpha_n(1-y_n(w^Tz_n+b))=0 αn(1yn(wTzn+b))=0

变成标准的对偶形式

min ⁡ α 1 2 ∑ n = 1 N ∑ m = 1 N α n α m y n y m Z n T z m − ∑ n = 1 N α n \min\limits_\alpha \frac{1}{2}\sum\limits_{n=1}^N\sum\limits_{m=1}^N\alpha_n\alpha_m y_ny_mZ_n^Tz_m - \sum\limits_{n=1}^N\alpha_n αmin21n=1Nm=1NαnαmynymZnTzmn=1Nαn

∑ n = 1 N y n α n = 0 ; \sum\limits_{n=1}^Ny_n\alpha_n = 0; n=1Nynαn=0;
α n ≥ 0 \alpha_n \ge 0 αn0,对于n=1,2,…N

这看起来像是N个变量,N+1个条件
使用QP解决

这时如果N过大的化,也很难解
需要特殊的求解器

想到KKT条件 α n ( 1 − y n ( w T z n + b ) ) = 0 \alpha_n(1-y_n(w^Tz_n+b))=0 αn(1yn(wTzn+b))=0

如果 α n ≥ 0 \alpha_n \ge0 αn0 b = y n − w T z n b=y_n-w^Tz_n b=ynwTzn
刚好 α n &gt; 0 \alpha_n &gt; 0 αn>0时,就是在边界上的点(SV)

所以只需要用边界上的点计算w: w = ∑ n = 1 N α n y n z n = ∑ S V α n y n z n w=\sum\limits_{n=1}^N\alpha_ny_nz_n = \sum\limits_{SV}\alpha_ny_nz_n w=n=1Nαnynzn=SVαnynzn
只需要用边界上的点计算b: b = y n − w T z n b=y_n-w^Tz_n b=ynwTzn

原始SVM和对偶SVM比较

变量从 d ~ + 1 \widetilde{d} + 1 d +1到N,使用所有的点
限制条件从N到N+1,仅使用边界上的点

但这时候并没有与 d ~ \widetilde{d} d 完全脱离关系
q n , m q_{n,m} qn,m = y n y m z n T z m =y_ny_mz_n^Tz_m =ynymznTzm 仍然是 d ~ \widetilde{d} d 维中计算内积

Kernel Support Vector Machine

q n , m q_{n,m} qn,m = y n y m z n T z m =y_ny_mz_n^Tz_m =ynymznTzm d ~ \widetilde{d} d 维中计算内积
** z n T z m = ϕ ( x n ) T ϕ ( x m ) z_n^Tz_m=\phi(x_n)^T\phi(x_m) znTzm=ϕ(xn)Tϕ(xm) **

用二次多项式作为例子

ϕ 2 ( x ) = ( 1 , x 1 , . . , x d , x 1 2 , . . . x 1 x d , x 2 x 1 , x 2 2 . . . . , x 2 x d , . . . , x d 2 ) \phi_2(x) = (1,x_1,..,x_d,x_1^2,...x_1x_d,x_2x_1,x_2^2....,x_2x_d,...,x_d^2) ϕ2(x)=(1,x1,..,xd,x12,...x1xd,x2x1,x22....,x2xd,...,xd2)

ϕ 2 ( x ) T ϕ 2 ( x ′ ) = 1 + ∑ i = 1 d x i x i ′ + ∑ i = 1 d ∑ j = 1 d x i x i ′ x j x j ′ = 1 + ∑ i = 1 d x i x i ′ + ∑ i = 1 d x i x i ′ ∑ j = 1 d x j x j ′ = 1 + x T x ′ + ( x T x ′ ) ( x T x ′ ) \phi_2(x)^T\phi_2(x^{&#x27;})\\= 1 + \sum\limits_{i=1}^d x_ix_i^{&#x27;} + \sum\limits_{i=1}^d\sum\limits_{j=1}^d x_ix_i^{&#x27;}x_jx_j^{&#x27;}\\=1 + \sum\limits_{i=1}^d x_ix_i^{&#x27;} + \sum\limits_{i=1}^dx_ix_i^{&#x27;}\sum\limits_{j=1}^d x_jx_j^{&#x27;}\\=1+x^Tx^{&#x27;} +(x^Tx^{&#x27;})(x^Tx^{&#x27;}) ϕ2(x)Tϕ2(x)=1+i=1dxixi+i=1dj=1dxixixjxj=1+i=1dxixi+i=1dxixij=1dxjxj=1+xTx+(xTx)(xTx)

通过转换可以把复杂度降低 O ( d 2 ) O(d^2) O(d2) O ( d ) O(d) O(d)

这就是核函数

K ϕ ( x , x ′ ) = ϕ ( x ) T ϕ ( x ′ ) K_\phi(x,x^{&#x27;})=\phi(x)^T\phi(x^{&#x27;}) Kϕ(x,x)=ϕ(x)Tϕ(x)
K ϕ 2 ( x , x ′ ) = 1 + x T x ′ + ( x T x ′ ) ( x T x ′ ) K_{\phi_2}(x,x^{&#x27;})=1+x^Tx^{&#x27;} +(x^Tx^{&#x27;})(x^Tx^{&#x27;}) Kϕ2(x,x)=1+xTx+(xTx)(xTx)

q n , m q_{n,m} qn,m = y n y m z n T z m = y n y m K ( x n , x m ) =y_ny_mz_n^Tz_m=y_ny_mK(x_n,x_m) =ynymznTzm=ynymK(xn,xm)

这时候的b,用SV ( x s , y s ) (x_s,y_s) xs,ys)
b = y s − w T z s = y s − ( ∑ n = 1 N α n y n z n ) T = y s − ∑ n = 1 N α n y n K ( x n , x s ) b=y_s-w^Tz_s=y_s-(\sum\limits_{n=1}^N\alpha_ny_nz_n)^T=y_s-\sum\limits_{n=1}^N\alpha_ny_nK(x_n,x_s) b=yswTzs=ys(n=1Nαnynzn)T=ysn=1NαnynK(xn,xs)

optimal hypothesis g S V M g_{SVM} gSVM: test input:x

g S V M = s i g n ( w T ϕ ( x ) + b ) = s i g n ( ∑ n = 1 N α n y n K ( x n , x ) + b ) g_{SVM}=sign(w^T\phi(x) + b) = sign(\sum\limits_{n=1}^N\alpha_ny_nK(x_n,x)+b) gSVM=sign(wTϕ(x)+b)=sign(n=1NαnynK(xn,x)+b)

这时候就与 d ~ \widetilde{d} d 完全无关了
时间复杂度为 O ( N 2 ) O(N^2) O(N2)
仅仅使用SV进行预测

转换成一般的二项式核函数

k 2 ( x , x ′ ) = ( 1 + γ x T x ′ ) 2 γ &gt; 0 k_2(x,x^{&#x27;})=(1+\gamma x^Tx^{&#x27;})^2 \\\gamma&gt;0 k2(x,x)=(1+γxTx)2γ>0

一般的多项式核函数
k Q ( x , x ′ ) = ( ζ + γ x T x ′ ) Q γ &gt; 0 ζ ≥ 0 k_Q(x,x^{&#x27;})=(\zeta+\gamma x^Tx^{&#x27;})^Q \\\gamma&gt;0\\\zeta\ge0 kQ(x,x)=(ζ+γxTx)Qγ>0ζ0

高斯核函数(RBF)
k ( x , x ′ ) = e x p ( − γ ∣ ∣ x − x ′ ∣ ∣ 2 ) γ &gt; 0 k(x,x^{&#x27;})=exp(-\gamma||x-x^{&#x27;}||^2) \\\gamma&gt;0 k(x,x)=exp(γxx2)γ>0

γ \gamma γ太大,也会过拟合

线性核的优点和缺点

K ( x , x ′ ) = x T x ′ K(x,x^{&#x27;})=x^Tx^{&#x27;} K(x,x)=xTx

优点:

  • 做什么问题都要从最简单的线性开始
  • 解起来比较快
  • 用W和SVs可以解释所有

缺点

  • 不能解决线性不可分的点

多项式核的优点和 缺点

k Q ( x , x ′ ) = ( ζ + γ x T x ′ ) Q k_Q(x,x^{&#x27;})=(\zeta+\gamma x^Tx^{&#x27;})^Q kQ(x,x)=(ζ+γxTx)Q

优点:

  • 比线性的限制少

缺点:

  • 当Q大的时候不容易解
  • 参数多,不宜选择

高斯核优点和缺点

k ( x , x ′ ) = e x p ( − γ ∣ ∣ x − x ′ ∣ ∣ 2 ) k(x,x^{&#x27;})=exp(-\gamma||x-x^{&#x27;}||^2) k(x,x)=exp(γxx2)

优点:

  • 比线性和多项式核更有力度
  • 边界点数量少
  • 一个参数,容易选择

缺点:

  • 容易过拟合
  • 比线性核慢

怎么样避免高斯核和其他核的过拟合?

Soft-Margin Support Vector Machine

之前的方法都是Hard-Margin SVM,即所有的样本都正确分类才行,这往往需要更多更复杂的特征转换,甚至造成过拟合。

本节课将介绍一种Soft-Margin SVM,目的是让分类错误的点越少越好,而不是必须将所有点分类正确,也就是允许有noise存在。这种做法很大程度上不会使模型过于复杂,不会造成过拟合,而且分类效果是令人满意的。

把SVM转换成如下形式:

min ⁡ b , w 1 2 w T w + C ⋅ ∑ n = 1 N [ &NegativeThinSpace; [ y n ≠ s i g n ( w T z n + b ) ] &NegativeThinSpace; ] \min_{b,w} \frac{1}{2}w^Tw + C\cdot \sum_{n=1}^{N}[\![y_n \ne sign(w^Tz_n + b)]\!] b,wmin21wTw+Cn=1N[[yn̸=sign(wTzn+b)]]
对于正确的点 y n ( w T z n + b ) ≥ 1 y_n(w^Tz_n + b) \ge 1 yn(wTzn+b)1
对于错误的点 y n ( w T z n + b ) ≥ − ∞ y_n(w^Tz_n + b) \ge -\infty yn(wTzn+b)

两式合并:
min ⁡ b , w 1 2 w T w + C ⋅ ∑ n = 1 N [ &NegativeThinSpace; [ y n ≠ s i g n ( w T z n + b ) ] &NegativeThinSpace; ] \min_{b,w} \frac{1}{2}w^Tw + C\cdot \sum_{n=1}^{N}[\![y_n \ne sign(w^Tz_n + b)]\!] b,wmin21wTw+Cn=1N[[yn̸=sign(wTzn+b)]]
条件:
y n ( w T z n + b ) ≥ 1 − ∞ ⋅ [ &NegativeThinSpace; [ y n ≠ s i g n ( w T z n + b ) ] &NegativeThinSpace; ] y_n(w^Tz_n + b) \ge 1 - \infty \cdot [\![y_n \ne sign(w^Tz_n + b)]\!] yn(wTzn+b)1[[yn̸=sign(wTzn+b)]]

上面的式子只是说点是否犯错误,但有的点犯得错误小有的大,上式中并没有区分,通过引入一个 ξ n \xi_n ξn来表示每个点犯错误的程度值。

min ⁡ b , w 1 2 w T w + C ⋅ ∑ n = 1 N ξ n \min_{b,w} \frac{1}{2}w^Tw + C\cdot \sum_{n=1}^{N}\xi_n b,wmin21wTw+Cn=1Nξn
条件:
y n ( w T z n + b ) ≥ 1 − ξ n , ξ n ≥ 0 y_n(w^Tz_n + b) \ge 1 - \xi_n, \xi_n \ge 0 yn(wTzn+b)1ξn,ξn0

参数C表示尽可能选择宽边界和尽可能不要犯错两者之间的权衡,因为边界宽了,往往犯错误的点会增加。large C表示希望得到更少的分类错误,即不惜选择窄边界也要尽可能把更多点正确分类;small C表示希望得到更宽的边界,即不惜增加错误点个数也要选择更宽的分类边界。

与之对应的QP问题中,由于新的参数 ξ n \xi_n ξn 的引入,总共参数个数为 $\hat d+1+N $,限制条件添加了 ξ n ≥ 0 \xi_n\geq0 ξn0 ,则总条件个数为2N。

对偶问题

拉格朗日函数表示为:

L ( b , w , ξ , α , β ) = 1 2 w T w + C ⋅ ∑ n = 1 N ξ n + ∑ n = 1 N α n ( 1 − ξ n − y n ( w T z n + b ) ) + ∑ n = 1 N β n ( − ξ n ) \mathcal{L}(b,w,\xi,\alpha,\beta) = \frac{1}{2}w^Tw + C\cdot \sum_{n=1}^{N}\xi_n + \sum_{n=1}^{N}\alpha_n(1-\xi_n-y_n(w^Tz_n + b)) + \sum_{n=1}^{N}\beta_n(-\xi_n) L(b,w,ξ,α,β)=21wTw+Cn=1Nξn+n=1Nαn(1ξnyn(wTzn+b))+n=1Nβn(ξn)

转换成对偶的形式:

max ⁡ α n ≥ 0 , β n ≥ 0 ( min ⁡ b , w , ξ 1 2 w T w + C ⋅ ∑ n = 1 N ξ n + ∑ n = 1 N α n ( 1 − ξ n − y n ( w T z n + b ) ) + ∑ n = 1 N β n ( − ξ n ) ) \max_{\alpha_n\ge 0,\beta_n\ge 0} ( \min_{b,w,\xi} \frac{1}{2}w^Tw + C\cdot \sum_{n=1}^{N}\xi_n + \sum_{n=1}^{N}\alpha_n(1-\xi_n-y_n(w^Tz_n + b)) + \sum_{n=1}^{N}\beta_n(-\xi_n) ) αn0,βn0max(b,w,ξmin21wTw+Cn=1Nξn+n=1Nαn(1ξnyn(wTzn+b))+n=1Nβn(ξn))

SVM算法经典实例

SVM算法经典实例

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值