支持向量机(Support Vector Machine,SVM)
支持向量机是一种二分类模型。它的学习策略是间隔最大化,可以形式化为一个求解凸二次规划的问题,支持向量机的学习算法是求解凸二次规划的最优化问题。支持向量机的模型包括三种类型:线性可分支持向量机、线性支持向量机、非线性支持向量机。当训练数据线性可分时,通过硬间隔最大化,学习一个线性分类器,也即线性可分支持向量机;当训练数据近似可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
核函数表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机。
由于支持向量机是一种二分类模型,它并不能像softmax分类器那样学习一个多分类的模型。如果想要用其来学习多分类的模型,就需要将每一个类作为正类,其他类作为负类,学习一个分类器,直到对每一个类别都学习到一个分类器。
线性可分支持向量机
给定一个特征空间上的训练数据集
其中 yi 表示训练数据的类别。当 yi=+1 时,称 xi 为正例;当 yi=−1 时,称 xi 为负例。
给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
以及相应的分类决策函数
称为线性可分支持向量机。
支持向量机中的间隔是通过几何间隔以及函数间隔来刻画的,接下来就来介绍下这两种间隔。
函数间隔
对于给定的训练数据集 T 和超平面
一般来说,一个点距离分类平面的远近可以表示分类预测的确信程度。在超平面 w⋅x+b=0 确定的情况下, |w⋅x+b| 能够相对地表示点 x 距离超平面的远近。而
但函数间隔的缺点也非常明显。只要成比例的改变
几何间隔
对于给定的训练数据集 T 和超平面
超平面 (w,b) 关于样本点 (xi,yi) 的几何间隔一般是实例点到超平面的带符号的距离,当样本点被超平面正确分类时就是实例点到超平面的距离。因为几何间隔并不会出现函数间隔的那种缺点,所以在使分类器间隔最大化时,使用的是几何间隔。
间隔最大化
支持向量机学习的基本思想是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对线性可分的训练数据集而言,线性可分的超平面有无穷多个,但几何间隔最大的分离超平面是唯一的(有相应的定理可以对其证明)。间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据集进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(距离分类平面最近的实例点)也有足够大的确信度将它们分开。
原始最优化问题
间隔最大化线性可分支持向量机的最优化问题为:
考虑到几何间隔与函数间隔之间的关系,可以将原问题转化为一下问题:
考虑到函数间隔的性质:成比例地改变参数 w 和
支持向量
在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量。支持向量是使下列条件等号成立的点:
在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。支持向量的个数一般很少,所以支持向量机由很少的”重要的”训练样本确定。
学习的对偶算法
由于求解原问题并不容易,所以会通过拉格朗日函数将原问题转化为对偶问题,通过求解对偶问题使其满足KKT(Karush-Kuhn-Tucker)条件,从而求得原问题的解。接下来,就简单讨论下这里会涉及到的一些理论。
原始问题
假设 f(x),ci(x),hj(x) 是定义在 Rn 上的连续可微函数,考虑约束最优化问题
称此约束最优化问题为原始最优化问题或原始问题。
引入广义拉格朗日函数
这里, αi,βj 是拉格朗日乘子, αi≥0 。考虑 x 的函数:
这里下标 P 表示原始问题。
假设给定某个