第七章支持向量机(二)

  7.3非线性支持向量机
  非线性支持向量机用于解决非线性问题,使用核技巧。

  7.31核技巧

  1.非线性问题
  如果一个问题用直线(线性模型)无法将正负实例正确分开,但能用一个超曲面将正负实例正确分开,则称这个问题是非线性可分问题。非线性问题往往不好求解,所以希望能够用解线性分类问题的方法解决这个问题。所采取的的方法是进行一个非线性变换,将非线性问题变换为线性问题,通过解变换后的线性问题方法求解原来的非线性问题。
  设原非线性空间为 X R 2 x = ( x 1 , x 2 ) T X ,新线性空间为 Z R 2 z = ( z 1 , z 2 ) T Z 。定义从原空间到新空间的变换(映射): z = ϕ ( x ) 。原空间的点相应地变换为新空间中的点,原空间的椭圆变换为新空间中的直线。在变换后的新空间里,直线可以把变换后的正负实例正确分开。这样,原空间的非线性可分问题就变成了新空间的线性可分问题。
  上面的例子说明,用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。核技巧就属于这样的方法。核技巧应用到支持向量机,其基本想法就是通过一个非线性变换将输入空间(欧式空间或离散集合)对应于一个特征空间(希尔伯特空间H),使得在输入空间 R n 中的超曲面模型对应于特征空间H中的超平面模型(支持向量机)。这样,分类问题的学习任务通过在特征空间中求解线性支持向量机可以完成。

  2.核函数的定义
  定义7.6(核函数)设X是输入空间(欧式空间 R n 的子集或离散集合),又设H为特征空间(希尔伯特空间),如果存在一个从X到H的映射, ϕ ( x ) : X H ,使得对所有 x , z X ,函数 K ( x , z ) 满足条件 K ( x , z ) = ϕ ( x ) ϕ ( z ) ,则称 K ( x , z ) 为核函数, ϕ ( x ) 为映射函数,式中 ϕ ( x ) ϕ ( z ) ϕ ( x ) ϕ ( z ) 的內积。
  核技巧的想法是,在学习和预测中只定义核函数 K ( x , z ) ,而不显式地定义映射函数 ϕ 。通常,直接计算 K ( x , z ) 比较容易,而通过 ϕ ( x ) ϕ ( z ) 计算 K ( x , z ) 并不容易。注意, ϕ 是输入空间 R n 到特征空间H的映射,特征空间H一般是高维的,甚至是无穷维的。可以看到,对于给定的核 K ( x , z ) ,特征空间H和映射函数 ϕ 的取法并不唯一,可以取不用的特征空间,即便是在同一特征空间里也可以取不同的映射。

  3.核技巧在支持向量机中的应用
  在对偶问题的目标函数中的內积 x i x j 可以用核函数 K ( x i , x j ) = ϕ ( x i ) ϕ ( x j ) 来代替。此时对偶问题的目标函数成为 W ( α ) = 1 2 i = 1 N j = 1 N α i α j y i y j K ( x i , x j ) i = 1 N α i 。同样,分类决策函数中的內积也可以用核函数代替,而分类决策函数式成为 f ( x ) = s i g n ( i = 1 N s a i y i ϕ ( x i ) ϕ ( x ) + b ) = s i g n ( i = 1 N s a i y i K ( x i , x ) + b )
  这等价于经过映射函数 ϕ 将原来的输入空间变换到一个新的特征空间,将输入空间中的內积 x i x j 变换为特征空间中的內积 ϕ ( x i ) ϕ ( x j ) ,在新的特征空间里从训练样本中学习到线性支持向量机。当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型。
  也就是说,在核函数 K ( x , z ) 给定的条件下,可以利用解线性分类问题的方法求解非线性问题的支持向量机。学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数。这样的技巧称为核技巧,它是巧妙地利用线性分类学习方法与核函数解决非线性问题的技术。在实际应用中,往往依赖领域知识直接选择核函数,核函数选择的有效性需要通过实验验证。

  7.3.2正定核
  已知映射函数 ϕ ,可以通过 ϕ ( x ) ϕ ( z ) 求得核函数 K ( x , z ) 。不用构造映射 ϕ ( x ) 能否直接判断一个给定的函数 K ( x , z ) 是不是核函数?或者说,函数 K ( x , z ) 满足什么条件才能成为核函数?
  下面叙述正定核的充要条件。通常所说的核函数就是正定核函数。构建希尔伯特空间的步骤如下:首先定义映射 ϕ 并构成向量空间S;然后在S上定义內积构成內积空间;最后将S完备化构成希尔伯特空间。(一个內积空间,当作为一个赋范向量空间是完备时候,就是希尔伯特空间。这样,就得到了希尔伯特空间H。)这一希尔伯特空间H称为再生核希尔伯特空间。这是由于核K具有再生性,即满足 K ( . , x ) f = f ( x ) ,及 K ( . , x ) K ( . , z ) = K ( x , z ) 称为再生核。
  定义7.7(正定核的等价定义)设 X R n K ( x , z ) 是定义在X*X上的对称函数,如果对于任意 x i X ,i=1,2,…,m, K ( x , z ) 对应的Gram矩阵 K = [ K ( x i , x j ) ] m m 是半正定矩阵,则称 K ( x , z ) 是正定核。

  7.3.3常用核函数
  1.多项式核函数: K ( x , z ) = ( x z + 1 ) p 对应的支持向量机是一个p次多项式分类器。在此情形下,分类决策函数成为 f ( x ) = s i g n ( i = 1 N s a i y i ( x i x + 1 ) p + b )
  2.高斯核函数: K ( x , z ) = exp ( | | x z | | 2 2 σ 2 ) ,对应的支持向量机是高斯径向基函数分类器。在此情形下,分类决策函数称为 f ( x ) = s i g n ( i = 1 N s a i y i exp ( | | x z | | 2 2 σ 2 ) + b )
  3.字符串核函数
  核函数不仅可以定义在欧式空间上,还可以定义在离散数据的集合上。比如,字符串核是定义在字符串集合上的核函数。字符串核函数在文本分类,信息检索,生物信息学等方面都有应用。

  7.3.4非线性支持向量机
  如上所述,利用核技巧,可以将线性分类的学习方法应用到非线性分类问题中去,将线性支持向量机扩展到非线性支持向量机,只需将线性支持向量机对偶形式中的內积换成核函数。
  定义7.8(非线性支持向量机)从非线性分类训练集,通过核函数与软间隔最大化,或凸二次规划,学习得到的分类决策函数 f ( x ) = s i g n ( i = 1 N s a i y i ϕ ( x i ) ϕ ( x ) + b ) = s i g n ( i = 1 N s a i y i K ( x i , x ) + b ) 称为非线性支持向量, K ( x , z ) 是正定核函数。

  7.4序列最小最优化算法
  支持向量机的学习问题可以形式化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。所以,如何高效的实现支持向量机学习就成为一个重要的问题。其中常被介绍的是序列最小最优化算法(SMO)算法。
  SMO算法要解如下凸二次规划的对偶问题:
   min α 1 2 i = 1 N j = 1 N α i α j y i y j K ( x i , x j ) i = 1 N α i
   s . t . i = 1 N α i y i = 0
   0 α i C , i = 1 , 2 , . . . , N
  在这个问题中,变量是拉格朗日乘子,一个变量 α i 对应于一个样本点 ( x i , y i ) ;变量的总数等于训练样本容量N。

  SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为,KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
  注意,子问题的两个变量中只有一个是自由变量。假设 α 1 , α 2 为两个变量, α 3 , α 4 , . . . , α N 固定,那么由等式约束可知 α 1 = y 1 i = 2 N α i y i 。如果 α 2 确定,那么 α 1 也随之确定。所以子问题中同时更新两个变量。
  整个SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。

  7.4.1两个变量二次规划的求解方法
  不失一般性,假设选择的两个变量是 α 1 α 2 ,其他变量 α i 是固定的。于是SMO的最优化问题可以写成: min α 1 , α 2 W ( α 1 , α 2 ) = 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y 1 y 2 K 12 α 1 α 2 ( α 1 + α 2 ) + y 1 α 1 i = 3 N y i α i K i 1 + y 2 α 2 i = 3 N y i α i K i 2
