1 支持向量机介绍
支持向量机(Support Vector Machine,SVM)常用于数据分类,也可以用于数据的回归预测中。
对于一个二分类,我们得到了以下两种分类器的决策边界(黑线和蓝线):
如果此时新加入一个属于红色数据点的新数据,黑色的线会把这个新的数据集分错,而蓝色的线不会。
以上的例子较为主观,客观地评判分类器的健壮性,我们需要引入一个概念:最大间隔。
最大间隔刻画着当前分类器与数据集的边界,以这两个分类器为例:
可以看到, 蓝色的线最大间隔是大于黑色的线的,所以我们会选择蓝色的线作为我们的分类器。
那么怎么知道那么,有没有更好的分类器,它具有更大的间隔?我们可以用SVM找到最优分类器。
我们将距离当前分类器最近的点,称之为支持向量(即上图圈出来的点)。
支持向量机为我们提供了在众多可能的分类器之间进行选择的原则,从而确保对未知数据集具有更高的泛化性。
1.1 软间隔
假设我们拿到的数据是这样子的:
这种情况并不容易找到最大间隔。
于是就引入了软间隔,相比于硬间隔而言,软间隔允许个别数据出现在间隔带中。
但是,如果没有一个原则进行约束,满足软间隔的分类器也会出现很多条。所以需要对分错的数据进行惩罚,SVC 函数中,有一个参数 C 就是惩罚参数。惩罚参数越小,容忍性就越大。
如C=1时:
C=0.2时:
可以看出惩罚参数 C=0.2 时,SVM 会更具包容性,从而兼容更多的错分样本。
1.2 超平面
有时数据可能没有办法利用线性分类器进行分类:
如果将二维(低维)空间的数据映射到三维(高维)空间中,便可以通过一个超平面对数据进行划分。
所以,我们映射的目的在于使用 SVM 在高维空间找到超平面的能力。
在 SVC 中,我们可以用高斯核函数来实现这以功能:kernel=‘rbf’
此时便完成了非线性分类。
2 SVM理论知识
2.1 SVM最优化问题
上一节我们知道SVM要使分类器的超平面与样本点的间隔最大化,对于任意超平面,可以使用线性方程描述:
在二维空间中,点(x,y)到直线Ax+By+C=0的距离公式为:
如果扩展到n维空间,点 x = (x1,x2 … xn)到直线wTx + b = 0的距离为:
其中
上一节我们知道支持向量是距离超平面最近的样本点,将这个距离设为d,那么其他点到超平面的距离都会大于d,所以有公式:
不等式左右两边同时除以d,得到:
这里||w||d肯定是一个正数,为了方便推导和优化,可以令其等于1,因为一个常数对目标函数的优化(我们只关注符号变化)并不会有影响,因此有:
将两个方程合并,可简写为:
至此我们就可以得到最大间隔超平面的上下两个超平面:
每个支持向量到超平面的距离为:
由
可得
因此距离d又可以写成:
我们的目标就是最大化这个距离:
这里乘上 2 倍也是为了后面推导,对目标函数没有影响。
通过之前的合并方程,可以得到支持向量:
所以最大距离改写为:
转换为:
之前的公式知道||w||有一个根号,为了方便计算,可得:
所以我们最后需要最优化的问题为:
2.2 对偶问题
2.2.1 拉格朗日乘数法
高等数学中的拉格朗日乘数法是一个等式约束优化问题:
令:
函数L(x,λ)就称为拉格朗日函数,参数λ称为拉格朗日乘子。
问题需要我们利用必要条件找到可能的极值点:
当然具体是否为极值点需根据问题本身的具体情况检验。这个方程组称为等式约束的极值必要条件。
等式约束下的 Lagrange 乘数法引入了l个 Lagrange 乘子,我们将 xi和λk一起看作优化变量,共有(n+l)个优化变量。
不等式优化问题,其主要思想是将不等式约束条件转变为等式约束条件,引入松弛变量,将松弛变量也是为优化变量。
以我们的最优化问题为例:
这里引入ai2,得到:
这里加平方主要为了不再引入新的约束条件,如果只引入 ai 那我们必须要保证ai >0才能保证这里的h=0。
由此我们将