支持向量机(support vector machines, SVM)是一种二分类模型,用来解决二分类问题(将样本点分为正负两类),在机器学习中得到广泛应用。
基本模型:
如图,为超平面,线性可分的样本点集以超平面为界分为两块,一部分(平面正方向的正例)满足,另一部分(平面负方向的负例)满足。
事实上,像这样的超平面有无数多个,称为感知机;但感知机中保证间隔最大的超平面总是唯一的,且一定满足超平面到样本点的最小距离为。
如何找到这个超平面?
(为计算方便,将等价替换为)
为了求(满足条件的),使用拉格朗日乘子法:
拉格朗日目标函数
,
于是,原问题就转化为了
,
在得到对应的向量后,便可求出对应的,于是得到这个唯一的超平面。
必有且
对于任意训练样本 ,总有 或者 。大部分样本点属于前者,不会在最后求解模型参数的式子中出现;而后者所对应的样本点位于最大间隔边界上,是一个支持向量。因此,对SVM而言,训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
但实际上,并非所有的样本集都十分理想,比如噪点缩小间隔。为此,引入松弛变量,允许部分样本点不满足的约束。
于是,目标变为:
其中,为惩罚参数,需要根据实际效果不断调节。
如果线性不可分呢?
实际上,在低维中线性不可分的样本集,到了高维往往是可分的。
为此,需要找到一个映射,将低维的转换为高维的。
但是,当比较大时,求取映射的计算量大大增加。为了减少计算量,结合实际计算需求(只需要计算高维空间的内积),我们只需要求出高维空间内内积的计算方法即可。这个方法称作核函数,即。
Mercer定理:任意半正定的函数都可以作为核函数。(充分非必要条件)