【统计学习方法】支持向量机之非线性支持向量机

前篇:【统计学习方法】支持向量机之线性支持向量机

一、核技巧

非线性分类问题:

  • 下图是一个非线性分类问题:
    【统计学习方法】支持向量机之非线性支持向量机_第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=(x1y1),(x2y2),,(xNyN)其中, x i ∈ X ∈ R n , y i ∈ − 1 , + 1 x_i∈X∈R^n,y_i∈{-1,+1} xiXRnyi1,+1,如果能用 R n R^n Rn中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题.
  • 非线性问题往往不好求解,所以希望能用解线性分类问题的方法解决这个问题.所采取的方法是进行一个非线性变换,将非线性问题变换为线性问题,通过解变换后的线性问题的方法求解原来的非线性问题.下图为上图经过非线性变换后的效果图:
    【统计学习方法】支持向量机之非线性支持向量机_第2张图片
    图中将椭圆变换成直线,将非线性分类问题变换为线性分类问题.
  • **具体过程:**设原空间为 X ∈ R 2 , x = ( x ( 1 ) , x ( 2 ) ) X∈R^2,x=(x^{(1) },x^{(2) } ) XR2,x=(x(1),x(2)),新空间为 Z ∈ R 2 , z = ( z ( 1 ) , z ( 2 ) ) Z∈R^2,z=(z^{(1) },z^{(2) }) ZR2z=(z(1),z(2)),定义从原空间到新空间的变换(映射): z = ϕ ( x ) = ( ( x ( 1 ) ) 2 , ( x ( 2 ) ) 2 ) T z=ϕ(x)=((x^{(1) } )^2,(x^{(2) } )^2 )^T z=ϕ(x)=((x(1))2,(x(2))2)T 经过变换,原空间中的点相应地变换为新空间中的点,原空间中的椭圆: w 1 ( x ( 1 ) ) 2 + w 2 ( x ( 2 ) ) 2 + b = 0 w_1 (x^{(1) } )^2+w_2 (x^{(2) } )^2+b=0 w1(x(1))2+w2(x(2))2+b=0变换成为新空间中的直线: w 1 z ( 1 ) + w 2 z ( 2 ) + b = 0 w_1 z^{(1)}+w_2 z^{(2)}+b=0 w1z(1)+w2z(2)+b=0 在变换后的新空间里,直线 w 1 z ( 1 ) + w 2 z ( 2 ) + b = 0 w_1 z^{(1)}+w_2 z^{(2)}+b=0 w1z(1)+w2z(2)+b=0可以将变换后的正负实例点正确分开.这样,原空间的非线性可分问题就变成了新空间的线性可分问题.

  • 用线性分类方法求解非线性分类问题分为两步:
    • 第一步:使用一个变换将原空间的数据映射到新空间;
    • 第二步:在新空间里用线性分类学习方法从训练数据中学习分类模型.

  • 核技巧应用到支持向量机,其基本想法就是
    • 第一步:通过一个非线性变换将输入空间(欧氏空间 R n R^n Rn或离散集合)映射到一个特征空间(希尔伯特空间 H H H),使得在输入空间 R n R^n Rn中的超曲面模型对应于特征空间H中的超平面模型(线性支持向量机).
    • 第二步:在特征空间中求解线性支持向量机.
  • 如果对希尔伯特空间与核函数不太了解可以参考:https://blog.csdn.net/ACM_hades/article/details/90545657

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

  • 我们注意到在线性支持向量机的对偶问题中,无论是目标函数还是决策函数(分离超平面)都只涉及输入实例与实例之间的内积.如果在 H H H为特征空间(希尔伯特空间)中学习线性支持向量机,我们只需要知道特征空间中的向量内积 ϕ ( x ) ⋅ ϕ ( z ) ϕ(x)·ϕ(z) ϕ(x)ϕ(z)就可以了,即只要有核函数 K ( x , z ) K(x,z) K(x,z)。用核函数 K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=ϕ(x)·ϕ(z) K(x,z)=ϕ(x)ϕ(z)来代替 x ⋅ z x·z xz就ok。
  • 所以线性支持向量机的对偶问题的目标函数 min ⁡ α ⁡ ( 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ∗ x j ) ) − ∑ i = 1 N α i = 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_α⁡(\frac{1}{2} ∑_{i=1}^N∑_{j=1}^Nα_i α_j y_i y_j (x_i *x_j))-∑_{i=1}^Nα_i =\min_α⁡(\frac{1}{2} ∑_{i=1}^N∑_{j=1}^Nα_i α_j y_i y_j K(x_i ,x_j))-∑_{i=1}^Nα_i αmin(21i=1Nj=1Nαiαjyiyj(xixj))i=1Nαi=αmin(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 ∗ ) f(x)=sign(∑_{i=1}^Nα_i^* y_i K(x_i ,x)+b^*) f(x)=sign(i=1NαiyiK(xi,x)+b)
  • 这等价于经过映射函数 ϕ ϕ ϕ将原来的输入空间变换到一个新的特征空间,将输入空间中的内积 x ∗ z x*z xz,变换为特征空间中的内积 K ( x , z ) = ϕ ( x ) ∗ ϕ ( z ) K(x,z)=ϕ(x)*ϕ(z) K(x,z)=ϕ(x)ϕ(z),在新的特征空间里从训练样本中学习线性支持向量机.
  • 当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型.
  • 也就是说,在核函数 K ( x , z ) K(x,z) K(x,z)给定的条件下,可以利用解线性分类问题的方法求解非线性分类问题的支持向量机.
  • 并且我们学习模型的过程中只需要核函数 K ( x , z ) K(x,z) K(x,z)就可以了,不需要显式地定义特征空间和映射函数.这样的技巧称为核技巧
  • 那么函数 K ( x , z ) K(x,z) K(x,z)满足什么条件才能成为核函数呢?,具体的参考:https://blog.csdn.net/ACM_hades/article/details/90545657

