机器学习算法完整版见fenghaootong-github
SVM
- Linear Support Vector Machine
- Dual Support Vector Machine
- Kernel Support Vector Machine
- Soft-Margin Support Vector Machine
Linear Support Vector Mahine
对于一个线性分类器,怎么的线性分类器才是最好的呢?
-
保证它的强壮性(就是可以容忍更多的噪声),就是让离这个分类器最近的点到这个分类器的距离间隔最大,这就是我们接下来要做的事情
-
首先我们要找到一个分类器可以分割开数据,并且使这个分类器最胖,专业一点表示如下
wmax fatness(w)
目标是: w分类器使每个(Xn,yn)都正确,fatness(w) = n=1,...Nmin distance(xn,w)
wmax margin(w)
目标是: 每个ynWTxn>0,margin(w) = n=1,...Nmin distance(xn,w)
b,wmax margin(b,w)
目标是: 每个yn(WTxn+b)>0,margin(b,w) = n=1,...Nmin∣∣w∣∣1yn(wTxn+b)
- 当n=1,...Nminyn(wTxn+b)=1时候 margin(b,w)=∣∣w∣∣1
b,wmax∣∣w∣∣1
目标是: 每个yn(WTxn+b)>0 , n=1,...Nminyn(wTxn+b)=1
b,wmin21wTw
目标是: 每个yn(WTxn+b)>1 对所有的n成立
- 这是一个关于(b,w)二次目标函数
- 约束条件线性
- 所以可以使用二次规划QP很容易的解决最优化问题
![](QP.png)
如果不是线性的
- 可以通过特征转换: zn=Φ(xn)
SVM和正则化的区别
|
minimize |
constraint |
regularization |
Ein |
wTw<=C |
SVM |
wTw |
Ein=0[any more] |
Dual Support Vector Machine
非线性支持向量机
b,wmin21wTw
目标是: 每个yn(WTzn+b)≥1 对所有的n成立
- 在解决非线性问题时,二次规划问题有d+1个变量和N个条件
- 如果d很大,或者无限怎么办?
首先我们用拉格朗日函数去掉限制
L(b,w,α)=21wTw+n=1∑Nαn(1−yn(wTzn+b))
SVM≡b,wmin(allαn≥0maxL(b,w,α))=b,wmin($\infty $if violate; $\frac{1}{2} $if feasible)
经过一系列证明,得出强对偶关系
b,wmin(allαn≥0maxL(b,w,α))=allαn≥0max(b,wminL(b,w,α))
allαn≥0max(b,wmin21wTw+n=1∑Nαn(1−yn(wTzn+b)))
去掉b,w
allαn≥0,∑ynαn=0,w=∑αnynznmax−21∣∣n=1∑Nαnynzn∣∣2+n=1∑αn
使用KKT条件从最优的α得出(b,w)
primal feasible:yn(WTzn+b)≥1
dual feasible:αn≥0
dual-inner optimal:∑ynαn=0,w=∑αnynzn
primal-inner optimal:αn(1−yn(wTzn+b))=0
变成标准的对偶形式
αmin21n=1∑Nm=1∑NαnαmynymZnTzm−n=1∑Nαn
n=1∑Nynαn=0;
αn≥0,对于n=1,2,…N
这看起来像是N个变量,N+1个条件
使用QP解决
![](QP2.png)
这时如果N过大的化,也很难解
需要特殊的求解器
想到KKT条件αn(1−yn(wTzn+b))=0
如果αn≥0则b=yn−wTzn
刚好αn>0时,就是在边界上的点(SV)
所以只需要用边界上的点计算w:w=n=1∑Nαnynzn=SV∑αnynzn
只需要用边界上的点计算b:b=yn−wTzn
原始SVM和对偶SVM比较
![](svm.png)
变量从d+1到N,使用所有的点
限制条件从N到N+1,仅使用边界上的点
但这时候并没有与d完全脱离关系
qn,m=ynymznTzm 仍然是 d维中计算内积
Kernel Support Vector Machine
qn,m=ynymznTzm d维中计算内积
**znTzm=ϕ(xn)Tϕ(xm) **
用二次多项式作为例子
ϕ2(x)=(1,x1,..,xd,x12,...x1xd,x2x1,x22....,x2xd,...,xd2)
ϕ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(d2)到O(d)
这就是核函数
Kϕ(x,x′)=ϕ(x)Tϕ(x′)
Kϕ2(x,x′)=1+xTx′+(xTx′)(xTx′)
qn,m=ynymznTzm=ynymK(xn,xm)
这时候的b,用SV(xs,ys)
b=ys−wTzs=ys−(n=1∑Nαnynzn)T=ys−n=1∑NαnynK(xn,xs)
optimal hypothesis gSVM: test input:x
gSVM=sign(wTϕ(x)+b)=sign(n=1∑NαnynK(xn,x)+b)
这时候就与d完全无关了
时间复杂度为O(N2)
仅仅使用SV进行预测
转换成一般的二项式核函数
k2(x,x′)=(1+γxTx′)2γ>0
一般的多项式核函数
kQ(x,x′)=(ζ+γxTx′)Qγ>0ζ≥0
高斯核函数(RBF)
k(x,x′)=exp(−γ∣∣x−x′∣∣2)γ>0
γ太大,也会过拟合
线性核的优点和缺点
K(x,x′)=xTx′
优点:
- 做什么问题都要从最简单的线性开始
- 解起来比较快
- 用W和SVs可以解释所有
缺点
多项式核的优点和 缺点
kQ(x,x′)=(ζ+γxTx′)Q
优点:
缺点:
高斯核优点和缺点
k(x,x′)=exp(−γ∣∣x−x′∣∣2)
优点:
- 比线性和多项式核更有力度
- 边界点数量少
- 一个参数,容易选择
缺点:
怎么样避免高斯核和其他核的过拟合?
Soft-Margin Support Vector Machine
之前的方法都是Hard-Margin SVM,即所有的样本都正确分类才行,这往往需要更多更复杂的特征转换,甚至造成过拟合。
本节课将介绍一种Soft-Margin SVM,目的是让分类错误的点越少越好,而不是必须将所有点分类正确,也就是允许有noise存在。这种做法很大程度上不会使模型过于复杂,不会造成过拟合,而且分类效果是令人满意的。
把SVM转换成如下形式:
b,wmin21wTw+C⋅n=1∑N[[yn̸=sign(wTzn+b)]]
对于正确的点 yn(wTzn+b)≥1
对于错误的点 yn(wTzn+b)≥−∞
两式合并:
b,wmin21wTw+C⋅n=1∑N[[yn̸=sign(wTzn+b)]]
条件:
yn(wTzn+b)≥1−∞⋅[[yn̸=sign(wTzn+b)]]
上面的式子只是说点是否犯错误,但有的点犯得错误小有的大,上式中并没有区分,通过引入一个ξn来表示每个点犯错误的程度值。
b,wmin21wTw+C⋅n=1∑Nξn
条件:
yn(wTzn+b)≥1−ξn,ξn≥0
参数C表示尽可能选择宽边界和尽可能不要犯错两者之间的权衡,因为边界宽了,往往犯错误的点会增加。large C表示希望得到更少的分类错误,即不惜选择窄边界也要尽可能把更多点正确分类;small C表示希望得到更宽的边界,即不惜增加错误点个数也要选择更宽的分类边界。
与之对应的QP问题中,由于新的参数 ξn 的引入,总共参数个数为 $\hat d+1+N $,限制条件添加了 ξn≥0 ,则总条件个数为2N。
对偶问题
拉格朗日函数表示为:
L(b,w,ξ,α,β)=21wTw+C⋅n=1∑Nξn+n=1∑Nαn(1−ξn−yn(wTzn+b))+n=1∑Nβn(−ξ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算法经典实例
SVM算法经典实例