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



我是机器学习领域的新手,现在正试图了解最常见的学习算法是如何工作的,并了解何时应用其中的每一种算法。目前,我正在学习支持向量机的工作原理,并对自定义内核函数有疑问
网上有很多关于SVM的标准(线性、RBF、多项式)内核的信息。I、 然而,我想了解什么时候使用自定义内核函数是合理的。我的问题是:

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

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

其中有无限多个,例如,请参阅pykernel中实现的列表(这远不是详尽的)

https://github.com/gmum/pykernels

  • 线性
  • 多项式
  • RBF
  • 余弦相似性
  • 指数
  • 拉普拉斯算子
  • 有理二次型
  • 逆多重二次型
  • 柯西
  • T-Student
  • ANOVA
  • 添加剂Chi^2
  • Chi^2
  • 最小最大值
  • 最小/直方图交点
  • 广义直方图交集
  • 样条曲线
  • 索伦森
  • 谷本
  • 小波
  • 傅立叶
  • 日志(CPD)
  • 功率(CPD)

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

基本上有两种情况:

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

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

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

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

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

在实践中,当然不可能得到这样的内核,因为这意味着你已经解决了你的问题。然而,它表明存在"最优内核"的概念,显然没有一个经典内核不是这种类型的(除非你的数据来自非常简单的分布)。此外,每个核都是一种先验超决策函数——你的诱导函数族越接近实际的核——就越有可能用SVM得到一个合理的分类器。

相关内容

  • 没有找到相关文章

最新更新