SVM详解(三)支持向量机使用核技巧

文章目录

      • 1. 数据升维处理非线性可分问题
      • 2. C o v e r Cover Cover 定理
      • 3. 核函数
      • 4. 常用核函数
      • 5. 非线性支持向量机学习算法

1. 数据升维处理非线性可分问题


通过前面的学习,我们了解到线性支持向量机可以很好的处理线性分类问题,但是现实中往往很多数据是非线性可分的,举一个二维空间中很简单的非线性可分的例子,如下图所示

SVM详解(三)支持向量机使用核技巧_第1张图片

对于此类数据,我们找不到一条能够维完全正确的分离圆圈和叉叉两类数据的直线(或平面),但是我们又想完成此类数据的分类工作,怎么办呢?

首先,想到的是我们可以找到一条曲线(如上图的蓝色曲线)将数据分离开来,但是目前我们学到的知识, S V M SVM SVM 只能反馈给我们超平面,并不能解决超曲面的问题,当然我们可以尝试其他算法如神经网络等,但这不是我们这节课的重点,我们希望仍使用 S V M SVM SVM 帮我们进行数据分类。

其次,为了使用线性支持向量机帮我们完成分类任务,我们需要想办法将非线性可分数据转换成线性可分数据,此时可以尝试将数据通过函数映射到高维空间中,也许就能够线性可分了。这个听起来有点抽象,我们以上图的中的异或问题为例,来看下到底发生了什么,上图中总共有 4 个点,对应两类数据,其中:

  • 圈圈类的点为 x 1 = ( 0 , 0 ) , x 2 = ( 1 , 1 ) x_1 = (0,0),x_2 = (1,1) x1=(0,0),x2=(1,1)
  • 叉叉类的点为 x 3 = ( 1 , 0 ) , x 4 = ( 0 , 1 ) x_3=(1,0),x_4=(0,1) x3=(1,0),x4=(0,1)

我们尝试使用函数 ϕ ( x ) = ( x ( 1 ) 2 , 2 x ( 1 ) ∗ x ( 2 ) , x ( 2 ) 2 ) \phi(x)=({x^{(1)}}^2,\sqrt{2}{x^{(1)}}*{x^{(2)}},{x^{(2)}}^2) ϕ(x)=(x(1)2,2 x(1)x(2),x(2)2) ,将四个二维数据点映射至三维空间,映射后的点坐标分别为

  • 圈圈类的点为 x 1 n e w = ( 0 , 0 , 0 ) , x 2 n e w = ( 1 , 2 , 1 ) x_1^{new} = (0,0,0),x_2^{new} = (1,\sqrt{2},1) x1new=(0,0,0),x2new=(1,2 ,1)
  • 叉叉类的点为 x 3 n e w = ( 1 , 0 , 0 ) , x 4 n e w = ( 0 , 0 , 1 ) x_3^{new}=(1,0,0),x_4^{new}=(0,0,1) x3new=(1,0,0),x4new=(0,0,1)

我们可以找到分离超平面 $ w\cdot x+b = 0 $ 的一组解为 w = ( 1 , − 2 , 1 ) , b = − 0.5 w=(1,-\sqrt{2},1),b=-0.5 w=(1,2 ,1),b=0.5 , 此时有决策函数

f ( x ) = s i g n ( w ⋅ x + b ) f(x) = sign(w\cdot x+b) f(x)=sign(wx+b) ,我们可以将四个新点分别带入决策函数进行验证:

