统计学习(八):支持向量机

支持向量机(SVM)是一种强大的分类算法,通过寻找最大间隔超平面来实现分类。它利用核函数处理非线性问题,能够构建复杂的决策边界。在多分类任务中,SVM可以采用一对一对分类或一类对其余分类的方法。相比于逻辑斯谛回归,SVM在数据线性不可分时表现更优,特别是在处理高维特征空间时。
摘要由CSDN通过智能技术生成

支持向量机

最大间隔分类器

什么是超平面

p p p 维空间中,超平面(hyperplane) p − 1 p-1 p1 维的平面仿射子空间,定义为:
β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β p X p = 0 \beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p=0 β0+β1X1+β2X2++βpXp=0
p = 2 p=2 p=2 时,超平面是条直线: β 0 + β 1 X 1 + β 2 X 2 = 0 \beta_0+\beta_1X_1+\beta_2X_2=0 β0+β1X1+β2X2=0。当 β 0 = 0 \beta_0=0 β0=0 时,超平面经过原点。

向量 β = ( β 1 , β 2 , ⋯   , β p ) \boldsymbol\beta=(\beta_1,\beta_2,\cdots,\beta_p) β=(β1,β2,,βp) 称为法向量,它指向与超平面正交的方向。

如果
β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β p X p > 0 \beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p>0 β0+β1X1+β2X2++βpXp>0
说明 X \boldsymbol X X 位于超平面的一侧。如果
β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β p X p < 0 \beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p<0 β0+β1X1+β2X2++βpXp<0
说明 X \boldsymbol X X 位于超平面的另一侧。可以认为超平面将 p p p 维空间分成了两部分。

使用分割超平面分类

假设 X \boldsymbol X X n × p n\times p n×p 的数据矩阵,由 p p p 维空间中的 n n n 个训练观测组成:
x 1 = ( x 11 ⋮ x 1 p ) , ⋯   , x n = ( x n 1 ⋮ x n p ) x_1=\left(\begin{matrix}x_{11}\\\vdots\\x_{1p}\end{matrix}\right),\cdots,x_n=\left(\begin{matrix}x_{n1}\\\vdots\\x_{np}\end{matrix}\right) x1=x11x1p,,xn=xn1xnp
这些观测分为两个类别: y 1 , ⋯   , y n ∈ { − 1 , 1 } y_1,\cdots,y_n\in\{-1,1\} y1,,yn{1,1},分别代表一种类别。

f ( X ) = β 0 + β 1 X 1 + ⋯ + β p X p f(\boldsymbol X)=\beta_0+\beta_1X_1+\cdots+\beta_pX_p f(X)=β0+β1X1++βpXp f ( X ) = 0 f(\boldsymbol X)=0 f(X)=0 定义为分割超平面。

分割超平面具有如下性质:
β 0 + β 1 x i 1 + β 2 x i 2 + ⋯ + β p x i p > 0 , i f     y i = 1 β 0 + β 1 x i 1 + β 2 x i 2 + ⋯ + β p x i p < 0 , i f     y i = − 1 \beta_0+\beta_1x_{i1}+\beta_2x_{i2}+\cdots+\beta_px_{ip}>0,if\ \ \ y_i=1\\\beta_0+\beta_1x_{i1}+\beta_2x_{i2}+\cdots+\beta_px_{ip}<0,if\ \ \ y_i=-1 β0+β1xi1+β2xi2++βpxip>0,if   yi=1β0+β1xi1+β2xi2++βpxip<0,if   yi=1
等价于对所有 i = 1 , ⋯   , n i=1,\cdots,n i=1,,n
y i ( β 0 + β 1 x i 1 + β 2 x i 2 + ⋯ + β p x i p ) > 0 y_i(\beta_0+\beta_1x_{i1}+\beta_2x_{i2}+\cdots+\beta_px_{ip})>0 yi(β0+β1xi1+β2xi2++βpxip)>0

最大间隔分类器

一个很自然的方法是最大间隔超平面,也叫最优分离超平面,最大间隔超平面是离训练观测最远的那个分割超平面。

