@TOC
详解SVM
一、什么是SVM
SVM是一种二类分类模型,与感知机不同的是,他的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机还包括核技巧,使他成为实质上的非线性分类器。
一句话总结:SVM就是通过监督学习来解决二分类问题
1. SVM定义
线性可分支持向量机:给定线性可分训练数据集,通过间隔最大化或等价的求解相应的凸二次规划问题学习得到的分离超平面为
以及相应的分类决策函数
称为线性可分支持向量机
如下图所示,红色代表正例,蓝色代表反例,训练数据集线性可分,有无数条直线能够将两类数据正确划分,而SVM就是能将两类数据正确划分并且间隔最大的直线
2. 函数间隔和几何间隔
首先我们定义任意一点到超平面
的距离
这个形式就是点到平面的距离公式,设一个点的坐标为,平面为
,则点到平面的距离为
(1)函数间隔
定义函数间隔(functional margin)
超平面关于训练数据集的函数间隔为超平面
关于
中所有样本点
的函数间隔最小值,其中
是特征,
是标签,则
上述函数间隔虽然可以表示分类预测的正确性和确信度,但是分离超平面中使用函数间隔是不可取的,因为只要成比例的改变,函数间隔就会变味原来的
倍,因此我们需要加入某些约束,例如对
加入某些约束,就得到了下面的几何间隔
(2)几何间隔
定义几何间隔(geometrical margin)
此时成比例的改变,几何间隔也不会变化了
注意:为什么变化的时候影响函数间隔会对我们的分类产生影响?这是因为
成比例的变化时,我们的超平面是不变的,但是函数间隔会变化,这样会影响我们的margin,影响分类
3. 支持向量
支持向量(support vector)就是在分类过程中支持margin的那些点,他们到超平面的距离相等,下图中用黑色圈圈出的点就是support vector
二、SVM求解
1. 问题描述
SVM的方法就是间隔最大化,也就是说求解能够正确划分训练数据集并且几何间隔最大的分离超平面,这里只讨论硬间隔最大化,也就是说训练数据集线性可分并且间隔相对较大;与之对应的是软间隔最大化,表示训练数据集近似可分
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面以充分大的确信度对训练数据进行分类,即不仅将正负实例分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开,具有很好的分类预测能力
最大间隔分类超平面
目的:最大化间隔并使得分类点大于此间隔
考虑到几何间隔和函数间隔
的关系,变形:
为了简化计算,取函数间隔,得到
上式等价于
,得到:
上述问题就是一个凸优化问题,下面利用对偶的方法来求解此问题
2. SVM的对偶形式
(1)对偶形式
引入拉格朗日对偶问题
令,此时的
,当然我们有约束条件,就是
,当不满足约束条件时令
,此时目标函数变为
其中,所以我们现在求解
关于
的最小值,再求关于
的最大值,转化为对偶问题的原因是方便求解
(2)求解
- 求解
得到
带入得到
- 求解
一般来说我们求解的是目标函数的最小值,所以将上述函数加上负号,修改为:
(3)KKT条件
在前两部分中我们已经将最初的优化问题转化为
,接下来我们用KKT条件来对
求解
可以直接算出,将
带入
可算出
,至少一个
此时我们已经得到了和
,又因为我们的超平面方程为
,所以得到
从上式可以看出,分类决策函数只依赖于输入以及训练样本输入的内积,并且
就被称为线性可分支持向量机的对偶形式