支持向量机是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使他有别于感知机。支持向量机还包括核技巧,这使他成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划问题,也等价于正则化合页损失函数最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。
当输入空间为欧式空间或离散集合、特征空间为希尔伯特空间时,核函数表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机,这样的方法称为核技巧。
支持向量机、核函数的快速学习算法——序列最小最优化算法(SMO)
支持向量机最简单的情况是线性可分支持向量机,或硬间隔支持向量机,构建它的条件是训练数据线性可分,其学习策略是最大间隔法。可以表示为凸二次规划问题,其原始最优化问题为: min w , b 1 2 ∥ w ∥ 2 \min_{w,b} \frac{1}{2} \left \| w \right \| ^2 w,bmin21∥w∥2
s . t . y i ( w ∗ x i + b ) − 1 ≥ 0 , i = 1 , 2 , . . . , N s.t. y_i(w*x_i+b)-1\ge 0,i=1,2,...,N s.t.yi(w∗xi+b)−1≥0,i=1,2,...,N
求得最优化问题的解为 w ∗ w^* w∗, b ∗ b^* b∗,得到线性可分支持向量机,分类超平面是 w ∗ ∗ x + b ∗ = 0 w^**x+b^*=0 w∗∗x+b∗=0
分类决策函数是 f ( x ) = s i g n ( w ∗ ∗ x + b ∗ ) f(x)=sign(w^**x+b^*) f(x)=sign(w∗∗x+b∗)
最大间隔法中,函数间隔与几何间隔是重要的概念。
线性可分支持向量机的最优解存在且唯一,位于间隔边界上的实例点为支持向量,最优分离超平面由支持向量完全决定。
二次规划问题的对偶问题是: m i n 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ∗ x j ) − ∑ i = 1 N α i min \frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N} \alpha_i \alpha _j y_iy_j(x_i*x_j)-\sum_{i=1}^{N} \alpha _i min21i=1∑Nj=1∑Nαiαjyiyj(xi∗xj)−i=1∑Nαi
s . t . ∑ i = 1 N α i y i = 0 s.t. \sum_{i=1}^{N} \alpha _iy_i=0 s.t.i=1∑Nαiyi=0
α i ≥ 0 , i = 1 , 2 , . . . , N \alpha _i\ge 0,i=1,2,...,N αi≥0,i=1,2,...,N
通常,通过求解对偶问题学习线性可分支持向量机,即首先求解对偶问题的最优值 α ∗ \alpha^* α∗,然后求解最优值 w ∗ w^* w∗和 b ∗ b^* b∗,得出分离超平面和分类决策函数
现实中训练数据是线性可分的情形较少,训练数据往往是近似线性可分的,这时使用线性支持向量机,或软间隔支持向量机。线性支持向量机是最基本的支持向量机。
对于噪声或例外,通过引入松弛变量 ξ i \xi_i ξi,使其‘可分’,得到线性支持向量机学习的凸二次规划问题,其原始最优问题是: min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \min_{w,b,\xi} \frac{1}{2} \left \| w \right \| ^2+C\sum_{i=1}^{N}\xi_i w,b,ξmin21∥w∥2+Ci=1∑Nξi
s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . , N s.t. y_i(w·x_i+b)\ge 1-\xi_i,i=1,2,...,N s.t.yi(w⋅xi+b)≥1−ξi,i=1,2,...,N
ξ i ≥ 0 , i = 1 , 2 , . . . , N \xi_i\ge0,i=1,2,...,N ξi≥0,i=1,2,...,N
求得最优化问题的解为 w ∗ w^* w∗, b ∗ b^* b∗,得到线性可分支持向量机,分类超平面是 w ∗ ∗ x + b ∗ = 0 w^**x+b^*=0 w∗∗x+b∗=0
分类决策函数是 f ( x ) = s i g n ( w ∗ ∗ x + b ∗ ) f(x)=sign(w^**x+b^*) f(x)=sign(w∗∗x+b∗)
线性可分支持向量机的解 w ∗ w^* w∗唯一,但 b ∗ b^* b∗不唯一。
对偶问题是: m i n 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ∗ x j ) − ∑ i = 1 N α i min \frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N} \alpha_i \alpha _j y_iy_j(x_i*x_j)-\sum_{i=1}^{N} \alpha _i min21i=1∑Nj=1∑Nαiαjyiyj(xi∗xj)−i=1∑Nαi
s . t . ∑ i = 1 N α i y i = 0 s.t. \sum_{i=1}^{N} \alpha _iy_i=0 s.t.i=1∑Nαiyi=0
0 ≤ α i ≤ C , i = 1 , 2 , . . . , N 0\le\alpha _i\le C,i=1,2,...,N 0≤αi≤C,i=1,2,...,N
线性支持向量机的对偶学习方法,首先求解对偶问题得到最优解 α ∗ \alpha^* α∗,然后求原始问题最优解 w ∗ w^* w∗, b ∗ b^* b∗,得出分离超平面和分类决策函数。
对偶问题的解 α ∗ \alpha^* α∗满足 α i ∗ ≥ 0 \alpha_i^*\ge0 αi∗≥0的实例点 x i x_i xi称为支持向量。支持向量可在间隔边界上,也可在间隔边界与分离超平面之间,或者在分离超平面误分一侧。最优分离超平面由支持向量完全决定。
线性支持向量机学习等价于最小化二阶范数正则化的合页函数 ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∣ ∣ w ∣ ∣ 2 \sum_{i=1}^{N}[1-y_i(w·x_i+b)]_++\lambda ||w||^2 i=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2
对于输入空间中的非线性问题,可以通过非线性变换将它转化为某个高维特征空间中的线性分类分题,在高维特征空间中学习线性支持向量机。由于在线性支持向量机的对偶问题里,目标函数和分类决策函数都只涉及实例与实例之间的内积所以不需要显式地制定非线性变换,而是用核函数来替换当中的内积。
核函数表示,通过一个非线性转换后的两个实例间的内积。具体地说, K ( x , z ) K(x,z) K(x,z)是一个核函数,或正定和,意味着存在一个从输入空间 χ \chi χ到特征空间 ℜ \Re ℜ的映射。
所以,在线性支持向量机学习的对偶问题中,用核函数 K ( x , z ) K(x,z) K(x,z)代替内积,求解得到的就是非线性支持向量机 f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ ) f(x)=sign(\sum_{i=1}^{N}\alpha _i^*y_iK(x,x_i) +b^*) f(x)=sign(i=1∑Nαi∗yiK(x,xi)+b∗)
s e q u e n t i a l m i n i m a l o p t i m i z a t i o n , S M O sequential \quad minimal \quad optimization,SMO sequentialminimaloptimization,SMO算法是支持向量机学习的一种快速算法,其特点是不断地将原二次规划问题分解为只有两个变量的二次规划子问题,并对自问题进行解析求解,直到所有变量满足KKT条件为止。这样通过启发式的方法得到原二次规划问题最优解,因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是高效的。