SVM的自定义内核,何时应用它们?

时间:2016-05-26 18:20:33

标签: machine-learning scikit-learn svm

我是机器学习领域的新手,现在正试图掌握最常见的学习算法是如何工作的,并了解何时应用它们。目前我正在学习支持向量机的工作方式,并对自定义内核函数有疑问 关于SVM的更标准(线性,RBF,多项式)内核,Web上有大量信息。但是,我想了解何时使用自定义内核函数是合理的。我的问题是:

1)SVM的其他可能内核是什么?
2)在哪种情况下,人们会应用自定义内核? 3)自定义内核能否显着提高SVM的预测质量?

1 个答案:

答案 0 :(得分:8)

  

1)SVM的其他可能内核是什么?

这些中有无数的,例如参见pykernels中实现的列表(这远非详尽无遗)

https://github.com/gmum/pykernels

  • 线性
  • 多项式
  • RBF
  • 余弦相似度
  • 指数
  • 拉普拉斯
  • 理性二次方
  • 反多次二次
  • 柯西
  • T-学生
  • ANOVA
  • 添加剂Chi ^ 2
  • 驰^ 2
  • MINMAX
  • 最小/直方图交叉点
  • 广义直方图交集
  • 样条
  • 索伦森
  • 谷本
  • 小波
  • 傅立叶
  • 记录(CPD)
  • 电力(CPD)
  

2)在哪种情况下会应用自定义内核?

基本上有两种情况:

  • "简单"那些结果非常糟糕
  • 数据在某种意义上是特定的 - 因此,为了应用传统内核,必须对其进行退化。例如,如果您的数据是图形格式,则不能应用RBF内核,因为图形不是常量大小的向量,因此您需要一个图形内核来处理此对象而不需要某种信息丢失投影。有时您也可以深入了解数据,了解一些底层结构,这可能有助于分类器。一个这样的例子是周期性,你知道你的数据中有一种反复效应 - 那么它可能值得寻找特定的内核等。
  

3)自定义内核能否显着提高SVM的预测质量?

是的,特别是总是存在一个(假设的)贝叶斯最优内核,定义为:

K(x, y) = 1 iff arg max_l P(l|x) == arg max_l P(l|y)

换句话说,如果一个标签l的真实概率P(l | x)被分配给一个点x,那么我们就可以创建一个内核,它几乎将你的数据点映射到它们的一个热编码上。最可能的标签,从而导致贝叶斯最优分类(因为它将获得贝叶斯风险)。

在实践中,当然不可能得到这样的内核,因为这意味着你已经解决了你的问题。然而,它表明有一个概念是#34;最佳内核",显然没有经典的内核不属于这种类型(除非你的数据来自veeeery简单发行版)。此外,每个内核都是一种先验的过度决策函数 - 你越接近实际的函数系列 - 越有可能用SVM得到一个合理的分类器。

相关问题