二、常用核函数

  • 多项式核函数: K ( x , z ) = ( x ∗ z + 1 ) p K(x,z)=(x*z+1)^p K(x,z)=(xz+1)p对应的支持向量机是一个 p p p次多项式分类器.在此情形下,分类决策函数成为: f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i ( x i ∗ x + 1 ) p + b ∗ ) f(x)=sign(∑_{i=1}^Nα_i^* y_i (x_i*x+1)^p +b^*) f(x)=sign(i=1Nαiyi(xix+1)p+b)
  • 高斯核函数: K ( x , z ) = e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 ) K(x,z)=exp(-\frac{||x-z||^2}{2σ^2}) K(x,z)=exp(2σ2xz2)对应的支持向量机是高斯径向基函数分类器.在此情形下,分类决策函数成为: f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 ) + b ∗ ) f(x)=sign(∑_{i=1}^Nα_i^* y_i exp(-\frac{||x-z||^2}{2σ^2})+b^*) f(x)=sign(i=1Nαiyiexp(2σ2xz2)+b)

三、非线性支持向量分类机

  • 根据上面的推导,只需将线性支持向量机对偶形式中的内积换成核函数.就可以将线性分类的学习方法应用到非线性分类问题中去.将线性支持向量机扩展到非线性支持向量机
  • 非线性支持向量机学习算法:
    • 输入:训练数据集 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),,(xN,yN),其中 x ∈ X ∈ R n x∈X∈R^n xXRn y ∈ Y = − 1 , + 1 y∈Y={-1,+1} yY=1+1
    • 输出:分类决策函数.
    • 第一步:选取适当的核函数 K ( x , z ) K(x,z) K(x,z)和适当的参数 C C C,构造并求解最优化问题: 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_α⁡(\frac{1}{2} ∑_{i=1}^N∑_{j=1}^Nα_i α_j y_i y_j K(x_i *x_j))-∑_{i=1}^Nα_i αmin(21i=1Nj=1NαiαjyiyjK(xixj))i=1Nαi s . t . ∑ i = 1 N α i y i = 0 s.t. \qquad ∑_{i=1}^Nα_i y_i =0 s.t.i=1Nαiyi=0 0 ≤ α i ≤ C , i = 1 , 2 , … , N 0≤α_i≤C ,i=1,2,…,N 0αiC,i=1,2,,N
      通过SMO算法求得最优解: α ∗ = ( α 1 ∗ , α 2 ∗ , … , α N ∗ ) α^*=(α_1^*,α_2^*,…,α_N^*) α=(α1,α2,,αN)
    • 第二步:选择 α ∗ α^* α的一个正分量 0 < α j ∗ < C 0<α_j^*<C 0<αj<C,计算 b ∗ b^* b b ∗ = y j − ∑ i = 1 N α i ∗ y i K ( x i ∗ x j ) b^*=y_j-∑_{i=1}^Nα_i^* y_i K(x_i*x_j) b=yji=1NαiyiK(xixj)
    • 构造决策函数: f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i K ( x i , x ) + b ∗ ) f(x)=sign(∑_{i=1}^Nα_i^* y_i K(x_i ,x)+b^*) f(x)=sign(i=1NαiyiK(xi,x)+b)

你可能感兴趣的:(【统计学习方法】支持向量机之非线性支持向量机)