支持向量机SVM浅析(待补充)

先发一张个人对svm的主要概念图:
在这里插入图片描述

1. 几何间隔与支持向量

 对于用于分类的支持向量机,它是个二分类的分类模型。也就是说,给定一个包含正例和反例(正样本点和负样本点)的样本集合,支持向量机的目的就是基于训练集D在样本空间找到一个划分超平面,将不同类别的样本分开,原则是使正例和反例之间的间隔最大。如下图所示:
在这里插入图片描述
在样本空间中,划分超平面可通过如下线性方程来描述:
在这里插入图片描述
其中w=(w1;w2;w3;…wn)为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。在进行分类的时候,遇到一个新的数据点x,将x代入f(x) 中,如果f(x)小于0则将x的类别赋为-1,如果f(x)大于0则将x的类别赋为1。

若样本被超平面成功分开,则在H1: y = wTx + b=+1 和 H2: y = wTx + b=-1 (总存在一个对w系数矩阵的缩放变化使H1 H2成立,即=1/-1)这两条线上的样本点称为“支持向量”,两个异类支持向量到超平面的距离之和称为“间隔”。

而SVM思想就是:试图寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,但是不是很敷衍地简单的分开,而是尽最大的努力使正例和反例之间的间隔相等且最大。
在这里插入图片描述
在这里插入图片描述
支持向量与间隔
H1和H2的距离就是|1+1|/ sqrt(w1 ^2+w1 ^2)=2/||w||。(本来是矩阵的第二范数,但是矩阵的范数等价性)也就是w的模的倒数的两倍。其中||w||为w的二阶范数(范数是一个类似于模的表示长度的概念),是单位向量(一个向量除以它的模称之为单位向量)。

也就是说,我们需要最大化margin=2/||w||,为了最大化这个距离,我们应该最小化||w||,并且保证没有数据点分布在H1和H2之间。 也就是,对于任何一个正样本yi=+1,它都要处于H1的右边,也就是要保证:y= wTx + b>=+1。对于任何一个负样本yi=-1,它都要处于H2的左边,也就是要保证:y = wTx + b<=-1。这两个约束,其实可以合并成同一个式子:yi (wTxi + b)>=1。
所以我们的问题就等价转化成了:

在这里插入图片描述

OK,到此为止,算是了解到了SVM的第一层,对于那些只关心怎么用SVM的朋友便已足够,不必再更进一层深究其更深的原理。

2. 对偶问题

在约束最优化问题中,常常利用拉格朗日对偶性(Lagrange duality)将原始问题转为对偶问题,通过解决对偶问题而得到原始问题的解。

对偶问题有非常良好的性质,以下列举几个:

1.对偶问题的对偶是原问题;
2.无论原始问题是否是凸的,对偶问题都是凸优化问题;
3.对偶问题可以给出原始问题一个下界;
4.当满足一定条件时,原始问题与对偶问题的解是完全等价的;

在这里插入图片描述

  因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。这个问题可以用现成的QP (Quadratic Programming) 优化包进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。

另一方面可以通过拉格朗日对偶性变换到对偶变量的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:

一,对偶问题往往更容易求解;

二,可以自然的引入核函数,进而推广到非线性分类问题。

首先先对原问题构建拉格朗日函数,为此需要引进拉格朗日乘子(Lagrange multiplier)αi0\alpha_i \ge 0, i=1,2,…n。则拉格朗日函数为:
在这里插入图片描述
在这里插入图片描述
至此可以进一步转化间隔最大化为上述等价问题,然后求奇对偶问题,由于弱对偶性,所以使用salter和kkt。

salter(Slater定理保证p= d)**:
在这里插入图片描述
简单说r就是,存在x,使不等式 约束中的“小于等于号”要严格取到“小于号”。

KKT(保证p = d*的解为最优解)*:
在这里插入图片描述

3. 软间隔

Hinge Loss 是机器学习领域中的一种损失函数,可用于“最大间隔(max-margin)”分类,其最著名的应用是作为SVM的目标函数。

在二分类情况下(有多种变形,平滑),公式如下:

L(y) = max(0 , 1 – t⋅y)

其中,y是预测值(-1到1之间),t为目标值(1或 -1)。其含义为,y的值在 -1到1之间即可,并不鼓励 |y|>1,即让某个样本能够正确分类就可以了,不鼓励分类器过度自信,当样本与分割线的距离超过1时并不会有任何奖励。目的在于使分类器更专注于整体的分类误差
面对一些非线性可分的情况下,允许SVM在少量样本上出错,即将之前的硬间隔最大化条件放宽一点,为此引入“软间隔(soft margin)”的概念(即允许少量样本不满足约束)。为了使不满足上述条件的样本点尽可能少,我们需要在优化的目标函数里面新增一个对这些点的惩罚项。最常用的是hinge损失:
在这里插入图片描述
可见在SVM软间隔中,参数t为1,z=yi(XiTW+b)y_{i}(X^T_{i}W+b),而之前的约束条件已知yi(XiTW+b)1y_{i}(X^T_{i}W+b)\ge1,也就是说正常划分成功的z都是大于等于1的,代入此hinge loss即当样本被正确划分时,损失函数为0,当被错误分类时,损失值为1-z,错分类越差则损失值越大。

此时目标函数由:
在这里插入图片描述
在这里插入图片描述
转化为:
在这里插入图片描述

其中C > 0称为惩罚参数,C越小时对误分类惩罚越小,越大时对误分类惩罚越大,当C取正无穷时就变成了硬间隔优化(即要求所有的样本都被正确划分)。实际应用时我们要合理选取C,C越小越容易欠拟合,C越大越容易过拟合。(此处和正则化原理类似)

然后对目标函数构造拉格朗日函数,对偶函数,slater,kkt求解。

4. 非线性分类

硬间隔和软间隔都是解决线性分类问题,面对非线性问题,SVM采用核技巧将低维数据放到高维处理,让问题在高维中变得线性可分。

SVM与其他机器学习算法对比(图):

在这里插入图片描述

5. 总结

任何算法都有其优缺点,支持向量机也不例外。

支持向量机的优点是:

1.由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
2.不仅适用于线性线性问题还适用于非线性问题(用核技巧)。
3.拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。
4.理论基础比较完善(例如神经网络就更像一个黑盒子)。

支持向量机的缺点是:

1.二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)
2.只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)

svm-知乎
svm拉格朗日对偶问题-知乎
拉格朗日对偶性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章