上一篇讲到的最大边际分类器存在两个问题:
无法解决线性不可分的情况,即如果不存在分离平面,那么最大边际分类器就失效了。
鲁棒性较差。如果添加一个观测数据,可能会导致最大边际超平面产生较大变化。
针对这两个问题,引入支持向量分类器(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 小,支持向量就少。