机器学习算法完整版见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,...Nmin∣∣w∣∣1yn(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||} )=∣∣w∣∣1
max b , w 1 ∣ ∣ w ∣ ∣ \max\limits_{b,w} \frac{1}{||w||} b,wmax∣∣w∣∣1
目标是: 每个 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和正则化的区别
minimize | constraint | |
---|---|---|
regularization | E i n E_in Ein | w T w < = C w^Tw <= 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=1∑Nαn(1−yn(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} SVM≡b,wmin(allαn≥0maxL(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αn≥0maxL(b,w,α))=allαn≥0max(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αn≥0max(b,wmin21wTw+n=1∑Nαn(1−yn(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αn≥0,∑ynαn=0,w=∑αnynznmax−21∣∣n=1∑Nαnynzn∣∣2+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
αn≥0
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(1−yn(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=1∑Nm=1∑NαnαmynymZnTzm−n=1∑Nαn
∑
n
=
1
N
y
n
α
n
=
0
;
\sum\limits_{n=1}^Ny_n\alpha_n = 0;
n=1∑Nynαn=0;
α
n
≥
0
\alpha_n \ge 0
αn≥0,对于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(1−yn(wTzn+b))=0
如果
α
n
≥
0
\alpha_n \ge0
αn≥0则
b
=
y
n
−
w
T
z
n
b=y_n-w^Tz_n
b=yn−wTzn
刚好
α
n
>
0
\alpha_n > 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=1∑Nαnynzn=SV∑αnynzn
只需要用边界上的点计算b:
b
=
y
n
−
w
T
z
n
b=y_n-w^Tz_n
b=yn−wTzn
原始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^{'})\\= 1 + \sum\limits_{i=1}^d x_ix_i^{'} + \sum\limits_{i=1}^d\sum\limits_{j=1}^d x_ix_i^{'}x_jx_j^{'}\\=1 + \sum\limits_{i=1}^d x_ix_i^{'} + \sum\limits_{i=1}^dx_ix_i^{'}\sum\limits_{j=1}^d x_jx_j^{'}\\=1+x^Tx^{'} +(x^Tx^{'})(x^Tx^{'}) ϕ2(x)Tϕ2(x′)=1+i=1∑dxixi′+i=1∑dj=1∑dxixi′xjxj′=1+i=1∑dxixi′+i=1∑dxixi′j=1∑dxjxj′=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^{'})=\phi(x)^T\phi(x^{'})
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^{'})=1+x^Tx^{'} +(x^Tx^{'})(x^Tx^{'})
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=ys−wTzs=ys−(n=1∑Nαnynzn)T=ys−n=1∑Nα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=1∑Nα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 γ > 0 k_2(x,x^{'})=(1+\gamma x^Tx^{'})^2 \\\gamma>0 k2(x,x′)=(1+γxTx′)2γ>0
一般的多项式核函数
k
Q
(
x
,
x
′
)
=
(
ζ
+
γ
x
T
x
′
)
Q
γ
>
0
ζ
≥
0
k_Q(x,x^{'})=(\zeta+\gamma x^Tx^{'})^Q \\\gamma>0\\\zeta\ge0
kQ(x,x′)=(ζ+γxTx′)Qγ>0ζ≥0
高斯核函数(RBF)
k
(
x
,
x
′
)
=
e
x
p
(
−
γ
∣
∣
x
−
x
′
∣
∣
2
)
γ
>
0
k(x,x^{'})=exp(-\gamma||x-x^{'}||^2) \\\gamma>0
k(x,x′)=exp(−γ∣∣x−x′∣∣2)γ>0
γ \gamma γ太大,也会过拟合
线性核的优点和缺点
K ( x , x ′ ) = x T x ′ K(x,x^{'})=x^Tx^{'} K(x,x′)=xTx′
优点:
- 做什么问题都要从最简单的线性开始
- 解起来比较快
- 用W和SVs可以解释所有
缺点
- 不能解决线性不可分的点
多项式核的优点和 缺点
k Q ( x , x ′ ) = ( ζ + γ x T x ′ ) Q k_Q(x,x^{'})=(\zeta+\gamma x^Tx^{'})^Q kQ(x,x′)=(ζ+γxTx′)Q
优点:
- 比线性的限制少
缺点:
- 当Q大的时候不容易解
- 参数多,不宜选择
高斯核优点和缺点
k ( x , x ′ ) = e x p ( − γ ∣ ∣ x − x ′ ∣ ∣ 2 ) k(x,x^{'})=exp(-\gamma||x-x^{'}||^2) k(x,x′)=exp(−γ∣∣x−x′∣∣2)
优点:
- 比线性和多项式核更有力度
- 边界点数量少
- 一个参数,容易选择
缺点:
- 容易过拟合
- 比线性核慢
怎么样避免高斯核和其他核的过拟合?
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
[
​
[
y
n
≠
s
i
g
n
(
w
T
z
n
+
b
)
]
​
]
\min_{b,w} \frac{1}{2}w^Tw + C\cdot \sum_{n=1}^{N}[\![y_n \ne sign(w^Tz_n + b)]\!]
b,wmin21wTw+C⋅n=1∑N[[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
[
​
[
y
n
≠
s
i
g
n
(
w
T
z
n
+
b
)
]
​
]
\min_{b,w} \frac{1}{2}w^Tw + C\cdot \sum_{n=1}^{N}[\![y_n \ne sign(w^Tz_n + b)]\!]
b,wmin21wTw+C⋅n=1∑N[[yn̸=sign(wTzn+b)]]
条件:
y
n
(
w
T
z
n
+
b
)
≥
1
−
∞
⋅
[
​
[
y
n
≠
s
i
g
n
(
w
T
z
n
+
b
)
]
​
]
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+C⋅n=1∑Nξ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,ξn≥0
参数C表示尽可能选择宽边界和尽可能不要犯错两者之间的权衡,因为边界宽了,往往犯错误的点会增加。large C表示希望得到更少的分类错误,即不惜选择窄边界也要尽可能把更多点正确分类;small C表示希望得到更宽的边界,即不惜增加错误点个数也要选择更宽的分类边界。
与之对应的QP问题中,由于新的参数 ξ n \xi_n ξn 的引入,总共参数个数为 $\hat d+1+N $,限制条件添加了 ξ n ≥ 0 \xi_n\geq0 ξn≥0 ,则总条件个数为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+C⋅n=1∑Nξn+n=1∑Nαn(1−ξn−yn(wTzn+b))+n=1∑Nβ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) ) αn≥0,βn≥0max(b,w,ξmin21wTw+C⋅n=1∑Nξn+n=1∑Nαn(1−ξn−yn(wTzn+b))+n=1∑Nβn(−ξn))
SVM算法经典实例