ISLR读书笔记十七:支持向量分类器(Support Vector Classifier)
上一篇讲到的最大边际分类器存在两个问题:
-
无法解决线性不可分的情况,即如果不存在分离平面,那么最大边际分类器就失效了。
-
鲁棒性较差。如果添加一个观测数据,可能会导致最大边际超平面产生较大变化。
针对这两个问题,引入支持向量分类器(Support Vector Classifier)。其大致思想是:以小范围的错误,换取更大范围的正确。即边际未必完美地将数据分离成两类,允许犯错,允许一些数据错误地划分到边际的一边,甚至允许一些数据错误地划分到超平面的一边,以牺牲小部分分类错误为代价,建立一个更加健壮的模型。所以支持向量分类器,又称为软边际分类器(soft margin classifier)
具体细节如下:
maximize
β
0
,
β
1
,
…
,
β
p
,
ϵ
1
,
…
,
ϵ
n
M
subject to
∑
j
=
1
p
β
j
2
=
1
y
i
(
β
0
+
β
1
x
i
1
+
β
2
x
i
2
+
…
+
β
p
x
i
p
)
≥
M
(
1
−
ϵ
i
)
ϵ
i
≥
0
,
∑
i
=
1
n
ϵ
i
≤
C
\begin{array}{l} \underset{\beta_{0}, \beta_{1}, \ldots, \beta_{p}, \epsilon_{1}, \ldots, \epsilon_{n}}{\operatorname{maximize}} \quad M \\ \text { subject to } \sum_{j=1}^{p} \beta_{j}^{2}=1 \\ y_{i}\left(\beta_{0}+\beta_{1} x_{i 1}+\beta_{2} x_{i 2}+\ldots+\beta_{p} x_{i p}\right) \geq M\left(1-\epsilon_{i}\right) \\ \epsilon_{i} \geq 0, \quad \sum_{i=1}^{n} \epsilon_{i} \leq C \end{array}
β0,β1,…,βp,ϵ1,…,ϵnmaximizeM subject to ∑j=1pβj2=1yi(β0+β1xi1+β2xi2+…+βpxip)≥M(1−ϵi)ϵi≥0,∑i=1nϵi≤C
这里 C C C 是一个非负的调节参数, M M M 是边际的宽度, ϵ 1 , ⋯ , ϵ n \epsilon_1,\cdots,\epsilon_n ϵ1,⋯,ϵn 是松弛变量(slack variables)。
ϵ i \epsilon_i ϵi 表示了第 i i i 个数据的位置。如果 ϵ i = 0 \epsilon_i=0 ϵi=0,那么第 i i i 个数据在边际正确的一边,如果 ϵ i > 0 \epsilon_i>0 ϵi>0,那么第 i i i 个数据在边际错误的一边,称第 i i i 个数据违越了(violate)边际。如果 ϵ i > 1 \epsilon_i>1 ϵi>1,那么第 i i i 个数据在超平面错误的一边。
C C C 决定了违越边际的数据个数与严重程度。如果 C = 0 C=0 C=0,那么 ϵ 1 = ⋯ = ϵ n = 0 \epsilon_1=\cdots=\epsilon_n=0 ϵ1=⋯=ϵn=0,没有数据违越边际,此时支持向量分类器退化为了最大边际分类器。如果 C > 0 C>0 C>0,那么在超平面错误一边的数据个数不超过 C C C。实际问题中, C C C 由交叉验证法确定。 C C C 小,意味着违越数小,边际小,预测结果低偏差但是高方差;反之, C C C 大,意味着违越数大,边际大,预测结果低方差但是高偏差。
支持向量分类器中,起支持作用的向量,是那些恰好在边际上的向量或者违越边际的向量。
C
C
C 大,支持向量就多;
C
C
C 小,支持向量就少。