ISLR读书笔记十八:支持向量机(Support Vector Machines)

it2024-01-20  74

上一篇讲到的支持向量分类器适用于两类的边界是线性的情况,如果边界是非线性的,用支持向量分类器得到的结果并不好。

所以,对于一般的非线性边界的问题,需要采用新的方法:支持向量机。其基本思想是用核的方法来扩大特征空间。

出发点如下: 可以证明,支持向量分类器的解 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)ϵi0,i=1nϵiC 只与观测数据的内积相关。记 < x i , x i ′ > = ∑ j = 1 p x i j x i ′ j <x_i,x_{i'}>=\sum_{j=1}^px_{ij}x_{i'j} <xi,xi>=j=1pxijxij 线性支持向量分类器可以如下表示: f ( x ) = β 0 + ∑ i = 1 p α i < x , x i > f(x)=\beta_0+\sum_{i=1}^p\alpha_i<x,x_i> f(x)=β0+i=1pαi<x,xi> 可以证明, α i ≠ 0 \alpha_i\neq0 αi=0 当且仅当该观测数据是支持向量。所以上式又可以进一步写成 f ( x ) = β 0 + ∑ i ∈ S α i < x , x i > f(x)=\beta_0+\sum_{i\in S}\alpha_i<x,x_i> f(x)=β0+iSαi<x,xi> 而核方法,就是用一个一般的 K ( x i , x i ′ ) K(x_i,x_{i'}) K(xi,xi) 来代替内积。 f ( x ) = β 0 + ∑ i ∈ S α i K ( x i , x i ′ ) f(x)=\beta_0+\sum_{i\in S}\alpha_iK(x_i,x_{i'}) f(x)=β0+iSαiK(xi,xi) 核函数是刻画两个观测数据相似程度的函数。比如,如果取 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 那么此时支持向量机就是支持向量分类器。上式是一个线性核(linear kernel),本质上刻画的是皮尔森相关性(Pearson correlation)。 另外还有多项式核(polynomial kernel): 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 这里 d d d 是正整数。 多项式核本质上是在多项式次数为 d d d 的更高维空间中拟合一个支持向量分类器模型。

径向核(radial kernel): K ( x i , x i ′ ) = exp ( − γ ∑ j = 1 p ( x i j − x i ′ j ) 2 ) K(x_i,x_{i'})=\text{exp}(-\gamma\sum_{j=1}^p(x_{ij}-x_{i'j})^2) K(xi,xi)=exp(γj=1p(xijxij)2) 这里 γ > 0 \gamma>0 γ>0 给定一个测试数据 x ∗ x^* x,如果 x ∗ x^* x 和训练数据 x i x_i xi 之间欧式距离很大,那么他们之间的径向核就很小,也就是说,距离测试数据 x ∗ x^* x 很远的点,对其预测结果影响很小。所以径向核有局部性,测试数据周围的点影响更大。

对于多分类问题( K > 2 K>2 K>2),有两种常用的方法:

一对一(One-Versus-One Classification) 建立 C K 2 C_K^2 CK2 个 SVM 模型,每次选取两个类,一个记作+1,一个记作-1。最后进行计数,分配给出现次数最多的类

一对多(One-Versus-All Classification) 建立 K K K 个 SVM 模型,每次选取一个类,将其余 K − 1 K-1 K1 类看成另外一类。记第 k k k 个模型(第 k k k 类记作+1,其余类记作-1)得到的参数为 β 0 k , β 1 k , ⋯   , β p k \beta_{0k},\beta_{1k},\cdots,\beta_{pk} β0k,β1k,,βpk,分配给使得 β 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

最新回复(0)