支持向量机
支持向量机(SVM)是一种用于解决二分类问题的模型,与之前所有的模型相比,它要复杂得多。原因在于它涉及到的理论涵盖凸优化理论、对偶理论与核技巧等。最初,SVM适用于线性可分的数据集,但是引入了核函数后,它也能被用于线性不可分的情形。本质上,SVM是一个二次规划问题,现有的许多软件都可以用于求解,但考虑到效率问题,实际求解过程中运用的是John Platt提出的SMO算法。在深度学习出现之前,SVM被认为是效果最好、最强大的模型。
SVM的核心思想
SVM的目标还是在于寻找一个超平面,将两种不同类别的数据分开。但SVM与其他模型不同的是,样本的正例和负例分别用1和-1标记,而不是1和0,这种标记方式是SVM比较特殊的地方,对于推导过程至关重要。我们需要解决如下一个二分类的问题。
这个数据集是线性可分的,在二维空间中超平面退化为1条直线。我们给出了2种能将数据分开的超平面,如下。
显然,能够将这个数据集分开的超平面有无限多个,那么我们自然就要问一个问题:在这些超平面中,是否存在一个最好的超平面?SVM解决的正是这个问题,它能够在所有超平面中求解出一个最好的超平面。我们如何定义一个超平面有多“好”呢?好的超平面需要具备一定的鲁棒性。
实线代表分割超平面,圈出来的2个数据点就是支持向量。SVM认为,分割超平面应能将数据尽可能的分开,也就是数据点要离超平面足够远(两条虚线与分割超平面之间的距离),这样就能容忍更多的离群点,提高模型的鲁棒性。
硬间隔SVM
分割超平面可以写为 ,我们在分割超平面两边新增加两个超平面(图中的虚线)用以度量分割的间隔。它们总是可以写为
和
。我们不妨假设分割超平面为
,上下平移后
后,得到
和
,这三个平面两边同时除以
得到:
再令
就得到:
我们的目标是让这三个超平面之间的间隔尽可能大,同时要保证没有数据点落在间隔之间。我们定义 与
的间隔为
,则
与
的间隔也为
。因此我们只需要最大化
,同时保证所有数据点距离
的距离大于
即可。
如上图所示
位于
与
上,且向量
与
的法向量
平行,即
与
之间的夹角为0。则它们的内积为:
同时
其中, ),
),则