zoukankan      html  css  js  c++  java
  • SVM 之非线性支持向量机

    支持向量机是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。

    模型包括以下几类:

    1. 核函数

       支持向量机通过某非线性变换 $phi(x)$,将输入空间映射到高维特征空间。举一个例子:设输入空间是二维的,在该空间中取两个向量

    $$v_{1} = (x_{1}, y_{1}) \
    v_{2} = (x_{2}, y_{2})$$

       假如映射关系为

    $$phi(x,y) = left ( x^{2}, sqrt{2}xy, y^{2} ight )$$

       函数的输入是二维的向量,输出是三维向量,也就是说这个函数完成了一个升维的操作。

    $$left (x_{1},y_{1} ight ) ; overset{phi(x,y)}{ ightarrow} ; left ( x_{1}^{2}, sqrt{2}x_{1}y_{1}, y_{1}^{2} ight ) \
    left (x_{2},y_{2} ight ) ; overset{phi(x,y)}{ ightarrow} ; left ( x_{2}^{2}, sqrt{2}x_{2}y_{2}, y_{2}^{2} ight )$$

       如果我们用神经网络来描述这个映射,网络结构可以长成下面这个样子:

           

       在这个网络中,输入层是 $2$ 维的,输出层是 $3$ 维的。神经网络也具有非线性拟合能力,其拟合能力显然高于非线性 $SVM$。

       但是一般情况下这个映射函数是非常复杂的,很难写出它的具体表达式,它们映射到的高维空间的维数也比上面举的例子(三维)高得多,

       甚至是无穷维的。于是引入核函数 $K(v_{1},v_{2})$,它是我们给定的,它的自变量是原始输入空间的向量规定核函数必须满足条件:

    $$K(v_{1}, v_{2}) = left langle phi(v_{1}), phi(v_{2}) ight angle$$

       $phi(v_{1}), phi(v_{2})$ 是 $v_{1},v_{2}$ 映射到高维空间后对应的向量,即规定核函数等于向量映射到高维空间后的内积,这个等式隐含着一个从低维空间

       到高维空间的映射关系 $phi$,一般解不出来且满足条件的映射不唯一。

       对于最初的例子,给定核函数为 $K(v_{1},v_{2}) = left langle v_{1},v_{2} ight angle^{2}$,那么它满足如下等式

    $$left langle v_{1},v_{2} ight angle^{2} = left langle phi(v_{1}), phi(v_{2}) ight angle \
    Rightarrow x_{1}y_{1} + x_{2}y_{2} = left langle phi(v_{1}), phi(v_{2}) ight angle$$

       映射到三维空间的可能解有:

           1)$phi(x,y) = left ( x^{2}, sqrt{2}xy, y^{2} ight )$

           2)$phi(x,y) = frac{1}{sqrt{2}}left ( x^{2} - y^{2}, 2xy, x^{2} + y^{2} ight )$

    2. 正定核

       这些核函数是如何找到的?亦或者给定一个函数,有什么方法可以判定其是否可作为核函数?按 $1$ 中讲的,对于一个核函数 $K(v_{1},v_{2})$,

       假如我们能找到一个映射 $phi(x)$,使得

    $$K(v_{1}, v_{2}) = left langle phi(v_{1}), phi(v_{2}) ight angle$$

       但上面也说了,这个映射函数很不好找,那么还有没有其它的办法判断一个给定的函数能不能作为核函数?

       正定核的充要条件:

           1)函数 $K(v_{1},v_{2})$ 是对称函数,即 

    $$K(v_{1},v_{2}) = K(v_{2},v_{1})$$

           2)对于输入空间中的任意 $m$ 个向量 $x_{i},i = 1,2,...,m$,其对应的 $Gram$ 矩阵是半正定的。$Gram$ 矩阵定义为

    $$K = ig[ K(x_{i},x_{j}) ig]_{m imes m}$$

       给定的函数如果满足上面两个条件,那么它就可以作为核函数。这是另外一个判定核函数的方法。也就是说,我们按照这个充要条件构造

       出来的函数必定也是满足核函数基本要求的,即:

                 $K(v_{1}, v_{2}) = left langle phi(v_{1}), phi(v_{2}) ight angle$ $Leftrightarrow$ $Gram$ 矩阵半正定且 $K$ 满足对称性

       下面我们将证明这个结论。

       1)先证明从左到右成立:假设已知了 $K(v_{1}, v_{2}) = left langle phi(v_{1}), phi(v_{2}) ight angle$,因为是求内积,所以对称性是显而易见的。那么我们怎么推导

          出 $Gram$ 矩阵半正定呢?根据半正定的定义,任选一个 $m$ 维非 $0$ 向量 $c$(这个向量和输入空间是没有关系的)有

    $$c^{T}Kc = egin{bmatrix}
    c^{(1)} & c^{(2)} & cdots & c^{(m)}
    end{bmatrix}egin{bmatrix}
    K_{11} & K_{12} & cdots & K_{1m} \
    K_{21} & K_{22} & cdots & K_{2m} \
    vdots & vdots & ddots & vdots \
    K_{m1} & K_{m2} & cdots & K_{mm}
    end{bmatrix}egin{bmatrix}
    c^{(1)}  \
    c^{(2)}  \
    vdots   \
    c^{(m)}
    end{bmatrix} \
    = sum_{i = 1}^{m}sum_{j = 1}^{m}c^{(i)}c^{(j)}K_{ij}
    = sum_{i = 1}^{m}sum_{j = 1}^{m}c^{(i)}c^{(j)}phi(x_{i})^{T}phi(x_{j}) \
    = sum_{i = 1}^{m}c^{(i)}phi(x_{i})^{T} sum_{j = 1}^{m}c^{(j)}phi(x_{j}) \
    = left (sum_{i = 1}^{m}c^{(i)}phi(x_{i}) ight )^{T} left (sum_{j = 1}^{m}c^{(j)}phi(x_{j})  ight ) \
    = left langle sum_{i = 1}^{m}c^{(i)}phi(x_{i}), sum_{j = 1}^{m}c^{(j)}phi(x_{j}) ight angle \
    = left | sum_{i = 1}^{m}c^{(i)}phi(x_{i}) ight |^{2} geq 0$$

       2)证明从右往左成立:反推暂时不太会,将来补上。

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

       用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后再新空间里用线性分类学习方法从训练数据中学习

       分类模型。求解线性可分问题的目标函数为

    $$L(alpha) = frac{1}{2}sum_{i=1}^{n}sum_{j=1}^{n}alpha_{i}alpha_{j}y_{i}y_{j}(x_{i}^{T}x_{j}) -sum_{i=1}^{n}alpha_{i}$$

       此时 $x_{i},x_{j}$ 都是经过映射后的高维空间中的向量,要在这个新的高维空间中求解出一个超平面,使样本点被正确分类。

       观察式子可知,$x_{i}^{T}x_{j}$ 就等于核函数,所以目标函数可以写成如下形式

    $$L(alpha) = frac{1}{2}sum_{i=1}^{n}sum_{j=1}^{n}alpha_{i}alpha_{j}y_{i}y_{j}K(x_{i},x_{j}) -sum_{i=1}^{n}alpha_{i}$$

       所谓核技巧,就是指我们可以直接计算 $K(x_{i},x_{j})$(核函数 $K$ 是已知的,根据充要条件可以构造),而不需要真正的去找一个 $phi(x)$(通常是很难找的)。

       也就是说,我们并不关心低维到高维的映射 $phi$ 是什么样子的,我们只需要构造一个函数 $K$,使得该函数可以表示为映射后空间里数据的内积,这样就可以了。

       求解出来的超平面也是位于高维空间的。

  • 相关阅读:
    Android 2.2 r1 API 中文文档系列(11) —— RadioButton
    Android API 中文 (15) —— GridView
    Android 中文 API (16) —— AnalogClock
    Android2.2 API 中文文档系列(7) —— ImageButton
    Android2.2 API 中文文档系列(6) —— ImageView
    Android 2.2 r1 API 中文文档系列(12) —— Button
    Android2.2 API 中文文档系列(8) —— QuickContactBadge
    [Android1.5]TextView跑马灯效果
    [Android1.5]ActivityManager: [1] Killed am start n
    Android API 中文(14) —— ViewStub
  • 原文地址:https://www.cnblogs.com/yanghh/p/13829687.html
Copyright © 2011-2022 走看看