f ( x 1 n e w ) = s i g n ( 1 ∗ 0 − 2 ∗ 0 + 1 ∗ 0 − 0.5 ) = s i g n ( − 0.5 ) = − 1 f ( x 2 n e w ) = s i g n ( 1 ∗ 1 − 2 ∗ 2 + 1 ∗ 1 − 0.5 ) = s i g n ( − 0.5 ) = − 1 f ( x 3 n e w ) = s i g n ( 1 ∗ 1 − 2 ∗ 0 + 1 ∗ 0 − 0.5 ) = s i g n ( 0.5 ) = 1 f ( x 4 n e w ) = s i g n ( 1 ∗ 0 − 2 ∗ 0 + 1 ∗ 1 − 0.5 ) = s i g n ( 0.5 ) = 1 \begin{aligned} &f(x_1^{new}) = sign(1*0-\sqrt{2}*0+1*0-0.5) = sign(-0.5)=-1 \\& f(x_2^{new}) = sign(1*1-\sqrt{2}*\sqrt{2}+1*1-0.5) = sign(-0.5)=-1 \\ & f(x_3^{new}) = sign(1*1-\sqrt{2}*0+1*0-0.5) = sign(0.5)=1 \\& f(x_4^{new}) = sign(1*0-\sqrt{2}*0+1*1-0.5) = sign(0.5)=1\end{aligned} f(x1new)=sign(102 0+100.5)=sign(0.5)=1f(x2new)=sign(112 2 +110.5)=sign(0.5)=1f(x3new)=sign(112 0+100.5)=sign(0.5)=1f(x4new)=sign(102 0+110.5)=sign(0.5)=1

发现该超平面确实将两类数据完全正确的划分开了。

我们通过图像,也可以很直观的看到,超平面将两类数据完全正确的分开:

SVM详解(三)支持向量机使用核技巧_第2张图片

升维后的数据是线性可分的,我们就可以在高维度空间使用线性支持向量机来求解分离超平面。

2. C o v e r Cover Cover 定理


通过上面的例子我们可以看到,当数据集非线性可分时,可通过提高数据维度的方式,在高维度空间构造线性决策面,当然我们会有疑问,提高数据维度,数据集就一定能线性可分吗?幸运的是 关于这个问题, T h o m a s M . C o v e r Thomas M. Cover ThomasM.Cover 1965 1965 1965 年就已经给了我们答案:

  • 将复杂的模式分类问题非线性地投射到高维空间将比投射到低维空间更可能是线性可分的

