SVM的自定义核函数,何时应用?

我刚进入机器学习领域,目前正在努力理解最常见的学习算法的工作原理,并了解何时应用每种算法。目前我正在学习支持向量机(SVM)的工作原理,并对自定义核函数有一个问题。
网络上有很多关于SVM更标准的核函数(如线性、RBF、多项式)的信息。然而,我希望了解在什么情况下使用自定义核函数是合理的。我的问题是:

1) SVM的其他可能的核函数有哪些?
2) 在什么情况下会应用自定义核函数?
3) 自定义核函数能显著提高SVM的预测质量吗?


回答:

1) SVM的其他可能的核函数有哪些?

这些核函数有无数种,例如可以参考pykernels中实现的一些(这远非详尽无遗)

https://github.com/gmum/pykernels

  • 线性
  • 多项式
  • RBF
  • 余弦相似度
  • 指数
  • 拉普拉斯
  • 有理二次
  • 逆多二次
  • 柯西
  • T-学生
  • ANOVA
  • 加性卡方
  • 卡方
  • 最小最大
  • 最小/直方图交集
  • 广义直方图交集
  • 样条
  • 索伦森
  • 田宫
  • 小波
  • 傅里叶
  • 对数(CPD)
  • 幂(CPD)

2) 在什么情况下会应用自定义核函数?

基本上在两种情况下:

  • “简单”的核函数效果非常差
  • 数据在某种意义上是特定的,因此为了应用传统核函数,必须对数据进行降维。例如,如果你的数据是以图的格式存在的,你无法应用RBF核函数,因为图不是固定大小的向量,因此你需要一个图核来处理这种对象,而无需进行某种信息丢失的投影。有时你对数据有深入的了解,知道一些潜在的结构,这可能有助于分类器。一个这样的例子是周期性,你知道你的数据中存在某种重复效应 – 那么寻找特定的核函数可能是有价值的,等等。

3) 自定义核函数能显著提高SVM的预测质量吗?

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

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

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

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

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注