SVM简介
支持向量机是建立在VC维理论和结构风险最小原理基础上,根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折衷,以期获得最好的推广能力。
- VC维可以理解为问题的复杂程度,后面我们知道SVM解决问题与样本的维度是无关的
- 与问题真实解之间的误差积累叫做真实风险
- 把分类器在样本数据上的分类结果与真实结果之间的差值叫做经验风险
- 泛化误差界,指出真实风险应该由两部分组成:经验风险和置信风险(我们在多大程度上相信分类器的结果)
R(w)≤Remp(w)+Φ(nh)R(w)\leq R_{emp}(w)+\Phi(\frac nh)R(w)≤Remp(w)+Φ(hn)
置信风险与样本数量(样本越大风险越小)和vc维有关(维度越高风险越大) - SVM正是这样一种努力最小化结构风险的算法
- SVM在小样本、非线性、高维模式识别中有优势。小样本是因为算法只关注少数的支持向量样本;非线性是指SVM通过核函数和松弛变量来解决数据线性不可分的情况
线性分类器
间隔:δ=y(wx+b)=∣g(x)∣\delta=y(wx+b)=|g(x)|δ=y(wx+b)=∣g(x)∣
几何间隔:δ几何=1∣∣w∣∣∣g(x)∣\delta_{几何}=\frac{1}{||w||}|g(x)|δ几何=∣∣w∣∣1∣g(x)∣
- 目标:选择最大化几何间隔,即min12∣∣w∣∣2min\frac{1}{2}||w||^2min21∣∣w∣∣2,通常我们固定间隔为1
- 将两类分类问题转成了数学形式,一个带约束的最小值问题:
min12∣∣w∣∣2min\frac{1}{2}||w||^2min21∣∣w∣∣2
s.t.yi[(wxi)+b]−1≥0s.t.\quad y_i[(wx_i)+b]-1\geq0s.t.yi[(wxi)+b]−1≥0 - 由于目标函数是二次函数,所有约束条件都是线性函数,且它的可行域是个凸集(有这么一个点的集合,其中任取两个点连成一条直线,这条直线上的点仍在这个集合的内部),所以它是个凸二次规划问题。
- 求解该问题可以用现成的QP优化包。此外由于这个问题的特殊性,还可以通过求解与原问题等价的对偶问题得到最优解,这就是线性可分条件下SVM的对偶算法,优点在于:(1)对偶问题更容易求解(2)可以自然的引入核函数
- 拉格朗日对偶性:
L(w,b,α)=12∣∣w∣∣2−∑i=1nαi(yi(wTxi+b)−1)L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^{n}\alpha_i(y_i(w^Tx_i+b)-1)L(w,b,α)=21∣∣w∣∣2−i=1∑nαi(yi(wTxi+b)−1)
目标函数:
maxai≥0minw,bL(w,b,α)\mathop{max}\limits_{a_i\geq0}\mathop{min}\limits_{w,b}L(w,b,\alpha)ai≥0maxw,bminL(w,b,α)
求解过程用到KKT条件等,略
核函数
- 解决线性不可分问题的基本思路:数据由低维向高维空间转化。假设有这样一个函数,它接受低维空间的输入值,却能算出高维空间的内积值,从而实现线性可分:
g(x)=K(w,x)+b=<w′,x′>+bg(x)=K(w,x)+b=<w',x'>+bg(x)=K(w,x)+b=<w′,x′>+b - 常见的核函数有RBF(径向基核函数)
K(x,y)=exp(−γ∣∣x−y∣∣2)K(x,y)=exp(-\gamma||x-y||^2)K(x,y)=exp(−γ∣∣x−y∣∣2)
松弛变量
- 若高维空间仍不满足线性可分,则可考虑添加松弛变量实现近似线性可分,所谓的松弛变量就是考虑到样本可能出错,引入容错性,则约束条件变为:
yi[(wxi)+b]≥1−ζi(i=1,2,3...l)(l是样本数)y_i[(wx_i)+b]\geq1-\zeta_i\quad(i=1,2,3...l)(l是样本数)yi[(wxi)+b]≥1−ζi(i=1,2,3...l)(l是样本数)
ζ≥0\zeta\geq0ζ≥0 - 由于引入了松弛变量,目标函数需要加入损失(惩罚因子),称为软间隔(没有引入松弛变量的称为硬间隔):
min12∣∣w∣∣2+C∑i=1lζimin\quad \frac{1}{2}||w||^2+C\sum_{i=1}^l\zeta_imin21∣∣w∣∣2+Ci=1∑lζi - 松弛变量的值实际上表示出了对应的点到底离群有多远,值越大,点越远
- 惩罚因子决定了你有多重视离群点带来的损失,越大说明越重视离群点
SVM用于多分类问题
- 一次性求解多分类面计算来太大
- 一类对其余,每次解决一个二分类问题,出现数据集倾斜
- 1v1solo式,分类器数量太多
- 1v1淘汰式,容易分错,回不了头