这就是 C o v e r Cover Cover 定理,有相关的公式描述为:

  • 假设数据集 T T T 共有 N N N 个数据, d d d 为数据维度数,数据集 T T T 能被线性可分的概率为

    P { N , d } = { 2 1 − N ∑ m = 0 d − 1 ( m N − 1 ) N > d 1 N ≤ d P\{N,d\} = \begin{cases} 2^{1-N}\sum\limits_{m=0}^{d-1}\bigg(_m^{N-1}\bigg) \quad N>d \\1 \quad\quad\quad\quad\quad\quad\quad N\leq d\end{cases} P{N,d}=21Nm=0d1(mN1)N>d1Nd

    不难看出,当数据维度 d d d 增大时,数据集被线性可分的概率也就越大,直至维度数大于等于数据量时,数据集被线性可分的概率为 1 1 1

通过以上的分析,可以得出结论:如果原始空间是有限维,那么一定存在一个高维特征空间使样本可分

3. 核函数


通过实例分析以及引用相关定理,我们知道当原始数据非线性可分时,可以通过以下两步进行处理

  • 将数据通过一个函数 ϕ ( x ) \phi(x) ϕ(x) 将数据映射到高维空间中,即 x → ϕ ( x ) x \rightarrow \phi(x) xϕ(x)
  • 在高维空间中利用线性分类学习方式从训练数据中学习分类模型,在这一步,就可以使用线性支持向量机算法帮我们解决问题。

对于非线性可分数据的分类问题,我们比线性可分数据的分类问题仅仅是多了一步将数据往高维度映射的操作,由此我们得到了非线性可分的算法,只需要要将线性支持向量机算法中的 x i → ϕ ( x i ) x_i \rightarrow \phi(x_i) xiϕ(xi)

  • 算法

    输入:线性数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)},其中, x i ∈ χ = R n , y i ∈ Y = { − 1 , 1 } , i = 1 , 2 , ⋯   , N ; x_i \in \chi=R^n,y_i \in Y=\{-1,1\},\quad i=1,2,\cdots,N; xiχ=RnyiY={1,1},i=1,2,,N;

    输出:分离超平面和分类决策函数

    ( 1 ) (1) (1) 选择惩罚参数 C > 0 C>0 C>0,构造并求解凸二次规划问题:

    min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( ϕ ( x i ) ⋅ ϕ ( x j ) ) − ∑ i = 1 N α i \min\limits_\alpha \quad \frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N \alpha_i\alpha_jy_iy_j(\phi(x_i)\cdot \phi(x_j))-\sum\limits_{i=1}^N\alpha_i αmin21i=1Nj=1Nαiαjyiyj(ϕ(xi)ϕ(xj))i=1Nαi

    s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , ⋯   , N \begin{aligned}s.t. \quad &\sum\limits_{i=1}^N\alpha_iy_i=0 \\ &0\leq \alpha_i \leq C, \quad i=1,2,\cdots,N \end{aligned} s.t.i=1Nαiyi=00αiC,i=1,2,,N

    求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α N ∗ ) T \alpha^* = (\alpha_1^*,\alpha_2^*,\cdots,\alpha_N^*)^T α=(α1,α2,,αN)T

    ( 2 ) (2) (2) 计算

    w ∗ = ∑ i = 1 N α i ∗ y i ϕ ( x i ) w^* = \sum\limits_{i=1}^N\alpha_i^*y_i \phi(x_i) w=i=1Nαiyiϕ(xi)

    并选择 α ∗ \alpha^* α 的一个正分量 a j ∗ > 0 a_j^*>0 aj>0 适合条件 0 < α j ∗ < C 0< \alpha_j^* < C 0<αj<C,计算

    b ∗ = y j − ∑ i = 1 N α i ∗ y i ( ϕ ( x i ) ⋅ ϕ ( x j ) ) b^* =y_j-\sum\limits_{i=1}^N\alpha_i^*y_i (\phi(x_i)\cdot \phi(x_j)) b=yji=1Nαiyi(ϕ(xi)ϕ(xj))

    对任一适合条件 0 < α j ∗ < C 0< \alpha_j^* < C 0<αj<C a j ∗ a_j^* aj ,均能按上式求出 b ∗ b^* b, 但是不同的样本点计算出的 b ∗ b^* b 并不一致,所以一般在所有满足条件的样本点上都计算 b b b,然后求平均值作为 b ∗ b^* b 的最终值。

    ( 3 ) (3) (3) 求得分离超平面

    w ∗ ⋅ ϕ ( x ) + b ∗ = 0 w^* \cdot \phi(x)+b^*=0 wϕ(x)+b=0

    分类决策函数

    f ( x ) = s i g n ( w ∗ ⋅ ϕ ( x ) + b ∗ ) = s i g n ( ∑ i = 1 N α i ∗ y i ϕ ( x i ) ⋅ ϕ ( x ) + b ∗ ) \begin{aligned} f(x) &= sign(w^* \cdot \phi(x)+b^*) \\&= sign(\sum\limits_{i=1}^N\alpha_i^*y_i \phi(x_i) \cdot \phi(x)+b^*)\end{aligned} f(x)=sign(wϕ(x)+b)=sign(i=1Nαiyiϕ(xi)ϕ(x)+b)

从算法中不难发现,目标函数和分类决策函数均与输入的实例间的内积( ϕ ( x i ) ⋅ ϕ ( x j ) \phi(x_i)\cdot \phi(x_j) ϕ(xi)ϕ(xj))有关 ,为了求解最终的分离超平面,似乎我们需要知道 ϕ ( x ) \phi(x) ϕ(x) 的显式定义,比如开篇讲解的异或问题的例子中,我们定义

ϕ ( x ) = ( x ( 1 ) 2 , 2 x ( 1 ) ∗ x ( 2 ) , x ( 2 ) 2 ) . \phi(x)=({x^{(1)}}^2,\sqrt{2}{x^{(1)}}*{x^{(2)}},{x^{(2)}}^2). ϕ(x)=(x(1)2,2 x(1)x(2),x(2)2).

