支持向量机(一)--软硬间隔与支持向量机

我们知道较早的分类模型——感知机(1957年)是二类分类的线性分类模型,也是后来神经网络和支持向量机的基础。支持向量机(Support vector machines)最早也是是一种二类分类模型,经过演进,现在成为了既能处理多元线性和非线性的问题,也能处理回归问题。在深度学习风靡之前,应该算是最好的分类算法。但目前SVM的应用仍然很多,尤其是在小样本集上。

一、目录

1、目录

2、感知机

3、硬间隔与支持向量机

4、软间隔与支持向量机

5、合页损失函数

   

二、感知机(前戏)

  感知机模型是一种二分类的线性分类器,只能处理线性可分的问题,感知机的模型就是尝试找到一个超平面将数据集分开,在二维空间这个超平面就是一条直线,在三维空间就是一个平面。感知机的分类模型如下:

感知机的超平面是wx+b = 0。

将上述分段函数整合成 y*(wx+b) > 0,则满足该式子的样本点即分类正确的点,不满足的即分类错误的点,我们的目标就是找到这样一组参数w,b 使得将训练集中的正类点和负类点分开。

接下来定义我们的损失函数(损失函数是一种衡量损失和错误的程度的函数),我们可以通过定义分类错误的样本的个数来作为损失函数,但是这种损失函数不是参数w,b 的连续可导函数,因此不容易优化。我们知道对于误分类的点

有-y(wx+b) > 0,我们让所有的误分类点到超平面的距离和最小(注意:感知机的损失函数只针对误分类点,而不是整个训练集):

 其中M是表示误分类的样本集合, 当w,b 成倍数增大时,并不会改变我们的超平面,||w||的值也会相应的增大,因此令||w|| = 1 不会影响我们的结果。最终的感知机损失函数如下:

   

三、硬间隔与支持向量机

函数间隔:

上式中函数间隔并不能正常反应点到超平面的距离,在感知机模型里我们也提到,当分子成比例的增长时,分母也是成倍增长。为了统一度量,我们需要对法向量w加上约束条件,这样我们就得到了几何间隔γ,以下式子定义出距离超平面最近的点,即支持点(这也是支持向量机名称的来源),定义为:

以下要求是最大间隔分类超平面:如果所有的样本不光可以被超平面分开,还和超平面保持一定的函数距离(下图函数距离为1),那么这样的分类超平面是比感知机的分类超平面优的。可以证明,这样的超平面只有一个。和超平面平行的保持一定的函数距离的这两个超平面对应的向量,我们定义为支持向量,如下图虚线所示。

   

说明:γ(帽子)表示的是函数间隔,而函数间隔的取值是会随着w,b 成倍数变化而变化的,并不会影响最终的结果,因此令γ(帽子) = 1,则我们最终的问题可以表述为:

上面的问题中的 1/2||w||2 是凸函数,同时约束不等式是仿射函数,因此这是一个凸二次规划问题,根据凸优化理论,我们可以借助拉格朗日函数将我们的约束问题转化为无约束的问题来求解,我们的优化函数可以表达为:

以下为求解过程:
【根据拉格朗日的对偶性,可以将原始问题转化为对偶问题(只要对偶问题存在,对偶问题的最优化解就是原问题的最优化解,一般对偶问题都比原始问题更容易求解)极大极小问题:

先对w,b求导求极小问题, 可以得到w,b的值:

将求得的解代入到拉格朗日函数中,可以得到下面的优化函数(将代入后原本的求α 的极大问题转换成了极小问题):

代换过程如上,由此得到以下结果:

因此只需要求得我们的α 的值就可以求得我们的w,b 的值(求α 的常用算法是SMO算法 可以参考 https://www.cnblogs.com/pinard/p/6111471.html)假设最终求得的α 的值为α*,则w,b可以表述成:

引入KTT条件(KTT条件是上面拉格朗日函数求最优解的必要条件):

 从KTT条件中可以看出,当yi(w*xi + b*) - 1 > 0 时,αi* = 0;当 αi* > 0 时,yi(w*xi + b*) - 1 = 0;

结合上面的w,b 表达式可以引出支持向量机的第二个亮点:w,b 参数只与满足 yi(w*xi + b*) - 1 = 0 的样本有关,而这些样本点就是离最大间隔超平面最近的点,我们将这些点称之为支持向量。因此很多时候支持向量在小样本集分类时也能表现的很好,也正是因为这个原因。(另外需注意:α 向量的个数是和训练集数量相等的,对与大的训练集,会导致所需要的参数数量增多,因此SVM在处理大的训练集时会比其他常见的机器学习算法要慢)

四、软间隔与支持向量机

    线性可分SVM的学习方法对于非线性的数据集是没有办法使用的, 有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分, 那么怎么可以处理这些异常点使数据集依然可以用线性可分的思想呢? 这里介绍线性SVM的软间隔最大化。下图两个显示了软间隔的重要性:

如上图所示,通常情况下一些噪音,或训练集中都会存在一些异常点,而这些异常点会导致训练集线性不可分,但除去这些异常点之后,剩下的样本就是线性可分的,而上面讲到的硬间隔最大化是无法处理线性不可分的问题,线性不可分意味着有些样本点的函数间隔是不能满足大于等于 1 的约束条件。因此我们对每个样本(xi, yi)引入一个松弛变量 ξi, 则我们的约束条件变为:

目标函数:

【简单对比下】

【问题求解】

使用拉格朗日函数:

首先我们来求优化函数对于w,b,ξ的极小值,这个可以通过求偏导数求得:

带入上式子:

所以简化为:

对于C−αi−μi=0,αi≥0,μi≥0这3个式子,我们可以消去μi,只留下αi,也就是说0≤αi≤C。 同时将优化目标函数变号,求极小值,再次简化为:

这就是软间隔最大化时的线性可分SVM的优化目标形式,和上面的硬间隔最大化的线性可分SVM相比,我们仅仅是多了一个约束条件0≤αi≤C。我们依然可以通过SMO算法来求上式极小化时对应的α向量就可以求出w和b了。

在软间隔最大化时,则稍微复杂一些,因为我们对每个样本(xi,yi)引入了松弛变量ξi。我们从下图来研究软间隔最大化时支持向量的情况,第i个点到对应类别支持向量的距离为。根据软间隔最大化时KKT条件中的对偶互补条件:

五、合页损失函数

先介绍下:合页损失函数又称为hinge 损失函数,其表达式如下:

线性支持向量机还有另外一种解释如下:

其中L(y(w∙x+b))=[1−yi(w∙x+b)]+称为合页损失函数(hinge loss function)。

对上述损失函数中的第一项可以理解为当样本分类正确且间隔大于1,即 yi(wxi + b) ≥ 1时,损失为0;而当 yi(wxi + b) < 1 时,损失为 1 - yi(wxi + b),注意在这里即使样本分类正确,但是间隔小于1 的也会计入损失,这就是支持向量机的苛刻性。下图是hinge损失函数和其他一些损失函数的比较:

   

绿线,如果点被正确分类,且函数间隔大于1,损失是0,否则损失是1−y(w∙x+b);

黑线:对于0-1损失函数,如果正确分类,损失是0,误分类损失1,

紫线:可见0-1损失函数是不可导的。对于感知机模型,感知机的损失函数是[−yi(w∙x+b)]+,这样当样本被正确分类时,损失是0,误分类时,损失是−yi(w∙x+b);

对于逻辑回归之类和最大熵模型对应的对数损失,损失函数是log[1+exp(−y(w∙x+b))]。

 

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

猜你喜欢

转载自www.cnblogs.com/yifanrensheng/p/11871540.html