首先计算每个训练观测到一个特定分割超平面的(垂直)距离,这些距离的最小值就是训练观测与分隔超平面的距离,这个距离被称作间隔(margin)。最大间隔超平面就是间隔最大的分割超平面,最大间隔超平面使得训练观测到分割超平面的间隔达到最大。接下来通过判断测试观测落在最大间隔超平面的哪一侧来判断测试观测的类别归属。这就是最大间隔分类器

尽管最大间隔分类器通常表现很好,但是当 p p p 过大时,最大间隔分类器也容易出现过拟合。

构建最大间隔分类器

下面考虑基于 n n n 个训练观测 x 1 , x 2 , ⋯   , x n ∈ R p x_1,x_2,\cdots,x_n\in\boldsymbol R^p x1,x2,,xnRp 和类别标签 y 1 , y 2 , ⋯   , y n ∈ { − 1 , 1 } y_1,y_2,\cdots,y_n\in\{-1,1\} y1,y2,,yn{1,1} 的最大间隔分类器的构建。

最大间隔超平面就是如下优化问题的解:
max ⁡ β 0 , β 1 , ⋯   , β p M \max_{\beta_0,\beta_1,\cdots,\beta_p}M β0,β1,,βpmaxM
满足
∑ j = 1 p β j 2 = 1 y i ( β 0 + β 1 x i 1 + β 2 x i 2 + ⋯ + β p x i p ) ≥ M , i = 1 , ⋯   , n \sum_{j=1}^p\beta_j^2=1\\y_i(\beta_0+\beta_1x_{i1}+\beta_2x_{i2}+\cdots+\beta_px_{ip})\geq M,i=1,\cdots,n j=1pβj2=1yi(β0+β1xi1+β2xi2++βpxip)M,i=1,,n
y i ( β 0 + β 1 x i 1 + β 2 x i 2 + ⋯ + β p x i p ) ≥ M , i = 1 , ⋯   , n y_i(\beta_0+\beta_1x_{i1}+\beta_2x_{i2}+\cdots+\beta_px_{ip})\geq M,i=1,\cdots,n yi(β0+β1xi1+β2xi2++βpxip)M,i=1,,n 来说, M M M 是正数时,其保证了每个观测都落在超平面的正确的一侧。

不过,在许多情况下,会出现线性不可分的现象。

支持向量分类器

所选的超平面能够将大部分的训练观测正确区分开来,但可能会误分小部分训练观测。所选超平面是如下优化问题的解:
max ⁡ β 0 , β 1 , ⋯   , β p , ε 1 , ε 2 , ⋯   , ε n M \max_{\beta_0,\beta_1,\cdots,\beta_p,\varepsilon_1,\varepsilon_2,\cdots,\varepsilon_n}M β0,β1,,βp,ε1,ε2,,εnmaxM
满足
∑ 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 \sum_{j=1}^p\beta_j^2=1\\y_i(\beta_0+\beta_1x_{i1}+\beta_2x_{i2}+\cdots+\beta_px_{ip})\geq M(1-\varepsilon_i)\\\varepsilon_i\geq0,\sum_{i=1}^n\varepsilon_i\leq C j=1pβj2=1yi(β0+β1xi1+β2xi2++βpxip)M(1εi)εi0,i=1nεiC
其中, C C C 是非负的调节参数, ε 1 , ε 2 , ⋯   , ε n \varepsilon_1,\varepsilon_2,\cdots,\varepsilon_n ε1,ε2,,εn松弛变量(slack variable),作用是允许训练观测中有小部分观测可以落在间隔的错误的一侧或是超平面的错误的一侧。可以根据测试观测 x ∗ x^* x 落在超平面的哪一侧来判定 x ∗ x^* x 的类别归属,即可以根据 f ( x ∗ ) = β 0 + β 1 x 1 ∗ + ⋯ + β p x p ∗ f(x^*)=\beta_0+\beta_1x^*_1+\cdots+\beta_px^*_p f(x)=β0+β1x1++βpxp 的符号来对测试观测进行分类。

随着 C C C 的增加,我们越来越能够容许观测穿过间隔,因此间隔也会变得越来越宽,反之变窄。

