一.前言
支持向量机(SVM)主要针对于线性可分和线性不可分(软间隔)和线性不可分的数据分布下使用,类似于逻辑回归(LR)是做不到线性不可分的和虽然线性可分但是需要软间隔的情况下。
二.原理流程
1.首先需要明确的前提条件是支持向量是未知的,并且带有软间隔的情况下是有(松弛变量)的。定义训练数据集:D={(x1,y1),(x2,y2).......(xN,yN)}(
xi为数据集第i个数据,标签要么为1,要么为-1。
2.定义几何间隔(算法最终围绕思想间隔最大化):假设超平面为f(x)=w1x+b1(1),那么任意样本点的几何间隔定义为:(2),那么如果是支持向量的几何间隔为:
(3)。(注:(2)式的理解说白了就是点到直线的距离(欧式距离)):
,(2)式的yi为了得到的值为正值,||w1||为向量w1的二范数。
3.最大化支持向量的几何距离为:(4),化简(4)式中约束条件得到:
(5);进而为了简洁令:
,得到:
(6)。
4.由于最大化,等效于最小化
,得到目标函数为(含约束条件):
(7)。
5.(7)式为典型的含有约束条件的凸二次规划问题,那么正面求解很难做到;所以运用拉格朗日乘子法得到拉格朗日乘子法目标函数,再利用对偶问题求解方法进行求解:(8)。
6.(8)式中≥0,并且我们数据集样本
≥0(9),所以得到:
那么原约束问题等效于:(11)
这个式子并不好求,里边有拉格朗日乘子并且为约束条件。所以利用对偶求解:
用(8)式分别对w2和b2求偏导可得:;将这两个结果带入(8)式可得:
利用序列最小化算法(SMO)和之前的kkt条件及式(16)等计算先求解得到,最终计算得到w2和b2:
对于任意训练样本,都会有 ;如果
则有
相反
,则样本不会出现在算法参数求解式子中,这也就说明了SVM最终的训练结果只与支持向量相关(求解模型参数过程也会得到前边刚开始所未知的支持向量)。
7.加入软间隔,也就是在训练样本中允许出现几何间隔小于支持向量的几何间隔:
用式(17)代替式(7)。
8.梳理一下大概流程:
输入数据集:D,设定惩罚参数C且;
构造凸优化问题(包括拉格朗日乘子法、对偶求解等):
也就是式子(16);
利用SMO进行求解得到:
最终求解得到超平面:
附上最终的图:
此图为示意图,并且三个方程等号右边的不是标签值,也不是特征值,只是表示几何间隔大小还是相对支持向量来说的。
三.非线性不可分SVM原理
对于非线性不可分来说,那么一种重要的途径就是降维或者升维,显然这个问题可以去升维试一下,通过非线性变换在高维进行线性可分;由于线性可分低纬状态下目标函数(16)是样本向量的内积,所以不需要在训练开始就进行非线性变换,而是用核函数(核技巧)等效代替并在式(16)直接替换,这里边为什么用核函数代替我想大家了解,在求解过程中就会求解出高纬的模型参数;由于特征直接含有了低纬特征的二次幂等,所哟得到的模型也就是曲面,那么就解决了线性不可分问题。大致流程为:
1.输入训练集:D
2.选取适当的核函数K(x,z)和惩罚项参数C,构造最终类似式(16)的凸二次规划问题:
3.找到 的一个分量
并满足
,
得到:
4.最终得到分类器函数为:
注意此表达式中核函数为高斯核。