s . t . α 1 y 1 + α 2 y 2 = i = 3 N y i α i = ξ
0 α i C , i = 1 , 2
  要求的是目标函数在一条平行于对角线的线段上的最优值,这使得两个变量的最优化问题成为实质上的单变量的最优化问题,不妨考虑为变量 α 2 的最优化问题。
  假设问题的初始可行解为 α 1 o l d , α 2 o l d ,最优解为 α 1 n e w , α 2 n e w ,并且假设在沿着约束方向未经剪辑时 α 2 的最优解为 α 2 n e w , u n c
  由于 α 2 n e w 需满足不等式约束,所以最优值 α 2 n e w 的取值范围必须满足条件 L α 2 n e w H 。其中,L与H是 α 2 n e w 所在的对角线端点的界。如果 y 1 y 2 ,则 L = max ( 0 , α 2 o l d α 1 o l d ) , H = min ( C , C + α 2 o l d α 1 o l d ) 。如果 y 1 = y 2 ,则 L = max ( 0 , α 2 o l d + α 1 o l d C ) , H = min ( C , α 2 o l d + α 1 o l d )

  7.4.2变量的选择方法
  SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的。
  1.第1个变量的选择
  SMO称选择第1个变量的过程为外层循环。外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量。具体地,检验训练样本点 ( x i , y i ) 是否满足KKT条件。在检验过程中,外层循环首先遍历所有满足条件 0 < α i < C 的样本点,即在间隔边界上的支持向量点,检验它们是否满足KKT条件。如果这些样本点都满足KKT条件,那么遍历整个训练集,检验它们是否满足KKT条件。
  2.第2个变量的选择
  SMO称选择第2个变量的过程为内层循环。假设在外层循环中已经找到第1个变量 α 1 ,现在要在内层循环中找到第2个变量 α 2 。第2个变量选择的标准是希望能使得 α 2 有足够大的变化。
  3.计算阈值b和差值 E i

  7.4.3SMO算法
  算法7.5(SMO算法)
  输入:训练数据集,精度 ε
  输出:近似解 α
  (1)取初值 α ( 0 ) =0,令k=0;
  (2)选取优化变量 α 1 ( k ) α 2 ( k ) ,解析求解两个变量的最优化问题,求得最优解 α 1 ( k + 1 ) α 2 ( k + 1 ) ,更新 α α ( k + 1 )
  (3)若在精度 ε 范围内满足停机条件则结束,否则继续执行。

猜你喜欢

转载自blog.csdn.net/heloiselt/article/details/80525999