实际上,调节参数 C C C 通常是通过交叉验证来选择的, C C C 控制了统计学习中偏差-方差的均衡,如果 C C C 比较小,间隔就比较窄,并且几乎不会出现穿过间隔的观测;这时分类器会高度拟合训练数据,虽然降低了偏差,但可能导致较大的方差。相反,如果 C C C 较大,间隔就会变宽,允许较多的观测穿过间隔;这时分类器可能对数据拟合不足,虽然能够降低方差,但是可能带来较大的偏差。

狭义的支持向量机

使用非线性决策边界分类

在支持向量机中,为解决类别之间的边界可能非线性的问题,可以使用预测变量的二次多项式、三次多项式、交互项甚至更高阶的多项式来扩大特征空间,例如,可以用 2 p 2p 2p 个特征 X 1 , X 1 2 , X 2 , X 2 2 , ⋯   , X p , X p 2 X_1,X_1^2,X_2,X_2^2,\cdots,X_p,X_p^2 X1,X12,X2,X22,,Xp,Xp2 来得到支持向量分类器。

具体来讲:
max ⁡ M 满 足 : y i ( β 0 + ∑ j = 1 p β j 1 x i j + ∑ j = 1 p β j 2 x j i 2 ) ≥ M ( 1 − ε i ) ∑ i = 1 n ε i ≤ C , ε i ≥ 0 , ∑ j = 1 p ∑ k = 1 2 β j k 2 = 1 \max M\\满足:y_i(\beta_0+\sum_{j=1}^p\beta_{j1}x_{ij}+\sum_{j=1}^p\beta_{j2}x_{ji}^2)\geq M(1-\varepsilon_i)\\\sum_{i=1}^n\varepsilon_i\leq C,\varepsilon_i\geq0,\sum_{j=1}^p\sum_{k=1}^2\beta_{jk}^2=1 maxMyi(β0+j=1pβj1xij+j=1pβj2xji2)M(1εi)i=1nεiC,εi0,j=1pk=12βjk2=1
或者:有交互项的: X 1 2 , X 1 3 , X 1 X 2 , X 1 X 2 2 , ⋯ X_1^2,X_1^3,X_1X_2,X_1X_2^2,\cdots X12,X13,X1X2,X1X22,,从一个 p p p 维空间扩大到 M > p M>p M>p 维空间。

例:我们使用 ( X 1 , X 2 , X 1 2 , X 2 2 , X 1 X 2 ) (X_1,X_2,X_1^2,X_2^2,X_1X_2) (X1,X2,X12,X22,X1X2) 代替 ( X 1 , X 2 ) (X_1,X_2) (X1,X2),决策边界的形式为:
β 0 + β 1 X 1 + β 2 X 2 + β 3 X 1 2 + β 4 X 2 2 + β 5 X 1 X 2 = 0 \beta_0+\beta_1X_1+\beta_2X_2+\beta_3X_1^2+\beta_4X_2^2+\beta_5X_1X_2=0 β0+β1X1+β2X2+β3X12+β4X22+β5X1X2=0
这就生成了非线性的决策边界。

三次的:
β 0 + β 1 X 1 + β 2 X 2 + β 3 X 1 2 + β 4 X 2 2 + β 5 X 1 X 2 + β 6 X 1 3 + β 7 X 2 3 + β 8 X 1 X 2 2 + β 9 X 1 2 X 2 = 0 \beta_0+\beta_1X_1+\beta_2X_2+\beta_3X_1^2+\beta_4X_2^2+\beta_5X_1X_2+\beta_6X_1^3+\beta_7X_2^3+\beta_8X_1X_2^2+\beta_9X_1^2X_2=0 β0+β1X1+β2X2+β3X12+β4X22+β5X1X2+β6X13+β7X23+β8X1X22+β9X12X2=0

支持向量机

支持向量机(SVM) 是支持向量分类器的一个扩展,扩展的结果是支持向量机使用了一种特殊的方式,即核函数(kernel) 来扩大特征空间。

