机器学习核函数(如何使用给定核函数检查数据在高维空间中是否线性可分)

如何测试/检查一个给定的核函数(例如:径向基函数/多项式)是否真的能将我的数据分开?

我想知道是否有方法(当然不是绘制数据)可以让我检查一个给定的数据集(标记有两个类别)在高维空间中是否可以被分开?


回答:

简而言之 – 没有,一般来说没有方法。然而,对于某些核函数,你可以轻易地说…一切都是可分的。这一特性,已被多种形式证明(其中包括由Schoenberg证明),例如,如果你的核函数形式为K(x,y) = f(||x-y||^2),且f是:

  • 无限可微的
  • 完全单调的(这大致意味着如果你取导数,那么第一个是负的,接下来是正的,再接下来是负的,…)
  • 正的

那么它将总是能够分开每一个二元标记的、一致的数据集(没有两个点具有完全相同的标签)。实际上,它还说了更多 – 你可以精确地插值,这意味着,即使这是一个回归问题 – 你也会得到零误差。因此,特别是多类别、多标签问题也将是线性可解的(存在线性/多线性模型可以给你正确的插值)。

然而,如果上述属性不成立,并不意味着你的数据不能被完美分开。这只是“单向”的证明。

特别是,这一类核函数包括径向基函数核,因此它将总是能够分开任何训练集(这就是为什么它很容易过拟合!)

那么反过来呢?这里你必须首先固定核函数的超参数,然后你也可以通过优化来回答这个问题 – 解决硬边界SVM问题(C=inf),它将在数据可分时找到解决方案。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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