如何测试/检查一个给定的核函数(例如:径向基函数/多项式)是否真的能将我的数据分开?
我想知道是否有方法(当然不是绘制数据)可以让我检查一个给定的数据集(标记有两个类别)在高维空间中是否可以被分开?
回答:
简而言之 – 没有,一般来说没有方法。然而,对于某些核函数,你可以轻易地说…一切都是可分的。这一特性,已被多种形式证明(其中包括由Schoenberg证明),例如,如果你的核函数形式为K(x,y) = f(||x-y||^2),且f是:
- 无限可微的
- 完全单调的(这大致意味着如果你取导数,那么第一个是负的,接下来是正的,再接下来是负的,…)
- 正的
那么它将总是能够分开每一个二元标记的、一致的数据集(没有两个点具有完全相同的标签)。实际上,它还说了更多 – 你可以精确地插值,这意味着,即使这是一个回归问题 – 你也会得到零误差。因此,特别是多类别、多标签问题也将是线性可解的(存在线性/多线性模型可以给你正确的插值)。
然而,如果上述属性不成立,并不意味着你的数据不能被完美分开。这只是“单向”的证明。
特别是,这一类核函数包括径向基函数核,因此它将总是能够分开任何训练集(这就是为什么它很容易过拟合!)
那么反过来呢?这里你必须首先固定核函数的超参数,然后你也可以通过优化来回答这个问题 – 解决硬边界SVM问题(C=inf),它将在数据可分时找到解决方案。