机器学习 - 支持向量机(3)- 非线性 SVM(核技巧)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37352167/article/details/85806583

机器学习 - 支持向量机(3)- 非线性 SVM(核技巧)

  • 动机

    对于分类数据,不管是硬间隔最大化的线性可分 SVM,亦或是软间隔最大化的线性 SVM,得到的分离超平面都是线性的,他们对于那些线性或近似线性可分的数据分类时的效果是不错的,但是倘若出现非线性的数据,以上两种 SVM 就束手无策了。例如:
    线性不可分

    上图这种数据使用线性分类器如论如何也分不出最好的结果。此时我们希望可以得到非线性的分类超平面,例如:
    非线性分离超平面

    图中深蓝色的曲线就是我们希望得到的,它可以将图中的数据完美分开。但这样的曲线是如何得到的呢?请看下文。

  • 核函数

    讲核函数,就不得不讲维度这个概念。一幅山水画是二维空间(平面),而我们人类生活在三维空间中。为便于理解,我们使用二维空间与三维空间作为引例。 二维小虫

    在图中,棕色图形表示的是一只在二维空间中的小虫子,就像一幅画中的生物一样。那么如果我们人类作为三维生物,用笔将它圈起来,那么这只二维的小虫子是无论如何也出不去的,但如果变成三维空间,这只小虫很轻松的就爬过了绿色的圆圈。

    回到我们数据分类的场景中,假设样本点像图一数据一样,我们无论如何也不可能在二维空间中将他们分开,但是如果把数据维度升为三维,那么就轻而易举了。
    三维分离超平面
    图中橘黄色样本都在绿色分离超平面下方,金黄色样本都在分离超平面上方。也许在二维平面中他们是混杂的,但是如果拍一下桌子,将这些样本震到空中,很有可能就产生了可分离的平面。

    了解了具体化的表述后,我们再来看看抽象的表述。

    1. 核技巧

      是通过一个变换将原空间的数据映射到新空间的处理技巧,而后在新空间里使用线性分类学习方法从训练数据中学习分类模型。核技巧,是通过一个变换将原空间的数据映射到新空间的处理技巧,而后在新空间里使用线性分类学习方法从训练数据中学习分类模型。

    2. 核函数

      X X 为输入空间, H Η 为特征空间(希尔伯特空间),

      若存在一个从 X X H Η 的映射:

      Φ ( x ) : X H Φ(x):X→Η

      使得所有函数 k ( x , z ) k(x,z) ,其中 x , z X x,z∈X ,满足条件:

      k ( x , z ) = Φ ( x ) Φ ( z ) k(x,z)=Φ(x)·Φ(z)

      则称 k ( x , z ) k(x,z) 为核函数, Φ ( x ) Φ(x) 为映射函数,式中 Φ ( x ) Φ ( z ) Φ(x)·Φ(z) 为二者的内积。

    3. 特点

      \bullet 只定义核函数 k ( x , z ) k(x,z) ,而不显式地定义映射函数 Φ ( x ) Φ(x)

      \bullet 通常直接计算 k ( x , z ) k(x,z) 比较容易,而计算 Φ ( x ) Φ ( z ) Φ(x)·Φ(z) 较难.

      \bullet Φ Φ X X H H 的映射, H H 一般为高维甚至无穷维。

    4. 举例

      通俗来说, k ( x , z ) k(x,z) 相当于结果,而 Φ ( x ) Φ ( z ) Φ(x)·Φ(z) 相当于计算组合,这种计算组合有很多种。

      实际上我们只需要得到 k ( x , z ) k(x,z) 这个结果就可以了,而不需要关注具体 Φ ( x ) Φ(x) 具体是怎样的一个函数。

      例如:

      我们取 k ( x , z ) = ( x z ) 2 x = ( x ( 1 ) , x ( 2 ) ) T x = ( z ( 1 ) , z ( 2 ) ) T k(x,z)=(x·z)^2,x=(x^{(1)},x^{(2)})^T,x=(z^{(1)},z^{(2)})^T

      k ( x , z ) = ( x z ) 2 = ( x ( 1 ) z ( 1 ) ) 2 + ( x ( 2 ) z ( 2 ) ) 2 + 2 x ( 1 ) z ( 1 ) x ( 2 ) z ( 2 ) k(x,z)=(x·z)^2=(x^{(1)}z^{(1)})^2+(x^{(2)}z^{(2)})^2+2x^{(1)}z^{(1)}x^{(2)}z^{(2)}

      为了能够得到 k ( x , z ) = ( x z ) 2 k(x,z)=(x·z)^2 这样的核函数形式,实际上我们可以有很多种形式:

      \bullet Φ 1 ( x ) = ( ( x ( 1 ) ) 2 , 2 x ( 1 ) x ( 2 ) , ( x ( 2 ) ) 2 ) T Φ^1(x)=((x^{(1)})^2,\sqrt2x^{(1)}x^{(2)},(x^{(2)})^2)^T

      \bullet Φ 2 ( x ) = 1 2 ( ( x ( 1 ) ) 2 ( x ( 2 ) ) 2 , 2 x ( 1 ) x ( 2 ) , ( x ( 1 ) ) 2 + ( x ( 2 ) ) 2 ) T Φ^2(x)=\frac{1}{\sqrt 2}((x^{(1)})^2-(x^{(2)})^2,2x^{(1)}x^{(2)},(x^{(1)})^2+(x^{(2)})^2)^T

      ……

      不关心中间 Φ ( x ) Φ(x) 函数的过程,只关注 k ( x , z ) k(x,z) 的最终计算形式,使得模型的学习相当于隐式的在高维特征空间中学习。

  • 常用核函数

    1. 多项式核函数

      k ( x , z ) = ( x z + 1 ) p k(x,z)=(x·z+1)^p

    2. 高斯核函数

      k ( x , z ) = e x p ( x z 2 2 σ 2 ) k(x,z)=exp(-\frac{||x-z||^2}{2σ^2})

  • 算法过程

    加入了核函数的 SVM 的计算过程没有太大变化,直接将以前式子中的 ( x i x j ) (x_i·x_j) 内积改为 k ( x i x j ) k(x_i·x_j) 即可:

    1. w , b min L ( w , b , α ) \mathop{}_{w,b}^{\min} L(w,b,α) α α 的极大 α max w , b min L ( w , b , α ) \mathop{}_{α}^{\max}\mathop{}_{w,b}^{\min} L(w,b,α)

      添 “负号”将求极大转化为求极小,得到,

      α min 1 2 i = 1 M j = 1 M α i α j y i y j k ( x i x j ) i = 1 M α i \mathop{}_{α}^{\min} \frac{1}{2}\sum_{i=1}^{M}\sum_{j=1}^{M}α_iα_jy_iy_jk(x_i·x_j)-\sum_{i=1}^{M}α_i

      s . t . s.t. i = 1 M α i y i = 0 \sum_{i=1}^{M}α_iy_i=0

              α i 0 , i = 1 , 2 , . . . , M α_i\ge0,i=1,2,...,M


    1. 求得最优解 α = ( α 1 , α 2 , . . . , α M ) T α^*=(α_1,α_2,...,α_M)^T ,根据 KKT 条件

      由此可得到 w = i = 1 M α i y i x i w^*=\sum_{i=1}^{M}α_i^*y_ix_i

      又因 y j ( w x j + b ) 1 = 0 y_j(w^*x_j+b^*)-1=0 ,且注意到 y j 2 = 1 y_j^2=1

      可得到 b = y j i = 1 M α i y i k ( x i x j ) b^*=y_j-\sum_{i=1}^{M}α_i^*y_ik(x_i·x_j)


    1. 最终

      分离超平面可写成: i = 1 M α i y i k ( x x j ) + b = 0 \sum_{i=1}^{M}α_i^*y_ik(x·x_j)+b^*=0

      分类决策函数可写成: f ( x ) = s i g n ( i = 1 M α i y i k ( x x j ) + b ) f(x)=sign(\sum_{i=1}^{M}α_i^*y_ik(x·x_j)+b^*)

猜你喜欢

转载自blog.csdn.net/weixin_37352167/article/details/85806583