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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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