我们试着使用这个 ϕ ( x ) \phi(x) ϕ(x) 计算下两个实例间的内积为

ϕ ( x ) ⋅ ϕ ( z ) = ( x ( 1 ) 2 , 2 x ( 1 ) ∗ x ( 2 ) , x ( 2 ) 2 ) ⋅ ( z ( 1 ) 2 , 2 z ( 1 ) ∗ z ( 2 ) , z ( 2 ) 2 ) = x ( 1 ) 2 ∗ z ( 1 ) 2 + 2 x ( 1 ) ∗ x ( 2 ) ∗ z ( 1 ) ∗ z ( 2 ) + x ( 2 ) 2 ∗ z ( 2 ) 2 = ( x ( 1 ) ∗ z ( 1 ) + x ( 2 ) ∗ z ( 2 ) ) 2 = ( x ⋅ z ) 2 \begin{aligned}\phi(x) \cdot \phi(z) &= ({x^{(1)}}^2,\sqrt{2}{x^{(1)}}*{x^{(2)}},{x^{(2)}}^2) \cdot ({z^{(1)}}^2,\sqrt{2}{z^{(1)}}*{z^{(2)}},{z^{(2)}}^2) \\&={x^{(1)}}^2 * {z^{(1)}}^2+2{x^{(1)}}*{x^{(2)}}*{z^{(1)}}*{z^{(2)}}+{x^{(2)}}^2*{z^{(2)}}^2\\&=({x^{(1)}}*{z^{(1)}}+{x^{(2)}}*{z^{(2)}})^2 \\&=(x \cdot z)^2\end{aligned} ϕ(x)ϕ(z)=(x(1)2,2 x(1)x(2),x(2)2)(z(1)2,2 z(1)z(2),z(2)2)=x(1)2z(1)2+2x(1)x(2)z(1)z(2)+x(2)2z(2)2=(x(1)z(1)+x(2)z(2))2=(xz)2

这就很有意思了,经过计算发现对于异或问题我们选定的 ϕ ( x ) \phi(x) ϕ(x) 满足 ϕ ( x ) ⋅ ϕ ( z ) = ( x ⋅ z ) 2 \phi(x) \cdot \phi(z) = (x \cdot z)^2 ϕ(x)ϕ(z)=(xz)2 这意味着

  • 如果我们直接定义 ϕ ( x ) ⋅ ϕ ( z ) = ( x ⋅ z ) 2 \phi(x) \cdot \phi(z) = (x \cdot z)^2 ϕ(x)ϕ(z)=(xz)2 ,也能使用算法得到分离超平面,且我们不需要知道 ϕ ( x ) \phi(x) ϕ(x) 的显式定义
  • 我们使用 ( x ⋅ z ) 2 (x \cdot z)^2 (xz)2 替换 ϕ ( x ) ⋅ ϕ ( z ) \phi(x) \cdot \phi(z) ϕ(x)ϕ(z) 后,避免了升维后计算量的增加

我们将 ( x ⋅ z ) 2 = ϕ ( x ) ⋅ ϕ ( z ) (x \cdot z)^2 = \phi(x) \cdot \phi(z) (xz)2=ϕ(x)ϕ(z) 这种替换处理方式,叫做核技巧,并将 K ( x , z ) = ( x ⋅ z ) 2 K(x,z) = (x \cdot z)^2 K(x,z)=(xz)2 叫做核函数。下面给出核函数的数学定义

  • 核函数

    χ \chi χ 是输入空间(欧式空间 R n R^n Rn 的子集或离散集合),又设 H H H 为特征空间(希伯特空间),如果存在一个从 χ \chi χ H H H 的映射

    ϕ ( x ) : χ → H \phi(x): \chi \rightarrow H ϕ(x):χH

    使得对所有 x , z ∈ χ x,z \in \chi x,zχ,函数 K ( x , z ) K(x,z) K(x,z) 满足条件

    K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z) = \phi(x) \cdot \phi(z) K(x,z)=ϕ(x)ϕ(z)

    则称 K ( x , z ) K(x,z) K(x,z) 为核函数, ϕ ( x ) \phi(x) ϕ(x) 为映射函数

