支持向量机从入门到放肆(一)

文章目录

  • 支持向量机从入门到放肆(一)
    • 1. 支持向量机基本原理
    • 2. 求解SVM的对偶问题
    • 3. 核函数

支持向量机从入门到放肆(一)

1. 支持向量机基本原理

假设有训练数据 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ​ T=\{(x_1, y_1),(x_2, y_2),...,(x_N ,y_N)\}​ T={(x1,y1),(x2,y2),...,(xNyN)} y i ∈ { − 1 , + 1 } ​ y_i\in\{-1,+1\}​ yi{1,+1}。最简单的分类想法就是找到一个超平面,将不同类别的样本分开。这样的超平面可能有很多,可以通过最大化超平面与样本之间的距离找到最优解。对于空间中一超平面 ( w ′ ) ⊤ x + b ′ = 0 ​ \left(\boldsymbol{w}^{\prime}\right)^{\top} \boldsymbol{x}+b^{\prime}=0​ (w)x+b=0。如果这个超平面可以正确分类两类样本,则对于任意样本 ( x i , y i ) ∈ D ​ \left(\boldsymbol{x}_{i}, y_{i}\right) \in D​ (xi,yi)D
{ ( w ′ ) ⊤ x i + b ′ > 0 , y i = + 1 ( w ′ ) ⊤ x i + b ′ < 0 , y i = − 1 \left\{\begin{array}{ll}{\left(\boldsymbol{w}^{\prime}\right)^{\top} \boldsymbol{x}_{i}+b^{\prime}>0,} & {y_{i}=+1} \\ {\left(\boldsymbol{w}^{\prime}\right)^{\top} \boldsymbol{x}_{i}+b^{\prime}<0,} & {y_{i}=-1}\end{array}\right. {(w)xi+b>0,(w)xi+b<0,yi=+1yi=1
根据几何间隔,上式中的0可以用一个极小的大于0的常数代替,这个极小的常数 ζ \zeta ζ表示距离超平面非常近:
{ ( w ′ ) ⊤ x i + b ′ ≥ + ζ , y i = + 1 ( w ′ ) ⊤ x i + b ′ ≤ − ζ , y i = − 1 \left\{\begin{array}{ll}{\left(\boldsymbol{w}^{\prime}\right)^{\top} \boldsymbol{x}_{i}+b^{\prime} \geq+\zeta,} & {y_{i}=+1} \\ {\left(\boldsymbol{w}^{\prime}\right)^{\top} \boldsymbol{x}_{i}+b^{\prime} \leq-\zeta,} & {y_{i}=-1}\end{array}\right. {(w)xi+b+ζ,(w)xi+bζ,yi=+1yi=1
前后同时除以 ζ \zeta ζ,再次修正上式:
{ ( 1 ζ w ′ ) ⊤ x i + b ′ ζ ≥ + 1 , y i = + 1 ( 1 ζ w ′ ) ⊤ x i + b ′ ζ ≤ − 1 , y i = − 1 \left\{\begin{array}{ll}{\left(\frac{1}{\zeta} \boldsymbol{w}^{\prime}\right)^{\top} \boldsymbol{x}_{i}+\frac{b^{\prime}}{\zeta} \geq+1,} & {y_{i}=+1} \\ {\left(\frac{1}{\zeta} \boldsymbol{w}^{\prime}\right)^{\top} \boldsymbol{x}_{i}+\frac{b^{\prime}}{\zeta} \leq-1,} & {y_{i}=-1}\end{array}\right. (ζ1w)xi+ζb+1,(ζ1w)xi+ζb1,yi=+1yi=1
w = 1 ζ w ′ , b = b ′ ζ w=\frac{1}{\zeta} w^{\prime}, b=\frac{b^{\prime}}{\zeta} w=ζ1w,b=ζb,有:
{ w T x i + b ⩾ + 1 , y i = + 1 w T x i + b ⩽ − 1 , y i = − 1 \left\{\begin{array}{ll}{\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \geqslant+1,} & {y_{i}=+1} \\ {\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \leqslant-1,} & {y_{i}=-1}\end{array}\right. {wTxi+b+1,wTxi+b1,yi=+1yi=1
已知点到平面的距离为 r = ∣ w T x + b ∣ ∥ w ∥ r=\frac{\left|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right|}{\|\boldsymbol{w}\|} r=wwTx+b。不难理解SVM的最优解就是使得两个异类的样本距离超平面的距离之和 r = 2 ∥ w ∥ r=\frac{2}{\|\boldsymbol{w}\|} r=w2最大的超平面。这个问题就变成了如下问题:
max ⁡ w , b 2 ∥ w ∥  s.t.  y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m \begin{array}{l}{\max _{\boldsymbol{w}, b} \frac{2}{\|\boldsymbol{w}\|}} \\ {\text { s.t. } y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m}\end{array} maxw,bw2 s.t. yi(wTxi+b)1,i=1,2,,m
最大化 2 ∥ w ∥ \frac{2}{\|\boldsymbol{w}\|} w2等价于最小化 ∥ w ∥ 2 \|w\|^2 w2,即上式可以写为:
min ⁡ w , b 1 2 ∥ w ∥ 2  s.t.  y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m \begin{array}{l}{\min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}} \\ {\text { s.t. } y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m}\end{array} minw,b21w2 s.t. yi(wTxi+b)1,i=1,2,,m
即在满足 y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m {y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m} yi(wTxi+b)1,i=1,2,,m这个条件的情况下,找到合适的 w \boldsymbol{w} w b b b使得 1 2 ∥ w ∥ \frac{1}{2}\|\boldsymbol{w}\| 21w最小。

2. 求解SVM的对偶问题

在上一节中,SVM的求解问题已经确定,现在需要运用数学方法来求解合适的 w \boldsymbol{w} w b b b。这里我们采用更高效的拉格朗日乘子法。先将SVM求解问题可以写成:
min ⁡ w , b 1 2 ∥ w ∥ 2 s.t.  1 − y i ( w T x i + b ) ≤ 0 \begin{array}{l}{\min _{\boldsymbol{w},b}\frac{1}{2}\|\boldsymbol{w}\|^2}\\{\text{s.t. }1-y_i\left(\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}_i+b\right)\leq0}\end{array} minw,b21w2s.t. 1yi(wTxi+b)0
用拉格朗日乘子法求解即:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( w ⊤ x i + b ) ) L(\boldsymbol{w}, b, \boldsymbol{\alpha})=\frac{1}{2}\|\boldsymbol{w}\|^{2}+\sum_{i=1}^{m} \alpha_{i}\left(1-y_{i}\left(\boldsymbol{w}^{\top} \boldsymbol{x}_{i}+b\right)\right) L(w,b,α)=21w2+i=1mαi(1yi(wxi+b))
先对上式变形:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 m ( α i − α i y i w T x i − α i y i b ) = 1 2 w T w + ∑ i = 1 m α i − ∑ i = 1 m α i y i w T x i − ∑ i = 1 m α i y i b \begin{aligned} L(\boldsymbol{w}, b, \boldsymbol{\alpha}) &=\frac{1}{2}\|\boldsymbol{w}\|^2+\sum_{i=1}^m \alpha_i\left(1-y_i\left(\boldsymbol{w}^{T}\boldsymbol{x}_i+b\right)\right)\\ &=\frac{1}{2}\|\boldsymbol{w}\|^2+\sum_{i=1}^m\left(\alpha_i-\alpha_iy_i\boldsymbol{w}^{T}\boldsymbol{x}_i-\alpha_iy_ib\right)\\ &=\frac{1}{2}\boldsymbol{w}^{T}\boldsymbol{w}+\sum_{i=1}^m\alpha_i-\sum_{i=1}^m\alpha_iy_i\boldsymbol{w}^{T}\boldsymbol{x}_i-\sum_{i=1}^m\alpha_iy_ib \end{aligned} L(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))=21w2+i=1m(αiαiyiwTxiαiyib)=21wTw+i=1mαii=1mαiyiwTxii=1mαiyib
对上式中 w ​ \boldsymbol{w}​ w b ​ b​ b求导,使导数为0,得到:
∂ L ∂ w = 1 2 × 2 × w + 0 − ∑ i = 1 m α i y i x i − 0 = 0 ⟹ w = ∑ i = 1 m α i y i x i ∂ L ∂ b = 0 + 0 − 0 − ∑ i = 1 m α i y i = 0 ⟹ ∑ i = 1 m α i y i = 0 \begin{aligned}\frac{\partial{L}}{\partial{\boldsymbol{w}}}=\frac{1}{2}\times2\times\boldsymbol{w}+0-\sum_{i=1}^{m}\alpha_iy_i\boldsymbol{x}_i-0=0 &\Longrightarrow \boldsymbol{w}=\sum_{i=1}^{m}\alpha_iy_i\boldsymbol{x}_i\\ \frac{\partial{L}}{\partial{b}}=0+0-0-\sum_{i=1}^{m}\alpha_iy_i=0&\Longrightarrow\sum_{i=1}^{m}\alpha_iy_i=0 \end{aligned} wL=21×2×w+0i=1mαiyixi0=0bL=0+00i=1mαiyi=0w=i=1mαiyixii=1mαiyi=0
w = ∑ i = 1 m α i y i x i ​ \boldsymbol{w}=\sum_{i=1}^{m}\alpha_iy_i\boldsymbol{x}_i​ w=i=1mαiyixi ∑ i = i m α i y i = 0 ​ \sum_{i=i}^{m}\alpha_iy_i=0​ i=imαiyi=0代入 L ( w , b , α ) ​ L(\boldsymbol{w}, b, \boldsymbol{\alpha})​ L(w,b,α),则有:
L ( w , b , α ) = 1 2 w T w + ∑ i = 1 m α i − w T w + 0 = ∑ i = 1 m α i − 1 2 w T w = ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \begin{aligned} L(\boldsymbol{w},b,\boldsymbol{\alpha})&=\frac{1}{2}\boldsymbol{w}^{T}\boldsymbol{w}+\sum_{i=1}^m\alpha_i-\boldsymbol{w}^{T}\boldsymbol{w}+0\\ &=\sum_{i=1}^m\alpha_i-\frac{1}{2}\boldsymbol{w}^{T}\boldsymbol{w}\\ &=\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^{T}\boldsymbol{x}_j \end{aligned} L(w,b,α)=21wTw+i=1mαiwTw+0=i=1mαi21wTw=i=1mαi21i=1mj=1mαiαjyiyjxiTxj
即现在寻找合适的 α ​ \boldsymbol{\alpha}​ α来最大化 L ( w , b , α ) ​ L(\boldsymbol{w},b,\boldsymbol{\alpha})​ L(w,b,α),即:
max ⁡ α   ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s.t.  ∑ i = 1 m α i y i = 0 , α i ⩾ 0 , i = 1 , 2 , . . . , m \begin{aligned} \max_{\boldsymbol{\alpha}}&\text{ }\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^{T}\boldsymbol{x}_j\\ &\text{s.t. }\sum_{i=1}^{m}\alpha_iy_i=0,\\ &\alpha_i\geqslant0,i=1,2,...,m \end{aligned} αmax i=1mαi21i=1mj=1mαiαjyiyjxiTxjs.t. i=1mαiyi=0,αi0,i=1,2,...,m
上述问题是二次规划问题,可以使用二次规划算分来求解,但是这样求解的复杂度正比与训练样本的数量。实际上有更快速的算法,这里介绍使用序列最小化优化算法(Sequential Minimal Optimization, SMO)算法。SMO的基本思路是先固定 α i \alpha_i αi以外其他参数,找到目标函数在 α i \alpha_i αi上的最值。但是由于约束条件 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_iy_i=0 i=1mαiyi=0存在, α i \alpha_i αi可以用别的参数表示出,因此先选择两个参数 α i 、 α j \alpha_i、\alpha_j αiαj,固定其他参数,找到在参数 α i 、 α j \alpha_i、\alpha_j αiαj上的最大值。

由于约束条件 ∑ i = 1 m α i y i = 0 ​ \sum_{i=1}^{m}\alpha_iy_i=0​ i=1mαiyi=0,且固定了其他参数,有:
α i y i + α j y j = c , α i ⩾ 0 , α j ⩾ 0 \alpha_iy_i+\alpha_jy_j=c,\alpha_i\geqslant0,\alpha_j\geqslant0 αiyi+αjyj=c,αi0,αj0
上式中可以小区 α j ​ \alpha_j​ αj,代入原问题,则可以得到 α i ​ \alpha_i​ αi α j ​ \alpha_j​ αj的解。这样不断选取两个参数进行优化,直到收敛可得到所有 α ​ \alpha​ α的解。

对于任何支持向量 ( x s , y s ) (\boldsymbol{x}_s,y_s) (xs,ys)都有:
y s ( ∑ i ∈ S α i y i x i T x j + b ) = 1 y_s\left(\sum_{i\in S}\alpha_iy_i\boldsymbol{x}_i^{T}\boldsymbol{x}_j+b\right)=1 ys(iSαiyixiTxj+b)=1
其中, S S S是所有支持向量的集合。因此,代入任何一个支持向量就可以求得 b b b。实际操作中,常用更鲁棒的方法:使用所有支持向量的平均值来求解 b b b,即:
b = 1 ∣ S ∣ ∑ s ∈ S ( 1 y s − ∑ i ∈ S α i y i x i T x j ) b=\frac{1}{|S|}\sum_{s \in S}\left(\frac{1}{y_s}-\sum_{i \in S}\alpha_iy_i\boldsymbol{x}_i^{T}\boldsymbol{x}_j\right) b=S1sS(ys1iSαiyixiTxj)
至此,最基本的支持向量机原理及求解过程已经叙述完毕。

3. 核函数

上述过程都默认能找到一个超平面,可以线性的对所有样本分类。但是在实际情况中,线性分类器往往不能实现正确分类。这时,可以将样本映射到高维的特征空间,在特征空间可以实现线性划分。用 ϕ ( x ) \phi(\boldsymbol{x}) ϕ(x)表示样本 x \boldsymbol{x} x映射后的特征向量。则支持向量机待解决的问题转化为:
max ⁡ α   ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) s.t.  ∑ i = 1 m α i y i = 0 , α i ⩾ 0 , i = 1 , 2 , . . . , m \begin{aligned} \max_{\boldsymbol{\alpha}}&\text{ }\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\phi(\boldsymbol{x}_i)^{T}\phi(\boldsymbol{x}_j)\\ &\text{s.t. }\sum_{i=1}^{m}\alpha_iy_i=0,\\ &\alpha_i\geqslant0,i=1,2,...,m \end{aligned} αmax i=1mαi21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)s.t. i=1mαiyi=0,αi0,i=1,2,...,m
上式中 ϕ ( x i ) T ϕ ( x j ) ​ \phi(\boldsymbol{x}_i)^{T}\phi(\boldsymbol{x}_j)​ ϕ(xi)Tϕ(xj)是样本 x i ​ \boldsymbol{x}_i​ xi x j ​ \boldsymbol{x}_j​ xj的内积,如果样本维度过高,计算量会很大。为了避免这个问题,引入核函数 κ ( ⋅ , ⋅ ) ​ \kappa(·,·)​ κ()使得样本 x i ​ \boldsymbol{x}_i​ xi x j ​ \boldsymbol{x}_j​ xj的内积等于核函数的结果,即:
κ ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ = ϕ ( x i ) T ϕ ( x j ) \kappa(\boldsymbol{x}_i,\boldsymbol{x}_j)=\langle \phi(\boldsymbol{x}_i),\phi(\boldsymbol{x}_j) \rangle=\phi(\boldsymbol{x}_i)^{T}\phi(\boldsymbol{x}_j) κ(xixj)=ϕ(xi),ϕ(xj)=ϕ(xi)Tϕ(xj)
这样就简化了计算。因此支持向量机的求解变为:
max ⁡ α   ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j ) s.t.  ∑ i = 1 m α i y i = 0 , α i ⩾ 0 , i = 1 , 2 , . . . , m \begin{aligned} \max_{\boldsymbol{\alpha}}&\text{ }\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\kappa (\boldsymbol{x}_i,\boldsymbol{x}_j)\\ &\text{s.t. }\sum_{i=1}^{m}\alpha_iy_i=0,\\ &\alpha_i\geqslant0,i=1,2,...,m \end{aligned} αmax i=1mαi21i=1mj=1mαiαjyiyjκ(xi,xj)s.t. i=1mαiyi=0,αi0,i=1,2,...,m
即要解决非线性划分问题,只需要找到合适的特征变换,并找到这个变换对应的核函数就可以求解分线性支持向量机。事实上,只要一个对称的函数所对应的核矩阵是半正定的,它就可以当成核函数使用,且总能找到一个对应的映射 ϕ ​ \phi​ ϕ

常用的核函数有:

名称 表达式 参数
线性核 κ ( x i , x j ) = x i T x j \kappa (\boldsymbol{x}_i,\boldsymbol{x}_j)=\boldsymbol{x}_i^{T}\boldsymbol{x}_j κ(xi,xj)=xiTxj
多项式核 κ ( x i , x j ) = ( x i T x j ) d \kappa (\boldsymbol{x}_i,\boldsymbol{x}_j)=(\boldsymbol{x}_i^{T}\boldsymbol{x}_j)^d κ(xi,xj)=(xiTxj)d d ⩾ 1 d\geqslant1 d1为多项式的次数
高斯核 κ ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\exp \left(-\frac{\left\|\boldsymbol{x}_{i}-\boldsymbol{x}_{j}\right\|^{2}}{2 \sigma^{2}}\right) κ(xi,xj)=exp(2σ2xixj2) σ > 0 \sigma>0 σ>0为高斯核的贷款
拉普拉斯核 κ ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ σ ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\exp \left(-\frac{\left\|\boldsymbol{x}_{i}-\boldsymbol{x}_{j}\right\|}{\sigma}\right) κ(xi,xj)=exp(σxixj) σ > 0 \sigma>0 σ>0
Sigmoid核 κ ( x i , x j ) = tanh ( β x i T x j + θ ) \kappa (\boldsymbol{x}_i,\boldsymbol{x}_j)=\text{tanh}(\beta\boldsymbol{x}_i^{T}\boldsymbol{x}_j+\theta) κ(xi,xj)=tanh(βxiTxj+θ) tanh为双曲正切函数, β > 0 , θ < 0 \beta>0,\theta<0 β>0,θ<0

另外,将核函数 κ 1 , κ 2 \kappa_1,\kappa_2 κ1,κ2进行下列组合之后仍是核函数:

  • 线性组合 γ κ 1 + γ 2 κ 2 \gamma\kappa_1+\gamma_2\kappa_2 γκ1+γ2κ2仍为核函数
  • 核函数的直积 κ 1 ⨂ κ 2 ( x , z ) = κ 1 ( x , z ) κ 2 ( x , z ) \kappa_1\bigotimes\kappa_2(\boldsymbol{x},\boldsymbol{z})=\kappa_1(\boldsymbol{x},\boldsymbol{z})\kappa_2(\boldsymbol{x},\boldsymbol{z}) κ1κ2(x,z)=κ1(x,z)κ2(x,z)仍为核函数
  • 对于任意函数 g ( x ) g(\boldsymbol{x}) g(x) κ ( x , z ) = g ( x ) κ 1 ( x , z ) g ( z ) \kappa(\boldsymbol{x},\boldsymbol{z})=g(\boldsymbol{x})\kappa_1(\boldsymbol{x},\boldsymbol{z})g(\boldsymbol{z}) κ(x,z)=g(x)κ1(x,z)g(z)仍是核函数

吼吼,今天先到这里。后续会更新。

你可能感兴趣的:(机器学习,机器学习,SVM,支持向量机)