支持向量机
@(2016/08/02)
支持向量机(support vector machine)是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;通过核技巧(kernel trick),使得支持向量机可以完成非线性空间上的分类。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题。
支持向量机包含三种由简至繁的模型:线性可分支持向量机(linear support vector machine in linearly separable case)、线性支持向量机(linear support vector machine)及非线性支持向量机(non-linear support vector machine)。
在线性可分支持向量机模型中,通过硬间隔最大化(hard margin maximization)从线性可分的训练数据中学习该线性分类器;在线性支持向量机模型中,通过软间隔最大化(soft margin maximization)从近似线性可分的训练数据中学习该线性分类器;在非线性支持向量机中,通过核技巧和软间隔最大化可从线性不可分的数据中学习该非线性分类器。事实上,无论是哪种模型,最终都是在特征空间中进行支持向量机的学习,只不过在前两种模型中,假设输入空间和特征空间的元素一一对应,并将输入空间中的输入映射为特征空间中的特征向量,而非线性支持向量机是利用一个从输入空间到特征空间的非线性映射将输入映射为特征向量的。
支持向量机的优点:
1) 可用于高维空间中的数据分类
2) 在数据维度高于样本个数时,仍然可以有效学习
3) 真正对支持向量机产生影响的是支持向量,通常支持向量只占一小部分,所以,其内存消耗低
4) 多功能性。可选的核有很多,既有常用的核函数,也可自行定制特殊的核函数。
1. 线性可分支持向量机
1.1 线性可分支持向量机——硬间隔最大化
给定训练集 T=(x1,y1),(x2,y2),...,(xN,yN),y=−1 or +1 ,支持向量机就是从 D 中找出具有最大间隔的超平面,超平面可由下式表示:
距离超平面最近的几个训练样本点使以上两式的等号成立,它们就是 支持向量(support vector),则两个异类支持向量到超平面的距离之和为
这里的 γ 就是该超平面分类边界的 几何间隔(geometric margin),则使得几何间隔最大且满足前述不等式,即
也可写为
这就是 支持向量机的基本型,是一个凸二次规划问题。
凸优化问题是指约束最优化问题
其中目标函数 f(w) 和约束函数 gi(w) 都是 Rn 上的连续可微的凸函数,约束函数 hi(w) 是 Rn 上的仿射函数。
综上,可得出线性可分支持向量机学习算法——最大间隔法。
算法 1 (线性可分支持向量机学习算法——最大间隔法)
输入:线性可分训练数据集 T=(x1,y1),(x2,y2),...,(xN,yN) ,其中, xi∈X=Rn,yi∈Y,i=1,2,...,N ;
输出:最大间隔分离超平面
(1) 构造并求解约束最优化问题:
求得最优解 w∗,b∗ 。
(2) 由此得到分离超平面:
可证明线性可分训练数据集的最大间隔分离超平面是存在且唯一的。
1.2 学习的对偶算法
为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可分支持向量机的对偶算法。这样做的优点,一是对偶问题往往更容易求解;二是自然引入核函数(kernel method)进而推广到非线性分类问题。
首先构建拉格朗日函数
其中 α=(α1,α2,...,αN)T 为拉格朗日乘子向量。
原始问题可表示为该拉格朗日函数的极小极大问题,即
由拉格朗日对偶性可得其 对偶问题为极大极小问题,即
为了求解对偶问题的最优解,需要先解决极小问题,然后求极大问题的解
(1) 求 minw,bL(w,b,α)
令 L 的偏导数为零,即
将上述右式带入 L(w,b,α) 中,有