支持向量机(SVM)原理分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Flying_sfeng/article/details/79055411

版权说明:码字不易,转载请注明出处:http://blog.csdn.net/flying_sfeng/article/details/79055411
支持向量机(SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机学习的基本思想是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
对于下图线性可分的情况,SVM就是为了找到一个最优的超平面,将正负样本尽可能地分开来,也就是说,我们要找到分开样本的最大间隔。
Fig1
先了解一下函数间隔和几何间隔。
函数间隔

γ ^ ( i ) = y ( i ) ( w T x ( i ) + b )

其中, y ( i ) 为标签 ( y { 1 , 1 } )
y ( i ) = 1 时,为了使间隔最大, w T x + b 必须是一个尽可能大的正数,这样才能确保分类正确的确信度最高。同样地,当 y ( i ) = 1 时,为了使间隔最大, w T x + b 必须是一个尽可能大的负数。
而我们的目的是最大化所有训练样本的最小间隔,即给定一个训练集 S = { ( x ( i ) , y ( i ) ) ; i = 1 , . . . , m } ,我们定义在S下 ( w , b ) 的函数间隔为所有训练样本的函数边界的最小值,则:
γ ^ = min i = 1 , . . . , m γ ^ ( i )

几何间隔
如图,
这里写图片描述
假设 γ ( i ) 为我们要求的几何间隔,我们知道, w | | w | | w 方向上的单位向量,给定A: x ( i ) ,可以得到B: x ( i ) γ ( i ) w | | w | | ,又因为B位于决策边界,所以B也满足 w T x + b = 0 ,代入得:
w T ( x ( i ) γ ( i ) w | | w | | ) + b = 0.

移项得到:
γ ( i ) = w T x ( i ) + b | | w | | = ( w | | w | | ) T x ( i ) + b | | w | |

这只是一个方向上的,为了满足正负样本 y = ± 1 的情况,更一般的,我们可以令
γ ( i ) = y ( i ) ( ( w | | w | | ) T x ( i ) + b | | w | | )

因此,几何间隔与函数间隔的关系为:
γ ( i ) = γ ^ ( i ) | | w | |

| | w | | = 1 时,几何间隔就等于函数间隔。
同样地,几何间隔为所有样本距离分界面的间隔的最小值,则
γ = min i = 1 , . . . , m γ ( i )

间隔最大化:
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面,这意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够的确信度将它们分开。
下面考虑如何求得一个几何间隔最大的分离超平面,即最大间隔分离超平面。具体地,这个问题可以表示为下面的约束最优化问题:
max w , b γ s.t. γ ( i ) = y ( i ) ( ( w | | w | | ) T x ( i ) + b | | w | | ) γ ,     i = 1 , 2 , . . . , N

即我们希望最大化超平面(w,b)关于训练数据集的几何间隔 γ , γ 表示的是训练数据集中的最小几何间隔,所以约束条件表示的是超平面(w,b)关于每个训练样本点的几何间隔至少是 γ .
考虑到几何间隔与函数间隔的关系,可将这个问题改写为:
max w , b γ ^ | | w | | s.t. y ( i ) ( ( w | | w | | ) T x ( i ) + b | | w | | ) γ ^ | | w | | ,     i = 1 , 2 , . . . , N

将不等式两边的 | | w | | 约去,即:
max w , b γ ^ | | w | | s.t. y ( i ) ( w T x ( i ) + b ) γ ^ ,     i = 1 , 2 , . . . , N

函数间隔 γ ^ 的取值并不影响最优化问题的解。为什么呢?事实上,假设将w和b按比例改变成 λ w λ b ,这时函数间隔成为 λ γ ^ 。把 λ w λ b λ γ ^ 分别代入上面的优化问题可以得到:
max w , b λ γ ^ | | λ w | | = λ γ ^ λ | | w | | s.t. y ( i ) ( ( λ w ) T x ( i ) + λ b ) λ γ ^ ,     i = 1 , 2 , . . . , N

两个式子的 λ 都可以约去,因此,函数间隔的这一改变对上述目标函数的优化没有影响,对不等式约束也没有影响。也就是说,它产生了一个等价的最优化问题。所以,我们就可以取 γ ^ = 1 , 将 γ ^ = 1 代入上面的最优化问题中,考虑到最大化 1 | | w | | 和最小化 1 2 | | w | | 2 是等价的,于是就得到了下面的线性可分支持向量机学习的最优化问题:
min w , b 1 2 | | w | | 2 s.t. y ( i ) ( w T x ( i ) + b ) 1 0 ,     i = 1 , 2 , . . . , N

如果求出了上述约束最优化问题的解 w , b , 那么就可以得到最大间隔超平面 w x + b = 0 及分类决策函数 f ( x ) = s i g n ( w x + b ) , 即线性可分支持向量机模型。
接下来考虑 对偶问题
我们暂时先不管以上的优化式子,考虑一般化的条件:
min w f ( w )  s.t.  h i ( w ) = 0 ,   i = 1 , . . . , l .

这是含有等式约束的最小化问题,可以用拉格朗日乘子方法求解。
以上含等式约束的问题可以转换为以下拉格朗日函数:
L ( w , β ) = f ( w ) + i = 1 l β i h i ( w )

其中 β i 为拉格朗日乘子,令 L 的导数等于零:
L w i = 0 ;   L β i = 0

可以求出 w β .
接下来我们看一下含有不等式约束的最优化问题。原问题:
min w f ( w ) s.t. g i ( w ) 0 ,   i = 1 , . . . , k h i ( w ) = 0 ,   i = 1 , . . . , l .

为了解决这个不等式约束问题,我们定义以下的拉格朗日函数:
L ( w , α , β ) = f ( w ) + i = 1 k α i g i ( w ) + i = 1 k β i h i ( w ) .

其中 α i , β i 为拉格朗日乘子。
考虑以下等式:
θ p ( w ) = max α , β : α i 0 L ( w , α , β )

当违背约束时(即存在 i , 使得 g i ( w ) > 0 h i ( w ) 0 ),
θ p ( w ) = max α , β : α i 0 f ( w ) + i = 1 k α i g i ( w ) + i = 1 k β i h i ( w ) =

而当不等式约束跟等式约束都满足时, θ p ( w ) = f ( w ) ,即:
θ p ( w ) = { f ( w ) , 如果w满足所有约束 , 否则

这就是要最大化拉格朗日函数的原因。当不等式约束跟等式约束都满足要求时, θ p ( w ) = f ( w ) ; 当违背约束时, θ p ( w ) 趋向于无穷大,式子无解,这样做相当于把约束放到了上述式子中了。同时,我们最小化 f ( w ) ,就相当于最小化 θ p ( w ) .即:
p = min w θ p ( w ) = min w max α , β : α i 0   L ( w , α , β )

p 即为原问题的解。
接下来我们最小化拉格朗日函数,
θ d ( α , β ) = min w L ( w , α , β )

由此我们可以列出对偶优化问题:
d = max α , β : α i 0 θ d ( α , β ) = max α , β : α i 0 min w   L ( w , α , β )

d 即为对偶问题的解。
原问题跟对偶问题有什么关系呢?关系如下:
d = max α , β : α i 0 min w   L ( w , α , β ) min w max α , β : α i 0   L ( w , α , β ) = p

当拉格朗日乘子的解 w , α , β 满足以下的KKT条件时, d = p :
(27) L ( w , α , β ) w i = 0 ,     i = 1 , . . . , n (28) L ( w , α , β ) β i = 0 ,     i = 1 , . . . , l (29) α i g i ( w ) = 0 ,     i = 1 , . . . , k (30) g i ( w ) 0 ,     i = 1 , . . . , k (31) α 0 ,     i = 1 , . . . , k

下面,将证明原问题与对偶问题的关系的由来。
我们再次写下拉格朗日函数:
L ( w , α , β ) = f ( w ) + i = 1 k α i g i ( w ) + i = 1 k β i h i ( w ) .

以下式子恒成立( s u p 表示上确界, i n f 表示下确界):
(32) inf w W L ( w , α , β ) L ( w , α , β ) ,     w , α , β (33) sup α , β : α i 0 L ( w , α , β ) L ( w , α , β ) ,     w , α , β

令:
(34) q ( α , β ) = inf w W L ( w , α , β ) (35) f ( w ) = sup α , β : α i 0 L ( w , α , β )

所以,有:
q ( α , β ) f ( w )

因此:
sup α , β : α i 0 q ( α , β ) inf w W f ( w )

即:
sup α , β : α i 0 inf w W L ( w , α , β ) inf w W sup α , β : α i 0 L ( w , α , β )

等式成立的条件是: L ( w , α , β ) 的第二项跟第三项为零,即:
(36) α i 0 ,     i (37) g i ( w ) 0 ,     i (38) α i g i ( w ) = 0 ,     i (39) h i ( w ) = 0 ,     i

也就是说,当变量满足KKT条件时,对偶问题的解等于原问题的解。

优化问题的求解:
再次写下我们要求解的优化问题:

min w , b 1 2 | | w | | 2 s.t. y ( i ) ( w T x ( i ) + b ) 1 0 ,     i = 1 , 2 , . . . , N

拉格朗日函数如下:
L ( w , α , β ) = 1 2 | | w | | 2 + i = 1 m α i [ 1 y ( i ) ( w T x ( i ) + b ) ] .

我们通过求解对偶问题来得到原问题的解,当然前提是必须满足KKT条件。
对偶问题如下:
max α i 0 min w , b 1 2 | | w | | 2 + i = 1 m α i [ 1 y ( i ) ( w T x ( i ) + b ) ] .

对于这个问题,我们先通过最小化 L ( w , α , β ) 来求出 w , b ( α ) ,具体做法是使L对w,b的导数为零。对w求导:
w L ( w , b , α ) = w i = 1 m α i y ( i ) x ( i ) = 0

即:
w = i = 1 m α i y ( i ) x ( i )

对b求导:
b L ( w , b , α ) = i = 1 m α i y ( i ) = 0

将上述两式代入到拉格朗日函数中,可以得到:
L ( w , b , α ) = i = 1 m α i 1 2 i = 1 m j = 1 m y ( i ) y ( j ) α i α j ( x ( i ) ) T x ( j )

因此,优化问题可写成下列形式:
max α i = 1 m α i 1 2 i = 1 m j = 1 m y ( i ) y ( j ) α i α j ( x ( i ) ) T x ( j ) s.t. α i 0 ,   i = 1 , . . . , m i = 1 m α i y ( i ) = 0

这就变成了对 α 的单变量优化问题。对 α 的求解可以使用SMO算法,我们后面会讲到。假设我们已经求解出 α , 那么我们可以通过 w = i = 1 m α i y ( i ) x ( i ) 求出w,但是b该怎么求解呢?
当i为支持向量时,我们可以得到函数间隔: y ( i ) ( w T x ( i ) + b ) = γ ^ ,即:
max i : y ( i ) = 1 w T x ( i ) + b = γ ^ min i : y ( i ) = 1 w T x ( i ) + b = γ ^

以上两式相加可以得到b:
b = max i : y ( i ) = 1 w T x ( i ) + min i : y ( i ) = 1 w T x ( i ) 2 .

因此,对于一个待预测的样本,我们可以得到:
w T x + b = i = 1 m α i y ( i ) ( x ( i ) ) T x + b = i = 1 m α i y ( i ) x ( i ) , x + b .

w T x + b > 0 时我们把该样本预测为正样本, w T x + b 0 时预测为负样本。

核函数:
在前面的讨论中,我们假设训练样本时线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。对于这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。幸运的是,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。(参考《机器学习》6.3节 周志华著)
核函数的定义:
设X是原始输入空间,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 ) 并不容易。这是因为, ϕ 是原始输入空间X到特征空间H地映射,特征空间H一般是高维的,甚至是无穷维的。
通俗点讲,对于在原始空间内线性不可分的情况,我们可以将原始空间映射到高维空间,高维空间的内积计算使用核函数代替。
因此,我们的目标函数的对偶问题可以写成下列形式:
max α i = 1 m α i 1 2 i = 1 m j = 1 m y ( i ) y ( j ) α i α j k ( x ( i ) , x ( j ) ) s.t. α i 0 ,   i = 1 , . . . , m i = 1 m α i y ( i ) = 0

求解后即可得到:
f ( x ) = w T ϕ ( x ) + b = i = 1 m α i y ( i ) ϕ ( x ( i ) ) T ϕ ( x ) + b = i = 1 m α i y ( i ) k ( x ( i ) , x ) + b

那么,什么样的函数能做核函数呢?我们有下面的定理:
定理:令 X 为原始输入空间, k ( x ( i ) , x ( j ) ) 是定义在 X × X 上的对称函数,则 k 是核函数当且仅当对于任意数据 D = x ( 1 ) , x ( 2 ) , . . . , x ( m ) , 核矩阵 K 总是半正定的:
K = [ k ( x ( 1 ) , x ( 1 ) ) k ( x ( 1 ) , x ( j ) ) k ( x ( 1 ) , x ( m ) ) k ( x ( i ) , x ( 1 ) ) k ( x ( i ) , x ( j ) ) k ( x ( i ) , x ( m ) ) k ( x ( m ) , x ( 1 ) ) k ( x ( m ) , x ( j ) ) k ( x ( m ) , x ( m ) ) ]

定理表明,只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。
定理证明:如果 k 是一个有效的核函数,那么 k ( x ( i ) , x ( j ) ) = ϕ ( x ( i ) ) T ϕ ( x ( j ) ) == ϕ ( x ( j ) ) T ϕ ( x ( i ) ) = k ( x ( j ) , x ( i ) ) , 因此核函数 k 必须是对称的。另外,对于任意向量 z ,我们有:
z T K z = i j z i k ( x ( i ) , x ( j ) ) z j = i j z i ϕ ( x ( i ) ) T ϕ ( x ( j ) ) z j = i j z i k ϕ k ( x ( i ) ) ϕ k ( x ( j ) ) z j = k i j z i ϕ k ( x ( i ) ) ϕ k ( x ( j ) ) z j = k ( i z i ϕ k ( x ( i ) ) ) 2 0.

因此,核矩阵 K 必须是半正定的。证毕。
常用核函数:
线性核 k ( x ( i ) , x ( j ) ) = ( x ( i ) ) T x ( j ) 多项式核 k ( x ( i ) , x ( j ) ) = ( ( x ( i ) ) T x ( j ) ) d 高斯核 k ( x ( i ) , x ( j ) ) = e x p ( | | x ( i ) x ( j ) | | 2 2 σ 2 ) 拉普拉斯核 k ( x ( i ) , x ( j ) ) = e x p ( | | x ( i ) x ( j ) | | σ ) Sigmoid核 k ( x ( i ) , x ( j ) ) = t a n h ( β ( x ( i ) ) T x ( j ) + θ )

线性不可分的支持向量机
在前面的讨论中,我们一直假定训练样本在样本空间或特征空间中是线性可分的,即存在一个超平面能将不同类的样本完全分开。然而,在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分;退一步说,即使恰好找到了某个核函数使训练集在特征空间中线性可分,但这样划分的结果会更容易造成过拟合。
线性不可分意味着某些样本点 ( x ( i ) , y ( i ) ) 不能满足函数间隔大于等于1的约束条件。为了解决这个问题,可以对每个样本点 ( x ( i ) , y ( i ) ) 引进一个松弛变量 ξ i , 使函数间隔加上松弛变量大于等于1,这样,约束条件变为:

y ( i ) ( w T x ( i ) + b ) 1 ξ i

同时,对每一个样本,支付一个代价 ξ i , 目标函数由原来的 1 2 | | w | | 2 变为:
1 2 | | w | | 2 + C i = 1 N ξ i

其中, C > 0 称为惩罚因子,C值大时对误分类的惩罚增大。最小化目标函数包含两层含义:为了使目标函数尽可能小,C应该取一个较小的值;同时为了使误分类的样本尽可能少,C应该取一个较大的值。所以,惩罚因子C的取值必须在这两者做个折中。
线性不可分的线性支持向量机的学习问题变成一个凸二次规划问题(原问题):
min w , b , ξ 1 2 | | w | | 2 + C i = 1 N ξ i s.t. y ( i ) ( w T x ( i ) + b ) 1 ξ i ,     i = 1 , 2 , . . . , N ξ i 0 ,     i = 1 , 2 , . . . , N

该问题的拉格朗日函数是:
L ( w , b , α , ξ , μ ) = 1 2 | | w | | 2 + C i = 1 N ξ i + i = 1 m α i ( 1 ξ i y ( i ) ( w T x ( i ) + b ) ) i = 1 m μ i ξ i

其中, α i 0 , μ i 0 是拉格朗日乘子。
L ( w , b , α , ξ , μ ) w , b , ξ 的偏导为零可得:
w = i = 1 m α i y ( i ) x ( i ) , 0 = i = 1 m α i y ( i ) , C = α i + μ i .

将以上等式代入拉格朗日函数中可得到对偶问题:
max α i = 1 m α i 1 2 i = 1 m j = 1 m y ( i ) y ( j ) α i α j ( x ( i ) ) T x ( j ) s.t. 0 α i C ,   i = 1 , . . . , m i = 1 m α i y ( i ) = 0

同样地,对于软间隔支持向量机,也必须满足KKT条件:
α i 0 ,     μ i 0 , y ( i ) f ( x ( i ) ) 1 ξ i , α i ( y ( i ) f ( x ( i ) ) 1 + ξ i ) = 0 ξ i 0 ,     μ i ξ i = 0.

因此,对任意训练样本 ( x ( i ) , y ( i ) ) , 总有 α i = 0 y ( i ) f ( x ( i ) ) 1 + ξ i = 0 . 若 α i = 0 , 则该样本不会对 f ( x ) 有任何影响;若 α i > 0 ,则必有 y ( i ) f ( x ( i ) ) 1 + ξ i = 0 , 则该样本是支持向量:由于 C = α i + μ i ,若 α i < C ,则 μ i > 0 ,进而有 ξ i = 0 ,则该样本恰好落在间隔边界上;若 α i = C ,则 μ i = 0 , 此时若 0 < ξ i < 1 ,则该样本落在间隔边界与分离超平面之间;若 ξ i = 1 ,则该样本恰好落在分离超平面上;若 ξ i > 1 ,则该样本落在分离超平面误分一侧。同样,软间隔支持向量机的最终模型仅与支持向量有关。
线性支持向量机学习算法步骤:
输入:训练数据集 T = ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( N ) , y ( N ) ) ,其中 x ( i ) X = R n , y ( i ) Y = { 1 , + 1 } ,   i = 1 , 2 , . . . , N ;
输出:分离超平面核分类决策函数。
(1)选择惩罚参数 C > 0 , 构造并求解凸二次规划问题:
max α i = 1 N α i 1 2 i = 1 N j = 1 N y ( i ) y ( j ) α i α j ( x ( i ) ) T x ( j ) s.t. 0 α i C ,   i = 1 , . . . , m i = 1 N α i y ( i ) = 0

