最近看了下SVM的原理推导,写些我自己的理解。
SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。
先看一张图片
分类学习的最基本的思想就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开. 但能将训练样本分开的超平面可能有很多,如上图,最好是红色的那个,因为该划分超平面对样本局部扰动的“容忍”性最好。
优化目标
通俗讲,就是找到一个超平面或线,使得离该面或线最近的点能够最远。(这就是优化的核心,反复琢磨这句话)
数据集
D = {(x1,y1),(x2,y2),(x3,y3),…,(xm,ym)}, yi ∈ {-1,+1}
决策方程:
其中W={w1;w2;…wd}是法向量,决定了超平面的方向,b为位移项,决定了超平面与原点之间的距离。
距离方程:
决策方程满足:
样本中任意点x到超平面的距离可写成:
目标函数:
放缩变换
对于决策方程(w,b)通过放缩使其结果值Y>=1
目标函数通过放缩变换简化为:
当前目标:
极大值问题转换为极小值问题
拉格朗日乘子法求解
分别对w和b求偏导,分别得到两个条件(由于对偶性质)
结果带入原式得到
然后对 α 求极大值,满足以下条件:
极大值转换为极小值
同理求 α 的最小值带入w偏导式便求得w,然后把w带入决策方程得到b
综上便求得平面方程啦
soft-margin
软间隔:有时候数据中有一些噪音点,如果考虑它们,得到的超平面就不好了
如图,如果按照以上推理,我们得到的如实线所示,但实际中虚线的效果会更好。为了解决这个问题,引入松弛因子
新的目标函数:
其中,C是我们需要指定的一个超参数,当C趋近于很大时:意味着分类严格不能有错误,当C趋近于很小时:意味着可以有更大的错误容忍。
同理,用拉格朗日乘子法
然后对w,b,C求偏导再带回上式
是不是很熟悉的式子,没错,和之前的式子一样,只是对 α的约束条件更加严格
后面的求解过程又回到之前的推导过程啦,这里不再重复阐述。
核变换
之前所阐述的所有推导都建立在线性可分的基础上,如果遇到低维不可分的问题时,那么就会用到支持向量机高大上的一部分,即核变换。
核变换:既然低维不可分,那就映射到高维
核变换主要体现在样本特征空间计算内积的时候
这里需要核函数把低维映射到高维,通常使用的核函数是高斯核函数
这里使用一个可视化数据举例,左图使用线性核函数的结果,右图使用的高斯核函数做个高维空间映射后的结果。