最近正好有时间将SVM的推导整理一遍,借此文章记录自己的学习过程, 在本文中借鉴了T老师的讲义和一些博文,以及李航的统计学习方法,若有不足之处,望海涵。
SVM
svm算法通俗的理解在二维上,就是找一分割线把两类分开,问题是如下图三条线都可以把红色点和黄色点分开,但哪条线是最优的呢?如果数据本身比较难分怎么办?这都是我们要考虑的问题。
决策边界:选出离样本点最远的线段。
我们需要让距离决策边界最近的点之间的距离最远。
1.距离的计算
x' x"所在平面的表达式为: ,其中,W为平面的法向量。
我们需要求得x到平面的距离dist(x, h), 那么我们只要求得xx'的距离, 然后对平面做竖直方向上的投影(既点x到平面的距离)即可。计算过程如下:
然后得到距离公式:
2.数据标签定义
3. SVM的优化目标
我们需要找到一条线(w和b),使得离该线段最近的点之间的距离最远,由上面的距离公式和数据的决策方程我们可以得出:
点到直线的距离为:
进而得到优化目标:
决策方程(w,b)可以进行放缩变换,使得其结果值|y|>=1:
4. 优化目标的求解
将目标函数进行转换:求最值大问题即求倒数最小值问题, 加入常数不影响(方便求导)
然后利用拉格朗日乘子法对其进行求解。
拉格朗日乘子法:
将我们需要求解的目标函数和约束条件通过拉格朗日进行计算:得到
多了个参数。
把上式获取的参数代入公式优化max值:
化解到最后一步,就可以获取最优的a值:
求正数最大值,相当于求负数的最小值。
以上就可以得到了超平面。