内积(inner product):两个 r r r 维向量 a a a b b b 的内积定义为 ⟨ a , b ⟩ = ∑ i = 1 r a i b i \langle a,b\rangle=\sum_{i=1}^ra_ib_i a,b=i=1raibi,因此两个观测 x i x_i xi x i ′ x_{i'} xi 的内积为
⟨ x i , x i ′ ⟩ = ∑ j = 1 p x i j x i ′ j \langle x_i,x_{i'}\rangle=\sum_{j=1}^px_{ij}x_{i'j} xi,xi=j=1pxijxij
线性支持向量分类器可以描述为
f ( x ) = β 0 + ∑ i = 1 n α i ⟨ x , x i ⟩ f(x)=\beta_0+\sum_{i=1}^n\alpha_i\langle x,x_i\rangle f(x)=β0+i=1nαix,xi
这个式子有 n n n 个参数 α i , i = 1 , 2 , ⋯   , n \alpha_i,i=1,2,\cdots,n αi,i=1,2,,n,每个训练观测对应一个参数。

为了估计参数 α i , i = 1 , 2 , ⋯   , n \alpha_i,i=1,2,\cdots,n αi,i=1,2,,n β 0 \beta_0 β0,只需要所有训练观测的 ( n 2 ) \left(\begin{matrix}n\\2\end{matrix}\right) (n2) 个成对组合的内积 ⟨ x i , x i ′ ⟩ \langle x_i,x_{i'}\rangle xi,xi

事实证明,支持向量对应的 α i \alpha_i αi 非零,并且只有支持向量对应的 α i \alpha_i αi 非零——也就是说,如果一个训练观测并不是支持向量,那么它的 α i \alpha_i αi 就等于0。

因此如果 S S S 代表支持向量观测点的指标的集合,上式可以改写成:
f ( x ) = β 0 + ∑ i ∈ S α i ⟨ x , x i ⟩ f(x)=\beta_0+\sum_{i\in S}\alpha_i\langle x,x_i\rangle f(x)=β0+iSαix,xi
该式的求和项比上面的式子要少很多。

我们用一种一般化的形式:
K ( x i , x i ′ ) K(x_i,x_{i'}) K(xi,xi)
来代替内积。在这里, K K K 是一个函数,通常称为核函数(kernel)。核函数是一类用来衡量观测之间的相似性的函数。

例如:
K ( x i , x i ′ ) = ∑ j = 1 p x i j x i ′ j K(x_i,x_{i'})=\sum_{j=1}^px_{ij}x_{i'j} K(xi,xi)=j=1pxijxij
如果使用这种核函数,相当于使用支持向量分类器。该式称为线性核函数。

也可以选择其他形式的核函数,如:
K ( x i , x i ′ ) = ( 1 + ∑ j = 1 p x i j x i ′ j ) d K(x_i,x_{i'})=(1+\sum_{j=1}^px_{ij}x_{i'j})^d K(xi,xi)=(1+j=1pxijxij)d
可用来代替 ∑ j = 1 p x i j x i ′ j \sum_{j=1}^px_{ij}x_{i'j} j=1pxijxij。这就是自由度为 d d d多项式核函数(polynomial kernel),其中 d d d 是正整数。在支持向量分类器的算法中使用 d > 1 d>1 d>1 的多项式核函数,能够生成光滑度更高的决策边界。在这种情况下:
f ( x ) = β 0 + ∑ i ∈ S α i K ( x , x i ) f(x)=\beta_0+\sum_{i\in S}\alpha_iK(x,x_i) f(x)=β0+iSαiK(x,xi)
d = 1 d=1 d=1 时,多项式核的支持向量机就是支持向量分类器。

径向核函数(Radial Kernel)
K ( x i , x i ′ ) = exp ⁡ ( − γ ∑ j = 1 p ( x i j − x i ′ j ) 2 ) K(x_i,x_{i'})=\exp{(-\gamma\sum_{j=1}^p(x_{ij}-x_{i'j})^2)} K(xi,xi)=exp(γj=1p(xijxij)2)
γ \gamma γ 是一个正常数。

多分类的SVM

“一类对一类”的分类方法

假设响应变量的类别数 K > 2 K>2 K>2。一类对一类(OVO)分类方法,或称所有成对分类方法,需要构建 ( K 2 ) \left(\begin{matrix}K\\2\end{matrix}\right) (K2) 个SVM,每个SVM用来分隔两个类别。例如,其中一个SVM可能用来比较第 k k k 个类别(记为+1类)和第 k ′ k' k 个类别(记为-1类)。使用所有 ( K 2 ) \left(\begin{matrix}K\\2\end{matrix}\right) (K2) 个SVM对一个测试观测进行分类,然后记录这个测试观测被分到每个类别的次数。这个测试观测的最终预测类别就是预测次数最多的那一类。

“一类对其余”的分类方法

假设响应变量的类别数 K > 2 K>2 K>2。我们用 K K K 个SVM来拟合数据,每个SVM对 K K K 个类别中的1个类别的观测和其他 K − 1 K-1 K1 个类别的观测进行比较。记 β 0 k , β 1 k , ⋯   , β p k \beta_{0k},\beta_{1k},\cdots,\beta_{pk} β0k,β1k,,βpk 为使用SVM比较第 k k k 类(记为+1类)与其他 k − 1 k-1 k1 类(记为-1类)的时候,拟合的参数的结果。记 x ∗ x^* x 为一个测试观测,我们把这个观测预测为使得 β 0 k + β 1 k x 1 ∗ + β 2 k x 2 ∗ + ⋯ + β p k x p ∗ \beta_{0k}+\beta_{1k}x_1^*+\beta_{2k}x^*_2+\cdots+\beta_{pk}x_p^* β0k+β1kx1+β2kx2++βpkxp 最大化的那个类别,把这个测试观测预测为第 k k k 类。

与逻辑斯谛回归的关系

拟合支持向量分类器 f ( x ) = β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β p X p f(x)=\beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p f(x)=β0+β1X1+β2X2++βpXp 的式子:
max ⁡ β 0 , β 1 , ⋯   , β p , ε 1 , ε 2 , ⋯   , ε n M ∑ 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 \max_{\beta_0,\beta_1,\cdots,\beta_p,\varepsilon_1,\varepsilon_2,\cdots,\varepsilon_n}M\\\sum_{j=1}^p\beta_j^2=1\\y_i(\beta_0+\beta_1x_{i1}+\beta_2x_{i2}+\cdots+\beta_px_{ip})\geq M(1-\varepsilon_i)\\\varepsilon_i\geq0,\sum_{i=1}^n\varepsilon_i\leq C β0,β1,,βp,ε1,ε2,,εnmaxMj=1pβj2=1yi(β0+β1xi1+β2xi2++βpxip)M(1εi)εi0,i=1nεiC
可以改写为:
min ⁡ β 0 , β 1 , ⋯   , β p { ∑ i = 1 n max ⁡ [ 0 , 1 − y i f ( x i ) ] + λ ∑ j = 1 p β j 2 } \min_{\beta_0,\beta_1,\cdots,\beta_p}\{\sum_{i=1}^n\max[0,1-y_if(x_i)]+\lambda\sum_{j=1}^p\beta_j^2\} β0,β1,,βpmin{i=1nmax[0,1yif(xi)]+λj=1pβj2}
其中, λ \lambda λ 为非负的调节参数。当 λ \lambda λ 较大时, β 1 , ⋯   , β p \beta_1,\cdots,\beta_p β1,,βp 较小,能容忍的穿过间隔的观测就越多,我们就会得到一个方差较小但是偏差较大的分类器。当 λ \lambda λ 很小的时候,穿过间隔的观测就会很少。因此上式中较小的 λ \lambda λ 值等价于较小的 C C C 值。

该式依旧是“损失函数+惩罚项”的形式。

何时使用SVM和逻辑斯蒂回归:

  1. 当不同类别的观测可以很好地被分离时,SVM比LR好,LDA也是。
  2. 当不能被很好分离时,LR与SVM相似。
  3. 如果想估计概率,则选择LR。
  4. 对于非线性边界,核支持向量机比较好;也可以使用LR和LDA,但计算成本更高。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值