什么叫支持向量:支持向量就是正确分类后,那些距离超平面很近的点。更通俗来说,比如一个栏杆把学生分为了男生女生,最靠近栏杆的学生就是支持向量,而这个最靠近的学生跟栏杆的垂直距离叫间隔。
(间隔的度量,这里我们用几何间隔,几何间隔就是求点到线的正常公式,还有一个函数间隔就是只取这个公式的分子部分
(中间实线为最优超平面)
输入输入与感知机一样,样本X和分类y(1,-1)
输出输出最佳的超平面参数θ
损失函数我们要最大化,支持向量到超平面的距离(几何间隔),我们最大化这个距离的目标函数为:
很明显,这个函数极其难优化,因为不同的w,我们要选不同的样本点的xi,但是我们经过一系列abaaba的操作后,就可以简化为下面的式子,我们的损失函数为:
(这里是abaaba操作,可以不看,具体操作如下:我们注意到与感知机一样,分子上下都有w,可以同时缩放w和b而不影响求最大值,那么我们同时放大N倍,使得N*y(wx+b)=1,于是我们整个公式就相当于求
对于上面这个式子,它叫做不等式约束条件下的最优化,又叫KKT条件问题,解决这种问题的方法我们有一个套路叫“拉格朗日函数法”,把有约束优化问题转化无约束优化问题:
对于上述式子,我们通过对偶形式转换,求w,b偏导数为0来得到w,b关于a的式子,并把总方程转化为只关于ai的式子:
通过SMO算法求a向量,最终可解得w,b
这里说一下求b的方法,找出S个支持向量,判断条件是a向量(形状为m*1)里面ai>0的点对应的i这个样本,就是支持向量,对于这个支持向量有公式如下: