svm系列之核函数

    xiaoxiao2025-02-04  12

    kernel svm 其实阻碍以上两种svm进行的原因就是因为在处理非线性的情况下我们要把x通过映射函数xPhi x映射到z域里由于是处理非线性所以是将低维度映射到高位可是映射后变量的特征会飞快的增加有的时候可能达到无穷有点极端但是通过核函数连无穷的变量也能够解决由于特征非常多那么ynwTx1y_nwT Phi x1 线性svmzTzzTz对偶的svm二者的计算量就会很大很大很大 常见的kernel函数 多项式kernel函数线性kernel函数高斯kernel函数 三种核的优缺点 多项式核线性核高斯核

    kernel svm

    我们先对上一讲的对偶问题进行回顾. 线性svm的局限 由于线性svm最终的二次规划求解QP的复杂度依靠 d+1 个变量和N个条件的.当对非线性的数据进行使用时,要把x域映射的z域里.z域特征的维度一定是比x高的.因为你要处理非线性,一定是把低维数据映射到高维数据(x映射到z).有的时候,这一映射,特征就增加很多,甚至可以达到无限维的情况.则 d+1 就可能增加到无穷.那么在用线性的svm处理非线性且高维数据时,及时计算到天荒地老也计算不完.  对偶形式的svm  为了解决线性svm的问题,我们就希望设计一个svm,使得他不依赖转换后z域的特征变量数d. 于是我们考虑使用对偶的方法解决这个问题.  我们最终计算的结果为     这看起来不想线性svm那样,没有明确的z域变量 Φ(x) ,但其实在我们将该公式丢到二次规划的软件里时,他计算的 QD 的运算量其实就很受 d˜ 的影响.因为 QD 的每一个元素的计算公式为    这其实就用了z域变量z了.所以当映射后,特征变得很多,那么 zTz 计算量就会很大.即对偶形式的svm其实依然是考虑了z域变量z的特征数的,即考虑了 d˜ 的.这其实和线性svm一样.即

    其实阻碍以上两种svm进行的原因,就是因为在处理非线性的情况下,我们要把x通过映射函数 Φ(x) 映射到z域里.由于是处理非线性,所以是将低维度映射到高位.可是映射后,变量的特征会飞快的增加,有的时候可能达到无穷(有点极端,但是通过核函数,连无穷的变量也能够解决).由于特征非常多,那么 yn(wTΦ(x))>=1 (线性svm), zTz (对偶的svm),二者的计算量就会很大!很大!很大!

     有的人问,将x映射到z,特征能够增加这么多吗?  我们假设x的维度为d,当我们将其映射到z域,我们就仅仅将1次方映射到2次方,所得的特征为    多吧!再就是对应相乘再相加就所得计算量非常复杂.    那么我们现在用 核函数 真正的解决z域特征问题.

     我们现在解决对偶函数中计算运算量大的问题.  为了便于表达,我们还是以映射到2次方为例.     其实可以化简为     则我们只需计算维度小的x的内积,再把x的内积代进去,经过一次乘法2个加法就表示了 Φ(x) 的内积.  x是d维的,那么复杂度为O(d),可是 Φ(x) 的内积的复杂度达到 O(D2)  所以我们就定义这个例子的核函数K为  我们不仅仅可以用核函数k简化 qm,n ,还可以简化b的求解和与w的内积,具体为以下三种情况可以化简     这样就把所有与z域变量发生内积的情况都换成了核函数 k(x,x) .就避免了z域的特征数目.  则以上的化简和其复杂度可以总结为    则kernel SVM 有效的避免了z域的自由度 d˜ .还充分运用了支持向量来计算.

    常见的kernel函数

    多项式kernel函数

     上面我们所将的二次多项式kernel仅仅是其中的一小部分,把其系数或者幂次改变后,依然是多项式核.  比如二次多项式如果改变其系数,就可以变形为    其中    改变了核,就改变了最大边界的定义.即会有不同的几何边界   我们把幂次改变后,也是多项式kernel函数  

    SVM+多项式kernel =多项式SVM

    线性kernel函数

     当多项式和的Q为1,左边系数为0,右边系数为1时,结果就是线性kernel函数    其实他就是我们讲的最基础的svm.用于处理线性可分的数据.  一般情况他是非常有效的,且计算迅速.也是最简单的形式.  所以,以后用SVM都应该先考虑线性的KERNEL函数.

    高斯kernel函数

    如果我们的映射 Φ(x) 是无穷多维时该怎么办? 可以考虑高斯kernel 函数. 为什么他可以处理无穷多维呢??其推导公式为    可以发现,这里的 Φ(x) 是无穷多维的.   我们对上上图的k(x,x’)推广到一般形式,就是一般形式的高斯kernel 函数 则计算可化简为   不难发现,这里只用计算 αn 不为0的情况,而 αn 不为0的情况很少,所以计算量很少.再加上核函数的化简,使得计算量更少了. 注意:  

    三种核的优缺点

    多项式核

    线性核

    高斯核

     

     当然,你可以自己设计一个核函数,可是你必须证明他是可行的,这就比较复杂了,不好弄啊!!!

    转载请注明原文地址: https://ju.6miu.com/read-1296101.html
    最新回复(0)