我应该尽可能对非线性数据使用内核技巧吗?

机器算法验证 机器学习 支持向量机 内核技巧 启发式
2022-02-27 02:24:21

我最近了解了内核技巧的使用,它将数据映射到更高维度的空间中,以尝试将这些维度中的数据线性化。有没有我应该避免使用这种技术的情况?只是找到正确的核函数的问题吗?

对于线性数据,这当然没有帮助,但对于非线性数据,这似乎总是有用的。在训练时间和可扩展性方面,使用线性分类器比非线性分类器容易得多。

3个回答

一般来说,对于线性方法,您为内核技巧付出的代价是泛化界限更差。对于线性模型,它的VC 维度在维度数量方面也是线性的(例如,感知器的 VC 维度是d + 1)。

现在,如果您要对高维空间执行复杂的非线性变换,那么假设集的 VC 维会明显更大,因为它现在就新的高维空间中的维数而言是线性的。有了它,泛化界限就上升了。

支持向量机通过做两件事以最有效的方式利用内核技巧:

对于线性数据,这当然没有帮助,但对于非线性数据,这似乎总是有用的。在训练时间和可扩展性方面,使用线性分类器比非线性分类器容易得多。

@BartoszKP 已经解释了为什么内核技巧有用。但是,为了完全解决您的问题,我想指出,内核化并不是处理非线性可分数据的唯一选择。

对于模型的去线性化,至少有三种好的、常见的替代方案

  • 基于中性网络的方法,在其中添加一层(或多层)处理单元,能够将数据转换为线性可分的情况。在最简单的情况下,它是一个基于 sigmoid 的层,它为过程增加了非线性。一旦随机初始化,它们就会在上层的基于梯度的优化过程中得到更新(这实际上解决了线性问题)。
  • 特别是 - 在这里可以使用深度学习技术来准备数据以进行进一步的线性分类。这与前一个想法非常相似,但在这里您首先训练您的处理层,以便在一些线性模型的训练的基础上找到进一步微调的良好起点。
  • 随机投影 - 您可以从一些预定义的空间中采样(非线性)投影并在它们之上训练线性分类器。这个想法在所谓的极限机器学习中被大量利用,其中非常有效的线性求解器用于在随机投影上训练一个简单的分类器,并获得非常好的性能(关于分类和回归中的非线性问题,请查看极限学习示例)。

总而言之 - 核化是一种很好的去线性化技术,当问题不是线性时,您可以使用它,但这不应该是盲目的“如果那么”方法。这只是至少为数不多的有趣方法之一,根据问题和要求,这可能会导致各种结果。特别是,ELM 倾向于找到与核化 SVM 给出的解决方案非常相似的解决方案,同时可以更快地训练行数(因此它的扩展性比核化 SVM好得多)。

我将尝试为您的问题提供非技术性的答案。

事实上,线性应该是首选,并且应该是首选,因为您提到的原因、训练时间、可扩展性、易于解释最终模型、选择处理原始模型或对偶模型、对过度拟合的容忍度更高等。

如果线性模型不能产生令人满意的性能,那么您可以尝试非线性解决方案。需要考虑的一些权衡包括:

  • 内核的选择。这并不明显,通常您需要测试不同的选项
  • 存在过度拟合训练集的危险。实际上,如果您愿意,很容易过拟合。为了避免过度拟合,您需要一个更强大的评估框架(您需要测量未见数据的性能的方差/稳定性),并且您需要足够的数据才能进行正确的模型选择
  • 您在对偶工作,因此您无法解释最终模型,即,您不能声称特征 X 比特征 Y 等更重要。
  • 训练时间随着数据量的增加而增加(特征数量减少,因为它是双重的)