学习笔记——支持向量机svm(3)kernel trick(核函数)
2016-01-10 13:55
369 查看
回顾
上一篇讲到了svm的对偶问题:将svm的算法维度(w维度)由vc维变成了跟数据量N,但是这样真的就完全简化了么?在我们求Q这个矩阵时,需要先将x转化为z,然后再做内积,复杂度是d^2。在这一篇我们就要介绍一种可以简化这个步骤的方法~传说中的核函数。
核函数
引入概念
假设我们要做的x到z的转换是一个二次转换:然后我们做一下内积:
化简化简,突然发现先转换为z空间再做内积的步骤可以直接转化为关于x的内积了。一下子将复杂度减少成了d~好神奇!
写成公式表示过程:
直接用一步来代替了原来的两步。
应用场景
在计算Q矩阵时,计算参数b时,还有进行test的时候都可以用到核函数来进行提速。
在这里我们也彻底摆脱了对于数据vc维的依赖,完全只是依赖输入数据的维度:
最后问题变成了这样:
核函数变形
我们可以把之前的二次核函数做一些变形:这样变换之后会对应不一样的内积结果,同样的也对应了不同的几何性质:
这里可以看出用不同的γ,对应出不同的边界和支持向量。
这个问题进一步扩展到更高次变换上:
Q对应了Q次的空间上的一种变换,当然Q越大,表述能力越强,但是也要小心更容易overfit。
所以这里可以想到最简单的核函数,线性核函数:
线性first是很好的习惯,有可能效果非常好:)
超级核函数
我们会想,有没有存在一种核函数,他可以表述无限大空间的变换呢?开心的告诉你~有的:利用一个泰勒展开,就可以拆成一个无线维度的转换了,当然这个东西怎么被想出来的我也不知道~只能orz~
更概括的讲:
我们把这个种核函数叫做高斯核函数。
当使用高斯核函数时:
预测结果是多个高斯函数的再支持向量上的线性组合。又被成为RBF kernel。
不同参数的高斯核函数:
当γ过大时会产生很强的overfit,所以就算无限维度核函数svm依然不能摆脱过拟合的大坑~
相关文章推荐
- mysql 导入txt中记录
- 华为机试——连续最长数字串
- Ubuntu 14.04下搭建Python3.4 + PyQt5.3.2 + Eric6.0开发平台
- android4.4组件分析--service组件
- 折腾域名的dns
- 数据结构和算法笔记
- BZOJ 3190 JLOI 2013 赛车 半平面交
- 简化Spring的XML配置(二)——使用注解装配bean
- OC类对象
- 阻止事件冒泡的三种手段
- python小白-day2 基本数据类型
- 工厂模式
- 关于Mysql+EF6本地运行和发布没有问题,发布到服务器上出现问题的解决方案
- Android属性设置android:noHistory="true"
- 欢迎使用CSDN-markdown编辑器
- 华为机试——棋盘格子数
- WPF中使用UI线程
- MySQL日期数据类型、时间类型使用总结
- 限制递归次数,避免无限循环
- 华为机试——合法IP