我相信,SVM理解到了一定程度后,是的确能在脑海里从头至尾推导出相关公式的,
最初分类函数,
最大化分类间隔,
max1/||w||,min1/2||w||^2,
凸二次规划,
拉格朗日函数,
转化为对偶问题,
SMO算法,
都为寻找一个最优解,一个最优分类平面。
—————————————————————————–某大牛
下面,我从以下5个方面介绍自己对SVM的浅显理解(如有错误,感谢指正):
一、SVM推导(包括最初分类函数、最大化margin、拉格朗日)
二、对偶问题求极值(硬间隔支持向量机)
三、SMO(待补充)
四、线性不可分,核函数
五、软间隔支持向量机与松弛变量
一、SVM推导(包括最初分类函数、最大化margin、拉格朗日)
二、对偶问题求极值(硬间隔支持向量机)
1) 、当所有约束条件都满足时,则有2式等于1/2||w||^2,亦即最初要最小化的量。
在要求约束条件得到满足的情况下最小化1/2||w||^2,实际上等价于直接最小化2式,如3式;
2)、 这里用P*表示这个问题的最优值,且和最初的问题是等价的。如果直接求解,那么一上来便得面对w和b两个参数,而又是不等式约束,这个求解过程不好做。不妨把最小和最大的位置交换一下如4式;交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用来表示。而且有d*≤P*,在满足某些条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。
3)、之所以从minmax的原始问题,转化为maxmin的对偶问题,一者因为是的近似解,二者,转化为对偶问题后,更容易求解。接着,就可以先求L 对w、b的极小,再求L 对阿尔法的极大。
如下求L 对w、b的极小:
其对偶问题就是:
再求L 对阿尔法的极大需要SMO求
三、SMO
四、线性不可分,核函数
将图w带进超平面函数:
决策规则可以用测试点和训练点的内积来表示,所以:
如果有一种方式可以在特征空间中直接计算内积〈φ(xi · φ(x)〉,就像在原始输入点的函数中一样,就有可能将两个步骤融合到一起建立一个非线性的学习器,这样直接计算法的方法称为核函数方法。如下,这里φ是从X到内积特征空间F的映射。
1)、核函数基本思想?
上图中的数据本身就是线性不可分的,此时咱们该如何把这两类数据分开呢?
一个理想的分界应该是一个“圆圈”而不是一条线(超平面)。如果用 X1 和 X2 来表示这
个二维平面的两个坐标的话,我们知道一条二次曲线(圆圈是二次曲线的一种特殊情况)的方程可以写作这样的形式:
注意上面的形式,如果我们构造另外一个五维的空间,其中五个坐标的值分别为 Z1=X1, Z2=X21, Z3=X2, Z4=X22, Z5=X1X2,那么显然,上面的方程在新的坐标系下可以写作:
关于新的坐标 Z ,这正是一个 hyper plane 的方程!也就是说,如果我们做一个映射 ϕ:R2→R5 ,将 X 按照上面的规则映射为 Z ,那么在新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了。这正是 Kernel 方法处理非线性问题的基本思想。
核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。
2)、那么,如何实现低维计算后再映射到高维呢 ?
如下两个向量:和
,
是之前的五维映射,先映射再内积后结果:
下面注意:
我们再定义一个2维to 5维空间的映射关系如下:
将此先映射到5维后再进行内积的结果同先在2维进行内积后加1再进行平方:
所以可以定义如下核函数(核函数:低维的内积经过计算 = 某种映射得到的高维的内积):
3)、几种核函数
多项式核
如上例
比线性核拟合程度更强,知道具体的维度,但是高次容易出现数值不稳定,参数选择比较多。
高斯核
拟合能力最强,但是要注意过拟合问题。不过只有一个参数需要调整。
如果选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果
选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数
,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一
线性核
简单,速度快,但是需要线性可分
这实际上就是原始空间中的内积。写代码方便,,只要写个模板或通用表达式,然后再代入不同的核,便可以了。
五、软间隔支持向量机与松弛变量
加了松弛变量后,那么新约束条件变为:
新的目标函数:
原来的对偶问题:
实际上都是为目标函数引入一个正则项,而上面的参数C被称之为惩罚因子。
惩罚因子的大小决定了对离群点的容忍程度(松弛的程度),比如,如果C是一个非常大的值,那么很小的松弛因子都会让目标函数的值边的很大,然后目标是在求一个最小值,这就意味着哪怕是个很小的松弛都不愿意容忍。还有一种极端的情况是如果C选定成一个无穷大的值,那么软分类间隔问题(soft margin)会退化称为一个硬分类间隔问题(hard margin)。
C越大意味着对训练数据而言能得到很好的分类结果,但是同时最大分类间隔就会变小,毕竟我们做模型不是为了在训练数据上有个多么优异的结果。相反的,如果C比较小,那么间隔就会变大,模型也就有了相对而言更好的泛化能力。两外,C较大对误分类惩罚增大。最小化目标函数包含两层含义:使间隔尽量大,同时使得误分类点个数尽量少。
拉格朗日函数:
求偏导后:
加松弛变量的对偶问题,增加了a小于C:
六、多分类问题
一般将二分类推广到多分类的方式有三种:一对一,一对多,多对多。
一对一:将N个类别两两配对,产生N(N-1)/2个二分类任务,测试阶段新样本同时交给所有的分类器,最终结果通过投票产生。
一对多:每一次将一个例作为正例,其他的作为反例,训练N个分类器,测试时如果只有一个分类器预测为正类,则对应类别为最终结果,如果有多个,则一般选择置信度最大的。从分类器角度一对一更多,但是每一次都只用了2个类别,因此当类别数很多的时候一对一开销通常更小(只要训练复杂度高于O(N)即可得到此结果)。
多对多:若干各类作为正类,若干个类作为反类。注意正反类必须特殊的设计。