核技巧的想法是,在学习与预测中只定义核函数 K ( x , z ) K(x,z) K(x,z),而不用显示的定义映射函数 ϕ \phi ϕ。 通常直接计算 K ( x , z ) K(x,z) K(x,z) 比较容易,而 ϕ \phi ϕ 是输入空间 R n R^n Rn 到特征空间 H H H 的映射,特征空间 H H H 一般是高维甚至无穷维,因此通过 ϕ ( x ) \phi(x) ϕ(x) ϕ ( z ) \phi(z) ϕ(z) 计算 K ( x , z ) K(x,z) K(x,z) 并不容易。

另外,对于给定的核 K ( x , z ) K(x,z) K(x,z),特征空间 H H H 和映射函数 ϕ \phi ϕ 的取法并不唯一,可以取不同的特征空间,即便在同一特征空间中,也可以取不同的映射

还是以二维空间的异或问题为例,说明核函数与映射函数的关系

  • 假设输入空间是 R 2 R^2 R2,核函数是 K ( x , z ) = ( x ⋅ z ) 2 K(x,z)=(x\cdot z)^2 K(x,z)=(xz)2 , 如果取特征空间 H = R 3 H = R^3 H=R3 ,此时可以取映射

    ϕ ( x ) = ( x ( 1 ) 2 , 2 x ( 1 ) ∗ x ( 2 ) , x ( 2 ) 2 ) \phi(x)=({x^{(1)}}^2,\sqrt{2}{x^{(1)}}*{x^{(2)}},{x^{(2)}}^2) ϕ(x)=(x(1)2,2 x(1)x(2),x(2)2)

    或者

    ϕ ( x ) = 1 2 ( x ( 1 ) 2 − x ( 2 ) 2 , 2 x ( 1 ) ∗ x ( 2 ) , x ( 1 ) 2 + x ( 2 ) 2 ) \phi(x)=\frac{1}{\sqrt{2}}({x^{(1)}}^2-{x^{(2)}}^2,{2}{x^{(1)}}*{x^{(2)}},{x^{(1)}}^2+{x^{(2)}}^2) ϕ(x)=2 1(x(1)2x(2)2,2x(1)x(2),x(1)2+x(2)2)

    均能满足 ϕ ( x ) ⋅ ϕ ( z ) = ( x ⋅ z ) 2 = K ( x , z ) \phi(x)\cdot \phi(z) = (x \cdot z)^2 = K(x,z) ϕ(x)ϕ(z)=(xz)2=K(x,z)

    还可以取 H = R 4 H = R^4 H=R4 ,此时可以取映射

    ϕ ( x ) = ( x ( 1 ) 2 , x ( 1 ) ∗ x ( 2 ) , x ( 1 ) ∗ x ( 2 ) , x ( 2 ) 2 ) \phi(x)=({x^{(1)}}^2,{x^{(1)}}*{x^{(2)}},{x^{(1)}}*{x^{(2)}},{x^{(2)}}^2) ϕ(x)=(x(1)2,x(1)x(2),x(1)x(2),x(2)2)

  • 核技巧在支持向量机中的应用

    只需要将上面算法中的 ϕ ( x i ) ⋅ ϕ ( x j ) \phi(x_i)\cdot \phi(x_j) ϕ(xi)ϕ(xj) ,用核函数 K ( x i , x j ) K(x_i,x_j) K(xi,xj) 替换就行了,此时对偶问题的目标函数为
    W ( α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i W(\alpha) = \frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N \alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum\limits_{i=1}^N\alpha_i W(α)=21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi

    分类决策函数为

    f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i K ( x i , x ) + b ∗ ) \begin{aligned} f(x) &= sign\bigg(\sum\limits_{i=1}^N\alpha_i^*y_i K(x_i ,x)+b^*\bigg)\end{aligned} f(x)=sign(i=1NαiyiK(xi,x)+b)

