支持向量机(SVM)
标签(空格分隔): 监督学习
@author : [email protected] @time : 2016-07-31
二、软间隔最大化分类器
在这篇文章之前所有的讨论中,假设,所面对的数据在特征空间
ϕ ( x )
中是线性可分的,那么,最终得到的SVM可以在输入空间
X
中得到一个准确的判别面,尽管其对应的判别面可能是一个非线性判别面。
然而,在现实的数据中,数据是线性不可分的(或者近似线性可分)。换一种说法就是:类条件分布存在重叠。如果这样,上面讲的算法最终只会有两种结果:1、决策面会出现严重的震荡,而无法收敛;2、即便收敛到了一个非线性的决策面,其决策面也会十分的复杂,泛化能力低。
因此,我们就需要对原始的SVM算法做一定的改动,让它对数据的要求,从线性可分扩展到线性不可分。即:允许部分训练数据存在分类错误的情况,以得到一个相对比较好的决策面。 这个改动后的SVM一般被称为 软间隔最大化分类器 ,而与之相对应的,前面论述的只可以解决线性可分数据的SVM,称为 硬间隔最大化分类器 。
2.1 软间隔最大化分类器的两个问题
那么,现在就有两个问题摆在我们面前:
1.在SVM中,对于非线性可分的数据而言,哪些样本点是存在分类错误的样本点? 2.对于分类错误的点,软间隔最大化分类器 如何处理以得到相对比较好的决策面?
两个问题,就是软间隔最大化分类器的核心问题,回答了这两个问题,掌握了软间隔最大化分类器。
哪些是分类错误的样本点
首先必须要知道,面对一个非线性可分的数据集,哪些样本点是分类错误的样本点?可以先看下面这幅图:
图中,左边那幅图对应的是数据线性可分时,SVM的状态。此时有决策面:
x T β + β 0 = 0
,也就是之前讨论的
x T w + b = 0
,只是写法不同而已。根据前面“最小间隔最大化”小章节的讨论可知:最小间隔为
M = 1 / | | β | |
,也就是之前的表达式:
r = 1 / | | w | |
。这种状态,是所有数据点都分类正确,且最小间隔最大分类的状态。
图中,右边那幅图对应的就是数据线性不可分时,SVM的状态。此时决策面依然是:
x T β + β 0 = 0
,最小间隔仍然为
M = 1 / | | β | |
。不过,右图中
ξ ∗ i ; i = 1 , 2...5
就是非线性可分数据在SVM中分类错误的点。
那么总结一下,在非线性可分的情况下,样本点的状态一共有下面五种: 1.非支持向量,即是在
m a r g i n
两侧,被正确分类的样本点。这些样本点对于SVM的决策面没有贡献。 2.在
m a r g i n
边界上面的点,这个是支持向量,且被正确分类。 3.在
m a r g i n
内部,被正确分类的点,比如
ξ ∗ 1 , ξ ∗ 2 , ξ ∗ 4
,这些也是支持向量。 4.在决策面上的点,这些点可以拒绝判断,也可以直接认为是分类正确的点。 5.真正的被分类错误的点:
ξ ∗ 3 , ξ ∗ 5
,这些点直接走到了决策面的另一边去了。
很容易发现,相对于数据线性可分的情况而言,非线性可分数据的状态多了三种情况,也就是上面五种情况的后三种,线性可分的数据只存在前面两种情况。
而后面三种情况的样本点的间隔,都比最小间隔
r
也就是图中的
M
要小一些,所以,后面这三种情况,就是SVM认为的错误的样本点(即便情况3、情况4样本被分类正确了),软间隔最大化分类器 就是要针对后面这三种情况来做文章。
分类错误的样本点的处理:软间隔变量
前面提到了,后面三种情况的样本点的间隔,都比最小间隔
r
也就是图中的
M
要小一些。这里首先要考虑的问题就是,如何用公式来表达后面这三种情况?这里就引入了一个最小间隔
r
的比例因子:软间隔变量
ξ
。
ξ
是最小间隔
r
的比例系数,或者叫做倍数。下面先分别讨论如何将软间隔变量
ξ
应用到上面的后三种情况中:
对于前面第三种情况:在
m a r g i n
内部,被正确分类的点,比如
ξ ∗ 1 , ξ ∗ 2 , ξ ∗ 4
。这些点的间隔为:
ξ ∗ i = ξ i ∗ r ; 0 < ξ i < 1
对于前面第四种情况:在决策面上的点,这些点的间隔为:
ξ ∗ i = ξ i ∗ r ; ξ i = 1
对于前面第五种情况:真正的被分类错误的点:
ξ ∗ 3 , ξ ∗ 5
,这些直接走到了决策面的另一边去了的点,这些点的间隔为:
ξ ∗ i = ξ i ∗ r ; ξ i > 1
为了将前面的第一种情况:非支持向量,即是在
m a r g i n
两侧,被正确分类的样本点。和第二种情况:在
m a r g i n
边界上面的点,这个是支持向量,且被正确分类。也统一的用软间隔变量
ξ
来表示,这里将SVM的优化公式重写为下面这个形式:
max w , b r s t : t i { w T ϕ ( x i ) + b } | | w | | ≥ r ( 1 − ξ i ) ; i = 1 , 2 , . . . N ξ i ≥ 0 ; i = 1 , 2 , . . . N
而前面第一种情况和第二种情况所对应的
ξ i = 0
。
和“最小间隔最大化”章节中讨论的一样,
w
和
b
的 比值 不变的情况下,
w
是可以任意取值的。这样的话,为了便于计算,我们就取:
| | w | | = 1 r
那么,上面的式子又可以改写为:
max w , b 1 | | w | | s t : t i { w T ϕ ( x i ) + b } ≥ 1 − ξ i ; i = 1 , 2 , . . . N ξ i ≥ 0 ; i = 1 , 2 , . . . N
可以看到,上面的式子是最大化
1 / | | w | |
,很容易知道,其等价于 最小化
| | w | | 2
,那么最小间隔最大化,最终就可以变为下面这个式子:
min w , b | | w | | 2 s t : t i { w T ϕ ( x i ) + b } ≥ 1 − ξ i ; i = 1 , 2 , . . . N ξ i ≥ 0 ; i = 1 , 2 , . . . N
这里,最小间隔为:
r = 1 | | w | |
2.2 软间隔最大化分类器 的优化公式
上面提到的第五种情况,真正的被分类错误的点:
ξ ∗ 3 , ξ ∗ 5
,这些直接走到了决策面的另一边去了的点,所对应的
ξ i > 1
。如果说我们知道
∑ N i = 1 ξ i ≤ K
,那么,就可以说,这个 软间隔最大化分类器 的训练错误样本数,最多为
K
个。让训练误差尽量的小也是我们的一个优化目标,这样,软间隔最大化分类器 就成了一个多目标的优化问题:
min w , b 1 2 | | w | | 2 min ξ ∑ i = 1 N ξ i s t : t i { w T ϕ ( x i ) + b } ≥ 1 − ξ i ; i = 1 , 2 , . . . N ξ i ≥ 0 ; i = 1 , 2 , . . . N
由于上面两个优化目标的限制条件是一样的,可以将两个优化目标合成一个优化目标:
min w , b , ξ { 1 2 | | w | | 2 + C ∑ i = 1 N ξ i } s t : t i { w T ϕ ( x i ) + b } ≥ 1 − ξ i ; i = 1 , 2 , . . . N ξ i ≥ 0 ; i = 1 , 2 , . . . N
这里的参数
C
是损失参数(cost parameter),用于权衡
| | w | | 2
和
∑ N i = 1 ξ i
。一般我们将
| | w | | 2
视为模型的复杂度,而将
∑ N i = 1 ξ i
视为模型的错误率,损失参数
C
就是在模型复杂度和模型的错误率之间找一个平衡,这个值一般作为模型的一个输入变量,需要人工设置:
C 越小,模型越偏向于最小化
| | w | | 2
,而忽略
∑ N i = 1 ξ i
,这样模型非常简单,但模型的错误率相对较高。
C 越大,模型越偏向于最小化
∑ N i = 1 ξ i
,而忽略
| | w | | 2
,这样模型的错误率相对较低,但模型相对较为复杂。
需要强调:
ξ i
是对于SVM而言,分类错误的样本点
x i
的分类错误间隔相对于最小间隔
r
的比例。我们不可能让错误的比例无限的增长,那样分类错误就太大了。所以,我们需要对错误间隔进行限制,而限制的手段,就是为总的错误间隔比例加一上限:
∑ ξ i ≤ c o n s t a n t
。这是软间隔最大化分类器 优化公式的另一种解释。
2.3 软间隔最大化分类器 的对偶问题
这里的步骤和 1.5 拉格朗日对偶性 几乎雷同,首先将 软间隔最大化分类器 的优化公式转换为拉个朗日函数的形式,其原始的优化公式为:
min w , b , ξ { 1 2 | | w | | 2 + C ∑ i = 1 N ξ i } s t : t 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 N α i { t i { w T ϕ ( x i ) + b } − 1 + ξ i } − ∑ i = 1 N μ i ξ n 不 等 式 约 束
其中,
α i , μ i
为拉格朗日乘子。将
L ( w , b , ξ , α , μ )
分别对
w , b , ξ
求偏导:
∇ w L ( w , b , ξ , α , μ ) ∇ b L ( w , b , ξ , α , μ ) ∇ ξ i L ( w , b , ξ , α , μ ) = w − ∑ i = 1 N α i t i ϕ ( x i ) = 0 = ∑ i = 1 N α i t i = 0 = C − α i − β i = 0 ; i = 1 , 2 , . . N
就可以得到:
w = ∑ i = 1 N α i t i ϕ ( x i ) ∑ i = 1 N α i t i = 0 C − α i − β i = 0 ; i = 1 , 2.. N
将上面三个式子带入到
L ( w , b , ξ , α , μ )
中,和之前 1.6 最小间隔最大化求解 中的推导一样,最终可以得到:
min w , b , ξ L ( w , b , ξ , α , μ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N { α i α j t i t j < ϕ ( x i ) , ϕ ( x j ) > } + ∑ i = i N α i
这里的
< ϕ ( x i ) , ϕ ( x j ) >
是
ϕ ( x i )
和
ϕ ( x j )
的內积。
再对
min w , b , ξ L ( w , b , ξ , α , μ )
求极大化,即可得到 软间隔最大化分类器 的对偶问题:
max α { − 1 2 ∑ i = 1 N ∑ j = 1 N { α i α j t i t j < ϕ ( x i ) , ϕ ( x j ) > } + ∑ i = i N α i }
s . t . ∑ i = 1 N α i t i C − α i − μ i α i μ i = 0 = 0 ≥ 0 ≥ 0 ; i = 1 , 2 , . . . N
这个就是原问题的对偶问题,当然了,可以将这个对偶问题的目标函数的符号换一下,,让它成为一个最小化的问题,并将后面三个式子做一个合并:
min α { 1 2 ∑ i = 1 N ∑ j = 1 N { α i α j t i t j < ϕ ( x i ) , ϕ ( x j ) > } − ∑ i = i N α i }
s . t . ∑ i = 1 N α i t i 0 ≤ α i = 0 ≤ C ; i = 1 , 2 , . . . N
这就是 软间隔最大化分类器 的对偶问题,和前面相比,这里的对偶问题只是限制条件
0 ≤ α i ≤ C
和前面不同,其他的是一模一样的。
2.4 软间隔最大化分类器 求解
很显然,得到了软间隔最大化分类器 的对偶形式之后,其优化求解出来的就是最优解
α ∗
。这里再次说明:假设
α ∗
我们已经通过某种算法得到了,至于这个算法是什么后面的章节会详细的说明,这里不同担心。
仿照 1.5 拉格朗日对偶性 中的公式推导 ,假设
x ∗ , α ∗ , ξ ∗ , α ∗ , μ ∗
为最优解,可以很容易推出 软间隔最大化分类器 拉格朗日优化的KKT条件为:
∇ w L ( x ∗ , α ∗ , ξ ∗ , α ∗ , μ ∗ ) ∇ b L ( x ∗ , α ∗ , ξ ∗ , α ∗ , μ ∗ ) ∇ ξ L ( x ∗ , α ∗ , ξ ∗ , α ∗ , μ ∗ ) α ∗ i ( t i { w ∗ T ϕ ( x i ) + b ∗ } − 1 + ξ ∗ i ) t i { w ∗ T ϕ ( x i ) + b ∗ } − 1 + ξ ∗ i α ∗ i μ ∗ i ξ ∗ i ξ ∗ i μ ∗ i = w ∗ − ∑ i = 1 N α ∗ i t i ϕ ( x i ) = 0 = ∑ i = 1 N α ∗ i t i = 0 = C − α i − μ i = 0 = 0 ; i = 1 , 2 , . . . N ≥ 0 ; i = 1 , 2 , . . . N ≥ 0 ; i = 1 , 2 , . . . N = 0 ; i = 1 , 2 , . . . N ≥ 0 ; i = 1 , 2 , . . . N ≥ 0 ; i = 1 , 2 , . . . N
在假设知道
α ∗
的情况下,由KKT条件的第一个公式:
∇ w L ( x ∗ , α ∗ , ξ ∗ , α ∗ , μ ∗ ) = w ∗ − ∑ N i = 1 α ∗ i t i ϕ ( x i ) = 0
可以知道,
w
的最优解为:
w ∗ = ∑ i = 1 N α ∗ i t i ϕ ( x i )
再找到一个
0 < α j < C
,其所对应的样本点满足:
t i { w ∗ T ϕ ( x i ) + b ∗ } − 1 = 0
,那么,就可以和前面的推导一样,得到:
b ∗ = 1 t i − w ∗ T ϕ ( x i )
同时,需要注意:
t 2 i = 1
,并带入
w ∗ T
,就可以将上面这个式子重写为:
b ∗ = t i − ∑ j = 1 N α ∗ j t j < ϕ ( x j ) , ϕ ( x i ) >
当然,为了稳妥起见,很多时候,我们会将所有的支持向量
x i ∈ S
对应的
b ∗ i
都求出来,然后用其均值,作为最终的
b ∗
。这里
S
是支持向量的集合,也就是
α ∗ i > 0
所对应的点集:
b ∗ = 1 N s ∑ i = 1 N s b ∗ i
这样,就可以求得最终的决策超平面为:
∑ i = 1 N { α ∗ i t i < ϕ ( x i ) , ϕ ( x ) > } + b ∗ = 0
分类决策函数可以写为:
f ( x ) = s i g n { ∑ i = 1 N { α ∗ i t i < ϕ ( x i ) , ϕ ( x ) > } + b ∗ }
2.5 对参数
α , ξ
的讨论
基于上面的推导,可以很容易的看出,软间隔最大化分类器 就是在 硬间隔最大化分类器 的基础上,处理非线性可分的数据。而参数
α , ξ
起着决定样本点类别的作用,那么,这里就对这两个参数做一下讨论,看看这两个参数是如何判断非线性可分数据集中的样本点的类别的。
为了方便,这里直接用一张表格说明参数
α , ξ
和样本点之间的关系,图种叉叉的部分,说明这种情况并不存在,下面将对这个表格做详细的说明:
在 2.1 软间隔最大化分类器的两个问题 中,就讨论过,非线性可分情况下,SVM中的样本点一共有五种情况,也就是上面表格中的所对应的五种情况。
从表格中可以粗略的观察到: - 当
α i = 0
时,对应的样本点是非支持向量;当
α i > 0
时,对应的样本点是支持向量 - 当
ξ ≤ 1
时,对应的样本点可以被正确的分类;当
ξ > 1
时,对应的样本点分类错误
现在基于参数
α 、 ξ
对上面五种情况再做更详细的讨论:
1.当
ξ i = 0 , α i = 0
时,此时的样本点
x i
并不是支持向量,其被完全的分类正确,样本点满足:
t i { w T ϕ ( x i ) + b } > 1
。 变量关系:当
α i = 0
时,由KKT条件中的第三条:
C − α i − μ i = 0
可以知道,
μ i = C
;再由KKT条件第七条:
μ ∗ i ξ ∗ i = 0
可以知道:
ξ i = 0
;最后根据KKT条件的第四条和第五条,可以很容易知道:
t i { w T ϕ ( x i ) + b } > 1
。
2.当
ξ i = 0 , 0 < α i < C
时,此时样本点刚好在SVM的间隔边界上,是支持向量,被正确分类,样本点满足:
t i { w T ϕ ( x i ) + b } = 1
。 变量关系:当
0 < α i < C
时,由KKT条件中的第三条:
C − α i − μ i = 0
可以知道,
0 < μ i < C
;再由KKT条件第七条:
μ ∗ i ξ ∗ i = 0
,可以知道:
ξ i = 0
。最后根据KKT条件的第四条和第五条,可以很容易知道:
t i { w T ϕ ( x i ) + b } = 1
。
3.当
0 < ξ i < 1 , α i = C
时,此时样本点在SVM的正确的间隔边界内,是支持向量,被正确分类,样本点满足:
0 < t i { w T ϕ ( x i ) + b } < 1
。 变量关系:当
α i = C
时,由KKT条件中的第三条:
C − α i − μ i = 0
可以知道,
μ i = 0
;再由KKT条件第六、七条:
ξ ∗ i ≥ 0 ; μ ∗ i ξ ∗ i = 0
,可以知道:
ξ i > 0
。根据KKT条件的第四条和第五条,可以很容易知道:
t i { w T ϕ ( x i ) + b } = 1 − ξ i
。那么,此时
0 < ξ i < 1
,所以
0 < t i { w T ϕ ( x i ) + b } < 1
,即,其对应的样本点在分类正确的间隔中。
4.当
ξ i = 1 , α i = C
时,此时样本点在SVM决策面上,是支持向量,被正确分类,样本点满足:
t i { w T ϕ ( x i ) + b } = 0
。 变量关系:这里的变量关系的分析和第三种情况一样,差别仅仅是
ξ i = 1
,由:
t i { w T ϕ ( x i ) + b } = 1 − ξ i
,可以很容易知道:
t i { w T ϕ ( x i ) + b } = 0
,这样,样本点
x i
就刚好在SVM的决策面上了。
5.当
ξ i > 1 , α i = C
时,是支持向量,被错误分类,样本点满足:
t i { w T ϕ ( x i ) + b } < 0
。 变量关系:这里的变量关系的分析和第三种情况一样,差别仅仅是
ξ i > 1
,由:
t i { w T ϕ ( x i ) + b } = 1 − ξ i
,可以很容易知道:
t i { w T ϕ ( x i ) + b } < 0
,这样,样本点
x i
就在决策面错误的一边,被错误分类了。
由于变量
α
是我们最终要求解的变量,这里再单独对变量
α
做一个总结。首先,这里取
g ( x )
如下,即SVM的决策面函数:
g ( x ) = ∑ i = 1 N { α i t i < ϕ ( x i ) , ϕ ( x ) > } + b
那么,根据前面的表格,可以很容易得到:
α i = 0 0 < α i < C α i = C ⇔ t i g ( x i ) ≥ 1 ⇔ t i g ( x i ) = 1 ⇔ t i g ( x i ) ≤ 1
总的来说就是:
在SVM间隔区间外的点,对应的
α i = 0
在SVM间隔区间边缘上的点,对应的
0 < α i < C
在SVM间隔区间内部的点,对应的
α i = C