http://blog.sina.com.cn/s/blog_6ae183910101cxbv.html

几天前,我在微博上面问了一个问题“一个两类分类问题,5400个训练样本,600个测试样本(测试、训练样本不交叠),特征10000维,用RBF核的SVM训练,得到的模型在测试集上测试误差为50%(和随机猜想一样)。而如果改用线性核,则准确率可以达到80%。这正常吗?”

包括余凯、老师木、山世光在内的很多大牛都热情回答,在此一并感谢,就不一一点名啦。
大家的讨论,从RBF核的特点、特征空间分布、高维几何反直觉一直到人脑的处理方式,让人眼花缭乱,同时也受益匪浅。
最终证明,这其实是我在使用RBF Gamma参数时设置不当造成的过训练。我的修改和结果如下:我将每一个样本的特征向量都做了L2归一化(此时,gamma的取值在1附近,对性能影响不大),RBF特征可以得到86%的准确率。未作归一化的线性核结果可以达到84%(相对发微博时的版本,特征上面有所调整,所以线性核性能有所提高,此外,L2会造成不同样本同一特征的相对值改变,所以线性版本未用L2归一化)。
这里面大家需要注意的就是gamma的物理意义,大家提到很多的RBF的幅宽,它会影响每个支持向量对应的高斯的作用范围,从而影响泛化性能。我的理解:如果设的太大,则会造成只会作用于支持向量样本附近,对于未知样本分类效果很差,存在训练准确率可以很高,而测试准确率不高的可能,就是通常说的过训练;而如果设的过小,则会造成平滑效应太大,无法在训练集上得到特别高的准确率,也会影响测试集的准确率。
此外大家注意RBF公式里面的sigma和gamma的关系如下:
The rbf kernel is typically defined as k(x,z) = exp(-(d(x,z)^2)/(2*sigma^2)), which can be re-defined in terms of gamma as k(x,z) = exp(-gamma*(d(x,z)^2)), where gamma = 1/(2*sigma^2). 
此外,可以明确的两个结论是:
结论1:样本数目少于特征维度并不一定会导致过拟合,这可以参考余凯老师的这句评论:
“这不是原因啊,呵呵。用RBF kernel, 系统的dimension实际上不超过样本数,与特征维数没有一个trivial的关系。”
结论2:RBF核应该可以得到与线性核相近的效果(按照理论,RBF核可以模拟线性核),可能好于线性核,也可能差于,但是,不应该相差太多。
当然,很多问题中,比如维度过高,或者样本海量的情况下,大家更倾向于用线性核,因为效果相当,但是在速度和模型大小方面,线性核会有更好的表现。
老师木还有一句评论,可以加深初学者对SVM的理解:
“须知rbf实际是记忆了若干样例,在sv中各维权重重要性等同。线性核学出的权重是feature weighting作用或特征选择 。”

使用svm的一个常见错误相关推荐

  1. Angular 依赖注入的一个常见错误 NullInjectorError, No provider for XXX

    测试代码: export abstract class GreetingService {abstract greet(name: string): string;} 加了@Injectable注解的 ...

  2. WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭

    原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而 ...

  3. 解决 React Native 中的常见错误

    React Native 是当今最常用的 JavaScript 移动框架之一.React Native 使熟悉 JavaScript 和 React Web 框架的开发人员能够使用类似的方法和原理开发 ...

  4. c语言间接级别不同_一个超复杂的间接递归——C语言初学者代码中的常见错误与瑕疵(6)...

    问题: 在该文的最后,曾提到完成的代码还有进一步改进的余地.本文完成了这个改进.所以本文讨论的并不是初学者代码中的常见错误与瑕疵,而是对我自己代码的改进和优化.标题只是为了保持系列的连续性. 改进 程 ...

  5. 02_第一个 Python 程序及常见错误合集

    我们在编写Python代码的时候,直接用IDE就可以,所谓的IDE是指集成开发环境(Integrated Development Environment ),这里笔者推荐用 PyCharm.如何使用和 ...

  6. 【机器学习】机器学习实践中的 7 种常见错误

    编译:伯乐在线 - yixingqingkong,英文:Cheng-Tao Chu 编注:本文作者是 Codecademy 的分析主管 Cheng-Tao Chu,其专长是数据挖掘和机器学习,之前在 ...

  7. 机器学习实践中的 7 种常见错误

    转载自:http://blog.jobbole.com/70684/ 编注:本文作者是 Codecademy 的分析主管 Cheng-Tao Chu,其专长是数据挖掘和机器学习,之前在 Google. ...

  8. Golang 要注意的陷阱和常见错误

    原文: 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs 翻译: Go的50度灰:新Golang开发者要 ...

  9. Python运行的17个时新手常见错误小结

    Python运行的17个时新手常见错误小结 1 发布时间:『 2017-11-04 11:20 』     帖子类别:『人工智能』  阅读次数:8803 (本文『Python运行的17个时新手常见错误 ...

最新文章

  1. 入门Python之后还是搞不定面试、做不来项目,推荐读读这本书
  2. JNI 实战全面解析
  3. 伪共享 FalseSharing (CacheLine,MESI) 浅析以及解决方案
  4. GPUImage 简介
  5. MRU 列表序列化的 Boost.MultiIndex 示例
  6. vim 插件之commentary
  7. centos写mysql光标移到上一行_mysql:一条SQL更新语句(update)是如何执行的
  8. Java实现数组逆置
  9. vs2003不能调试4/8
  10. 在苹果Mac上如何指定发送邮件的时间?
  11. 预付费电能表远传抄表系统
  12. 三层交换机LLDP协议对 L2/L3端口,报文处理实验
  13. python再议装饰器
  14. 摄像头录像存储计算方式
  15. [Mac 硬件相关] Mac日常拆卸及相关维护(更换电池/清风扇/更换硅脂)
  16. 学习opengl之为立方体六个面贴上不同的纹理图片
  17. 每日 30 秒 ⏱ 漫游器法则
  18. 景安 虚拟主机 自有SSL证书
  19. python卡尔曼滤波融合_数据融合之卡尔曼滤波示例
  20. python与php做网站_学Python对做网站用处大吗?

热门文章

  1. 【小白学习C++ 教程】十、C++中指针和内存分配
  2. 【Python金融量化 2- 100 】股票量化分析基本知识
  3. 基于flink+clickhouse构建亿级电商全端用户画像平台训练营
  4. 如何无监督地获得一个句子的向量表示?
  5. 仅输入单张图片,就能“看”出物体材质!这篇图形学论文已被SIGGRAPH 2021收录...
  6. 抽取+生成:一种基于背景知识的参考感知网络对话模型
  7. 10万元奖金“智源工业检测赛”激战正酣!高分Baseline合辑带你入门智能制造
  8. 低精度神经网络:从数值计算角度优化模型效率
  9. 第三期CSIG图像图形学科前沿讲习班-详细日程
  10. 杰奇php配置模块,custom.php