求得最优解 α = ( α 1 , α 2 , . . . , α N ) T .
(2)计算 w = i = 1 N α i y ( i ) x ( i )
选择 α 的一个分量 α j 满足条件 0 < α j < C ,计算
b = y ( j ) i = 1 N α i y ( i ) ( x ( i ) ) T x ( j )

求得分离超平面
w x + b = 0

分类决策函数:
f ( x ) = s i g n ( w x + b )

步骤(2)中,因为存在多个 α j ,所以 b 的解并不是唯一的,所以实际计算时可以取在所有符合条件的样本点上的平均值。

SMO算法(序列最小最优化算法):
SMO算法要求解如下凸二次规划的对偶问题:

min α 1 2 i = 1 N j = 1 N y ( i ) y ( j ) α i α j ( x ( i ) ) T x ( j ) i = 1 N α i s.t. 0 α i C ,   i = 1 , . . . , m i = 1 N α i y ( i ) = 0

在这个问题中,变量时拉格朗日乘子,一个变量 α i 对应于一个样本点 ( x ( i ) , y ( i ) ) ;变量的总数等于训练样本容量N。
SMO算法时一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解。子问题有两个变量,一个是违反KKT条件最严重的哪一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
因此,在参数初始化后,SMO算法不断执行以下两个步骤直至收敛:
(1)选取一对需要更新的变量 α i α j
(2)固定 α i α j 以外的参数,求解目标函数后获得更新后的 α i α j 。(因为存在约束条件 i = 1 m α i y ( i ) = 0 ,实际的变量只有一个,对该变量求导等于零可以得到该变量的解,将其代入约束条件可以得到另一个变量的解)
整个SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。时间关系,这里不做展开了,感兴趣的读者可以参阅《统计学习方法》7.4节 (作者:李航),作者讲的很详细,推荐阅读。

花了很长时间,终于把这部分内容总结完了。以上公式纯手打,若有错误或者理解不当的,烦请指出。
参考:
吴恩达 CS229笔记
《统计学习方法》 李航著
《机器学习》 周志华著

猜你喜欢

转载自blog.csdn.net/Flying_sfeng/article/details/79055411