zoukankan      html  css  js  c++  java
  • svm支持向量机系列(3) -- kernel支持向量机

    1、主要内容

      上一讲中使用对偶形式的支持向量机将原始的与数据的维度d有关逐步转化到了只有数据输入规模N有关,但是在最后计算对偶形式的Q矩阵时依然还是使用到了数据的维度d,因此还不算时真正的解决了这个问题。

       

      那么有什么方法?

      

    2、对偶形式的不足

      上节课中将d转换成与d无关只是做了一半,还没有真正的把d消除:

      

      在计算Q矩阵时,由于Zn,Zm的存在,依然是和维度d有关系,此处就是解决该问题的瓶颈。

      如何解决该瓶颈,找到一个更好的计算方法?

      注意到Zn和Zm由一下变换得到:

      

      先对原始的x做转换然后再内积,那么转换过程对于d维的数据必然需要O(d)的时间,然后做内积也需要O(d)的时间,因此能不能找到一种种方法简化这个过程?

      以2次转换为例:

      

      转换后包括原有的1次项和2次项,那么计算

      

      最后得到:

      

      观察上式,最后一项都可以进行整理i和j相关项放到一起:

      

      最后可以得到:

      

      这样的话,先计算出来内积,然后使用这个内积在常数时间内就可以完成转化,那么在这个例子中比原来计算要快。

      一如kernel核函数的概念:

      

      kernel核函数集成了内积然后使用内积进行数据的特征变换,达到快速计算的目的,就包括了特征转化和内积这两个步骤;

    3、kernel核函数的使用

      

      使用核函数替换Z变换的内积;

      

      

    4、多项式kernel核函数

      上面讲了一个二次多项式的kernel核函数:

      

      那么对这个kernel 核函数进行加上常数进行放缩,如果转换函数每个一次项都乘上一个√2的话,那么kernel核函数变成:

      

      同理:

      

      综上可以知道:

      

      上面两种不同的2次kernel对与SVM来说:

      就特征转换的结果是相同的,只是放缩了特征值;

      但是在计算最终的内积不同就表示向量的距离不一样,因此会影响到SVM最后的结果;

      

      因此改变核函数也就改变了支持向量得到的最终的模型也不相同;因此需要对kernel进行选择达到最好的效果。再次基础上可以进行一般化就是可以进行推广:

      

      通过多项式的kernel可以高效的进行特征的高次转换而不用考虑数据特征的维度的影响,使用不同的γ和ς来表示不同的多项式kernel核函数:

      

      使用核函数的SVM就被称为多项式SVM:

      

      对一般化进行特殊化得到linear kernel:

      

    5、高斯核函数

      多项式kernel可以将有限维的特征转换进行简化,那么在无限维时怎么办?可以引入高斯核函数;

      

      高斯核函数的SVM就是以支持向量为中心的高斯函数的线性组合。

      

    6、不同的kernel的好坏

      (1) 线性kernel

      

      好处:

      简单,优先尝试,只有结果不好时才尝试其他的kernel

      不涉及到复杂的特征转换,可以使用专用的QP解决算法解决

      得出的结果容易解释,容易看出不同的支持向量根据其权重对模型的贡献

      

       坏处:

      只有数据在线性可分时才可以使用,但是数据不总是线性可分的;

      

      总之。linear kernel值得优先尝试,其他的可以在此基础上进行修改。

      (2) 多项式kernel核函数

      

      好处:

      linear 不行时可以使用多项式,比linear的限制少点

      可以认为控制转换的次数Q

      

      坏处:

      当Q比较大时计算也很困难;

      参数选择比较困难,有三个参数可以选择:

      

      总之,如果使用Q需要小点;

      (3) 高斯核函数

      

      好处:

      

      坏处:

      

      最常用的核函数:

      

    7、其他的kernel

      

      kernel成立的条件:

      

      1、对称

      2、矩阵K是一个半正定的;

      

     8、总结

      

  • 相关阅读:
    java.security.ProviderException: java.security.KeyException
    DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容
    mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
    阿里云composer 镜像
    封装redis操作 php版本
    金钱数友好显示 php版本
    php代码规范->如何写出规范且易于理解的项目代码-ZX版
    hibernate 注解大全
    国家省市区县乡镇三级,五级地址数据
    java基础 数据类型转换
  • 原文地址:https://www.cnblogs.com/daguankele/p/6379800.html
Copyright © 2011-2022 走看看