机器学习之一文读懂SVM原理
Introduction
首先我们要明确SVM要解决的是一个分类问题,通过一个超平面对多维数据按照特征差异进行分类。首先我们需要思考如下问题:
1. 什么样的决策平面才是最好的
2. 特征数据本身就很难分该如何解决
3. 计算复杂度如何以及适合什么样场景下的应用
基于上述问题对svm进行推导。
1.决策平面的说明
我们通过下图的数据进行辅助理解:
首先通过二维平面上的数据进行模拟,中间的两条实线可以看做是中间的直线看成是svm的决策函数,虚线上的数据是svm的support vectors(支持向量)。
我们的目的就是要选择支持向量(虚线上的数据)离决策函数最远时的情况作为最终结果。
因此我们需要知道距离的计算方式,一般超平面的方程如下:
x表示一个样本数据,即上图中一个个的样本点,可以通过一个多维的向量进行描述,超平面和正负样本可通过下图进行表述:
x'和x''是决策平面上的点,x是样本空间中任意一个样本,x'和x‘’有如下关系:
因此有:
一次可以知道垂直于超平面上x’与x’’组成的向量,因此
垂直于超平面(根据向量垂直于平面上任意两点组成的向量可知)。因此空间点到超平面的距离可以根据距离公式计算得到。
可以理解为样本x与超平面x’点组成的向量在法向量方向的投影距离。其中表示单位法向量。
2.数据标签的定义
这里我们以最简单的一维数据作为样本数据进行输入,y表示对应的标签(±1),将x代入决策平面可得如下:
这里用φ(x)表示样本有一个个特征组成的向量。
3. 优化的目标函数
按照上述的一维数据,我们的优化目标就是找到一条线(w和b),使得支持向量即之前虚线上的点离优化目标这条线尽量远。将上面的距离公式可以简化得到我们的优化目标函数如下:
我们在对决策函数进行缩放后可以使得其输出的结果值>=1,因此有:
可知取等于1的结果为最小值,因此只需要知道取最大值时对应的w和b是我们需要训练得到的值。
可以根据如下变换进行目标函数的转换:
系数1/2是为了方便求导数,我们应用拉格朗日乘子法进行参数求解。
4. 拉格朗日乘子法求解
拉格朗日乘子法形如下图:
将我们的目标函数的约束条件进行移位如下:
并代入到转换后的最小化后的目标函数:中得到如下形式:
其中ai是我们要求的中间变量,通过求取ai的值来间接得到w和b的值,需要对目标函数w和b求偏导并代入原式得到关于ai的方程,因为有三个参数待求解上式遵循kkt条件并分别对w和b求偏导如下:
将求导结果代入原式公式得到如下结果:
根据kkt原理继续对a求极大值,并将极大值转极小值问题:
其中,ai>0是由于拉格朗日乘子法所自带的约束条件。当求得ai的值之后,根据前面的w和b的偏导信息求得值的信息。ai的求解十分复杂,我们可以通过一个特定的demo进行ai的求解,如下图所示:
根据已知条件 进行正负样本的展开得到上图a1,a2,a3的约束关系。
代入到求解ai公式中,可得:
因此需要对a1,a2求极小值(上式化简结果应该是+2a2,不是-),即需要对a1,a2求偏导,具体如下:
解在边界上可以通过一个凸函数进行抽象理解。这样就对应上了。将最终的求解结果带入到w和b中求得最终的超平面方程如下:
实际中,训练样本的维度很高,因此训练结果的w和b也是一个多维的数据,例如对一些图像数据的分类问题。
由于上式对w求偏导结果如下:
且a2=0,如下图:由于x2不在虚线上,即不是支持向量,对我们的w求解结果不产生影响,而所谓的支持向量即虚线上的点,对最终的训练结果产生实质性影响。这就是所谓支持向量的意义。