system: [SYSTEM]

user: 1. 支持向量机的基本理论框架 处在大数据的时代，从数据中挖掘各种信息和关联关系，机器学习方法在其中的应用显得非常重要。统计学习理论基础上发展起来的支持向量机(support vector machine， SVM)，有一套严实的统计学习理论作为支撑 [ 1 ]，是机器学习的重要算法之一，在处理有限样本的问题上很有优势，已经广泛应用于各行各业，比如：图像识别与分类、文本分类、股票预测、生物医学等等 [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]。其理论过程的一般形式如下面几个方面 [ 7 ] [ 8 ] [ 9 ] [ 10 ]，从这些知识点中，我们给出一些细节的精细理解。 1) SVM的线性分类器模型 一般，先从感知机的二分类问题进行引入。当感知机就一个神经元用于处理信息时，其结构图如图1。 当其中的激活函数f取符号函数sign时，设 W = ( w 1 ， w 2 ) T ， x = ( x 1 ， x 2 ) T ，则这个神经元处理完信息以后的输出是： 图1. 单神经元的信息处理情况 图2. 二分类问题 o = s i g n ( w 1 ∗ x 1 + w 2 ∗ x 2 + b ) = s i g n ( W T x + b ) ，其中 s i g n ( x ) = { 1 ，       x > 0 0 ，     x = 0 − 1 ，       x < 0 。 这实际上相当于图2中的二分类问题，圆点数据点这一类对应输出是−1，三角数据点一类对应输出是1。也就相当于在两类样本点中间找一条直线把它们分开。这样的直线有很多，如下图3，支持向量机就是围绕着去寻找中间那条最好的直线而进行推导。二维空间里是分类线；三维空间里是分类平面；四维空间以上，则称为分类超平面，为了便于理解和观察，以下主要在二维空间上作图和进行阐述。 图3. 二分类问题的多条分类直线 图4. 二分类问题中最好的分类线情况 分类线距离哪一侧的样本点越远，那么这类样本点就被分类得更好，并且对于这类中新来的测试样本点也会被分得更好，从而具有更好的泛化性。两侧的样本点都按照这样的原则，那么就会出现图4的情形，中间那条分类线只能是距离两边最近的样本点都一样远，最近的样本点叫支持向量，并且过两边的支持向量分别作平行于分类线的直线，那么最好的分类线就是要使得过两边支持向量的平行线之间的距离最大，即图4中的ρ最大。这是从两条平行线的“函数间隔”来分析出ρ的最大化。那么，得到初步的线性分类器模型可以是这样： max     ρ s .t .   y i ( W T x i + b ) ≥ ρ / 2 ， i = 1 ， 2 ， ⋯ ， n (1) 于是，中间那条分类线相当于 W T x i + b = 0 ；对于圆点的数据点有 W T x i + b ≤ − ρ / 2 ，对于三角的数据点有 W T x i + b ≥ ρ / 2 。 再根据支持向量数据点到分类线的距离，推导出关于“几何间隔”最大化的模型： max     ρ / ‖ W ‖ s .t .   y i ( W T x i + b ) ≥ ρ / 2 ， i = 1 ， 2 ， ⋯ ， n (2) 最后，经过重新量化，去掉ρ，得到最终的线性分类器模型如下： min 1 2 W T W s .t .     y i ( W T x i + b ) ≥ 1 ， i = 1 ， 2 ， ⋯ ， n (3) 这里的约束条件，相当于，对于圆点的数据点有 W T x i + b ≤ − 1 ，对于三角的数据点有 W T x i + b ≥ 1 。 模型(3)的求解过程是通过拉格朗日乘子法，为每一个训练数据点添加拉格朗日乘子 α i ≥ 0 ， i = 1 ， 2 ， ⋯ ， n ，原问题转化为 L P ( W ， b ， α i ) = min w ， b max α i ≥ 0 { 1 2 W T W − ∑ i = 1 n α i ( y i ( W T x i + b ) − 1 ) } ， 再通过 L P 对 W ， b 求偏导等于0，得到 ∂ L ( W ， b ) ∂ W = 0 ⇒ W − ∑ i = 1 n α i y i X i = 0 (4) ∂ L ( W ， b ) ∂ b = 0 ⇒ ∑ i = 1 n α i y i = 0 于是，得到对偶问题 max       L D ( α ) = ∑ i = 1 n α i − 1 2 ∑ i ， j α i α j y i y j X i T X j s .t .     ∑ i = 1 n α i y i = 0 ，     α i ≥ 0 然后，用SMO算法进行对偶问题求解，求出各个 α i ， i = 1 ， 2 ， ⋯ ， n ，再带回(4)式，就得到W的值。这里求出来的 α i 中大于0的就对应支持向量i。再由各个支持向量满足的表达式 α i [ y i ( W T X i + b ) − 1 ] = 0 求出b、并进行平均得到最终的 b ^ ，从而得到最终的分类线如下 f ( X ) = ∑ i = 1 n s α ^ i y i X i T ⋅ X + b ^   . 2) SVM的软边界模型 实际生产和生活中，很多数据往往是线性不可分的，但，如果还想用线性分类器去分，又想尽量减少分类错误，那么可以像下图5那样，为每个数据点加上松弛变量 ξ i ≥ 0 ，使得，对于三角的数据点，由原来的 W T X + b ≥ 1 松弛到 W T X + b ≥ 1 − ξ i ；对于圆点的数据点，由原来的 W T X + b ≤ − 1 松弛到 W T X + b ≤ − 1 + ξ i 。 图5. 软边界分类问题 得到的相应“软边界”模型如下： min     Φ ( W ) = 1 / 2 W T W + C ∑ ξ i s .t .     y i ( W T x i + b ) ≥ 1 − ξ i ， ξ i ≥ 0 ， i = 1 ， 2 ， ⋯ ， n 对于这个模型，把松弛变量 ξ i 加进目标函数里作为惩罚，惩罚的力度由参数C来决定。其求解过程和上面线性分类器模型的求解过程类似。 3) SVM中的核函数 通过函数映射 φ ( X ) ，把数据从低维空间映射到高维空间，使得低维空间里线性不可分的数据到了高维空间里变成线性可分，从而构造高维空间里的线性SVM分类器进行解决，如下图6。 图6. 把二维空间线性不可分的数据映射到三维空间使其线性可分 但那样的映射，一般很难找，而在SVM的模型求解过程的对偶问题模型中以及求解的结果中，主要涉及到数据点的内积形式，比如下面两个式子中类似 X i T X 形式， max L D ( λ ) = ∑ i = 1 Q λ i − 1 2 ∑ i = 1 Q ∑ j = 1 Q λ i λ j y i y j ( X i T X j ) f ( X ) = ∑ i = 1 n s α ^ i y i X i T ⋅ X + b ^ 如果想象一下，数据点映射到高维空间，上面两个式子里也就对应 φ ( X i ) T φ ( X j ) 形式，于是研究者们想到去找这样的函数 K ( X i ， X j ) = φ ( X i ) T φ ( X j ) ，即找K函数，这就是核函数，而不是去找 φ 。于是，在引入核函数以后，得到SVM的分类超平面为： f ( X ) = ∑ i = 1 n s α ^ i y i K ( X i T ⋅ X ) + b ^ 对于新来的测试样本X，可以带入上式，算出其决策函数值 f ( X ) ，从而决定其类属。这样的K函数在一般的软件里通常有： 线性核函数： K ( X i ， X j ) = X ′ i ∗ X j ； 多项式核函数： K ( X i ， X j ) = ( σ ∗ X ′ i ∗ X j + b ) p ； 径向基核函数(或者叫高斯核函数)： K ( X i ， X j ) = exp ( − ‖ X i − X j ‖ 2 2 σ 2 ) ； sigmoid核函数： K ( X i ， X j ) = tanh ( σ ∗ X ′ i ∗ X j + b ) 。