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

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

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

异或问题升维后线性可分

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

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) 是正定核函数时,目标优化问题为凸二次规划问题,解是存在的。

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

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 支持向量机(Support Vector Machine, SVM)是一种监督学习算法,旨在寻找最佳的超平面,将不同类别的数据分开。从分类问题的角度来看,SVM要求找到一个超平面,使得不同类别的样本点在该超平面两侧,同时离该超平面的距离最大。该最大距离被称为margin,而最佳的超平面被称为最大间隔超平面。 SVM心思想是将数据映射到高维空间中,使得数据在高维空间中更容易线性可分。在高维空间中,由于数据点增多,出现维度灾难的问题,而此时SVM可以通过函数来避免该问题。 在求解最大间隔超平面时,SVM依赖于一些向量,称为支持向量。这些支持向量是最接近最大间隔超平面的样本点,它们对求解最大间隔超平面起到了至关重要的作用。 SVM可以应用于二分类、多分类以及回归问题,并且在实际应用中表现出色。在实际使用中,需要根据具体问题选择适当的函数,并且需要对超参数进行调整。此外,还需要注意数据的标准化处理,以避免不同维度的数据误导模型。 总之,SVM是一种强大的分类器,具有多种函数可供选择,能够适用于不同类型数据的分类问题。 ### 回答2: 支持向量机SVM)是一种监督学习算法,可以用于分类和回归问题。它的优点是可以处理非线性分类问题,并且对于数据集中的噪声有较好的鲁棒性。SVM利用最大化分类边界来进行分类,最终得到的分类器是一个高维空间中的超平面。 SVM的原理是基于寻找最优超平面,这个超平面能够把不同类别的样本点分开。在二维平面上,这个超平面可以是一条直线,但是在高维空间中,它是一个超平面。SVM通过最大化边缘来寻找最优的超平面。边缘是一个超平面到两边最近样本点的距离,它表明了模型的泛化能力,即分类器对于新的数据的表现能力。 支持向量机心思想是寻找一条最大间隔的线性分割超平面。在非线性分类任务中,使用方法将特征向量转换为高维空间中的特征向量。在这个高维空间中,数据点可以被更好地分割,即可能会出现线性可分的情况。 关键的问题是如何解决分割垂直于某个维度的问题,此时支持向量机利用函数的技巧将数据集映射到高维空间,并在这个高维空间中采用线性可分的方法来进行分类。通常情况下,函数常用的有线性、多项式和径向基函数。 其中,径向基函数(RBF kernel)是最常用的函数之一。这个函数可以将数据点映射到一个无限维的特征空间上。径向基函数使用一个参数gamma来决定函数的变化速度。当gamma的值很小的时候,函数的变化会很慢,分类的边界将会很宽。当gamma的值很大的时候,函数的变化会很快,分类的边界将会很窄。 SVM的优化问题可以通过拉格朗日乘子法来解决。可以使用拉格朗日乘子来构造一个拉格朗日函数,并使用约束条件来推导对偶形式的SVM问题。这个对偶形式的问题可以使用高效的SMO算法来求解。 SVM是一种强大的分类方法,它适用于许多不同的应用场景,并在许多任务中实现了很好的结果。支持向量机具有较好的泛化性能、能够处理高维数据、适用于不同类型的输入数据,并且能够快速训练分类器。 ### 回答3: SVM是一种二分类模型,它的主要思想是通过线性或非线性的方式找到最优的超平面,将不同类别的数据点分开。SVM支持向量机通过选择支持向量,来定义最优的超平面。支持向量是离超平面最近的数据点,它们对最终分类结果起到决定性的作用。在选取支持向量的过程中,SVM支持向量机尝试选择最少的支持向量,以达到泛化能力强的效果。 SVM支持向量机的分类器可以采用不同的函数进行拟合,从而实现非线性分类。其中,常用的函数包括线性、多项式、高斯等。利用函数的基本原理,我们可以把数据从原本空间映射到更高维的空间中。在高维空间,数据点在非线性情况下更容易区分,从而提高了分类的准确率。 SVM支持向量机的训练过程可以利用现有的优化算法求解,例如序列最小优化算法(SMO)和改进的SMO算法等。这些算法通过不断迭代优化模型参数,直至达到最优的分类效果。在模型训练完成之后,我们可以利用模型进行分类预测,从而实现新数据的分类。 总之,SVM支持向量机是一种基于分类边界找寻的算法,在分类效果、泛化能力和计算效率等方面具有优势,因此在分类领域有着广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步以至千里。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值