需要注意的是,当映射函数 ϕ \phi ϕ 为非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型,也就是说在核函数 K ( x , z ) K(x,z) K(x,z) 给定的条件下,可以利用解线性分类问题的方法求解非线性分类问题的支持向量机,学习是隐式的在特征空间进行的,我们不需要显示地定义特征空间和映射函数,这种技巧就是核技巧。 核技巧则是巧妙的利用线性分类学习方法与核函数解决非线性分类问题的技术,在实际中,往往依赖领域知识直接选择核函数,核函数选择的有效性需要经过实验验证。另外, 核技巧属于通用的方法,不仅限于支持向量机,通常任何仅依赖于输入数据的点积的分类器都可以应用这种技术

4. 常用核函数


  • 线性核

    K ( x , z ) = x ⋅ z K(x,z) = x \cdot z K(x,z)=xz

    选择线性核相当于没有用核,因此核技巧包含线性支持向量机的原始算法。使用线性核速度快,但是要求训练数据集必须是线性可分的。

  • 多项式核

    K ( x , z ) = ( x ⋅ z + c ) d d ≥ 2 , c ≥ 0 K(x,z) = (x \cdot z+c)^d \quad d \geq 2,c\geq 0 K(x,z)=(xz+c)dd2,c0

    c > 0 c>0 c>0 时,将原始输入空间 R n R^n Rn 映射到特征空间 R m R^m Rm,特征空间的维度 m = C n + d d m = C_{n+d}^d m=Cn+dd

  • 高斯核

    K ( x , z ) = e x p { − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 } K(x,z) = exp\bigg\{-\frac{||x-z||^2}{2\sigma^2}\bigg\} K(x,z)=exp{2σ2xz2}

    高斯核通常也称为径向基函数(RBF),它将输入空间映射到无限维的特征空间,因此它非常灵活,并且能够适应各种形状的决策边界。当对数据集的先验知识不多时,可以尝试使用高斯核

  • 拉普拉斯核

    K ( x , z ) = e x p { − ∣ ∣ x − z ∣ ∣ σ } σ > 0 K(x,z) = exp\bigg\{-\frac{||x-z||}{\sigma}\bigg\} \quad \sigma >0 K(x,z)=exp{σxz}σ>0

  • S i g m o i d Sigmoid Sigmoid

    K ( x , z ) = t a n h ( β x ⋅ z + θ ) β > 0 , θ < 0 K(x,z) = tanh(\beta x \cdot z+\theta) \quad \beta >0,\theta <0 K(x,z)=tanh(βxz+θ)β>0,θ<0

  • 组合核:可以通过函数组合得到新的核函数

    • K 1 K_1 K1 K 2 K_2 K2 为核函数,对于任意正数 γ 1 , γ 2 \gamma_1,\gamma_2 γ1,γ2, 其线性组合也是核函数

      K ( x , z ) = γ 1 K 1 + γ 2 K 2 K(x,z) = \gamma_1K_1+\gamma_2K_2 K(x,z)=γ1K1+γ2K2

    • K 1 K_1 K1 K 2 K_2 K2 为核函数, 则函数的直积也是核函数

      K ( x , z ) = K 1 ⨂ K 2 = K 1 ( x , z ) K 2 ( x , z ) K(x,z) = K_1\bigotimes K_2 = K_1(x,z)K_2(x,z) K(x,z)=K1K2=K1(x,z)K2(x,z)

    • K 1 K_1 K1 为核函数,则对于任意函数 g ( x ) g(x) g(x)

      K ( x , z ) = g ( x ) K 1 ( x , z ) g ( z ) K(x,z)=g(x)K_1(x,z)g(z) K(x,z)=g(x)K1(x,z)g(z)

      也是核函数

  • 其他核

    除了一些常用的核函数外,也可以根据实际需要,自己创建核函数,当然并不是任意一个函数都能成为核函数,通常所说的核函数是正定核,下面给出正定核的充要条件

    • 正定核的充要条件

      K : χ × χ → R K:\chi \times \chi \rightarrow R K:χ×χR 是对称函数,则 K ( x , z ) K(x,z) K(x,z) 为正定核函数的充要条件是对任意 x i ∈ χ , i = 1 , 2 , ⋯   , m , K ( x , z ) x_i \in \chi,i=1,2,\cdots,m, K(x,z) xiχ,i=1,2,,m,K(x,z) 对应的 G r a m Gram Gram 矩阵:

      K = [ K ( x i , x j ) ] m × m K = [K(x_i,x_j)]_{m \times m} K=[K(xi,xj)]m×m
      是半正定矩阵。

    该定理可以作为自构建核函数的依据,但是对于一个具体函数 K ( x , z ) K(x,z) K(x,z) 来说,检验它是否为正定核函数并不容易,因为要求对任意有限输入集 { x 1 , x 2 , ⋯   , x m } \{x_1,x_2,\cdots,x_m\} {x1,x2,,xm} 验证 K K K 对应的 G r a m Gram Gram 矩阵是否为半正定的,在实际问题中往往应用已有的核函数。另外,由 M e r c e r Mercer Mercer 定理可以得到 M e r c e r Mercer Mercer 核,正定核比 M e r c e r Mercer Mercer 核更具有一般性。

