为什么 n 折交叉验证对于 K 最近邻并不昂贵?

数据挖掘 交叉验证
2022-02-20 20:36:07

我在我的 uni 讲座笔记中提到,n 折交叉验证的缺点之一是训练它非常昂贵,因为如果数据集非常大,这可能需要很长时间。但是他们说,如果我们使用 k 近邻分类器,情况就不是这样了。我在某种程度上知道 k 最近邻分类器的作用,它试图计算当前示例与所有它的 k 个邻居之间的距离,并根据与当前示例的距离为当前示例分配最近示例的标签。但我仍然不明白为什么在这种情况下 n-fold CV 并不昂贵。

对此问题的一些澄清表示赞赏!谢谢

1个回答

您的理解是正确的,但就兴趣而言,重要的是 k-NN 是“惰性学习者”(参见此处此处的示例):训练 k-NN 模型不需要计算,只存储训练数据照原样。计算发生在测试阶段:任何测试实例都需要与训练集中的实例进行比较,以根据最接近的实例确定其标签。因此,与大多数标准 ML 算法相比,训练速度快而测试速度慢。

如果将k-fold CV中发生的情况与简单的训练测试拆分中发生的情况进行比较,假设后一种情况下的测试集与用于 CV 的完整数据具有相同的大小:

  • 训练重复k次,所以如果训练阶段很长,需要更多的时间。
  • 应用模型与实例数成正比。如果这两种情况的数字相同,则没有区别。

因此,与大多数其他学习方法相比,k-NN 在时间上几乎没有差异。