5. 非线性支持向量机学习算法

通过前面的介绍分析,我们最终得到了 非线性支持向量机的学习算法:

输入:线性数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)},其中, x i ∈ χ = R n , y i ∈ Y = { − 1 , 1 } , i = 1 , 2 , ⋯   , N ; x_i \in \chi=R^n,y_i \in Y=\{-1,1\},\quad i=1,2,\cdots,N; xiχ=RnyiY={1,1},i=1,2,,N;

输出:分类决策函数

( 1 ) (1) (1) 选择适当的核函数 K ( x , z ) K(x,z) K(x,z) 和适当的惩罚参数 C > 0 C>0 C>0,构造并求解最优化问题:

min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i \min\limits_\alpha \quad \frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N \alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum\limits_{i=1}^N\alpha_i αmin21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi

s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , ⋯   , N \begin{aligned}s.t. \quad &\sum\limits_{i=1}^N\alpha_iy_i=0 \\ &0\leq \alpha_i \leq C, \quad i=1,2,\cdots,N \end{aligned} s.t.i=1Nαiyi=00αiC,i=1,2,,N

求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α N ∗ ) T \alpha^* = (\alpha_1^*,\alpha_2^*,\cdots,\alpha_N^*)^T α=(α1,α2,,αN)T

( 2 ) (2) (2) 选择 α ∗ \alpha^* α 的一个正分量 a j ∗ > 0 a_j^*>0 aj>0,适合条件 0 < α j ∗ < C 0< \alpha_j^* < C 0<αj<C,计算

b ∗ = y j − ∑ i = 1 N α i ∗ y i K ( x i , x j ) b^* =y_j-\sum\limits_{i=1}^N\alpha_i^*y_i K(x_i,x_j) b=yji=1NαiyiK(xi,xj)

( 3 ) (3) (3) 构造决策函数

f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i K ( x i , x ) + b ∗ ) \begin{aligned} f(x) &= sign\bigg(\sum\limits_{i=1}^N\alpha_i^*y_i K(x_i,x)+b^*\bigg)\end{aligned} f(x)=sign(i=1NαiyiK(xi,x)+b)

K ( x , z ) K(x,z) K(x,z) 是正定核函数时,目标优化问题为凸二次规划问题,解是存在的。

由于线性核相当于没有用核,等价于线性支持向量机的学习算法,因此学习了支持向量机的核技巧之后,可以认为支持向量机必须使用核函数

本文参考李航老师的《统计学习方法》

你可能感兴趣的:(机器学习,SVM,机器学习,算法)