我在我的 uni 讲座笔记中提到,n 折交叉验证的缺点之一是训练它非常昂贵,因为如果数据集非常大,这可能需要很长时间。但是他们说,如果我们使用 k 近邻分类器,情况就不是这样了。我在某种程度上知道 k 最近邻分类器的作用,它试图计算当前示例与所有它的 k 个邻居之间的距离,并根据与当前示例的距离为当前示例分配最近示例的标签。但我仍然不明白为什么在这种情况下 n-fold CV 并不昂贵。
对此问题的一些澄清表示赞赏!谢谢
我在我的 uni 讲座笔记中提到,n 折交叉验证的缺点之一是训练它非常昂贵,因为如果数据集非常大,这可能需要很长时间。但是他们说,如果我们使用 k 近邻分类器,情况就不是这样了。我在某种程度上知道 k 最近邻分类器的作用,它试图计算当前示例与所有它的 k 个邻居之间的距离,并根据与当前示例的距离为当前示例分配最近示例的标签。但我仍然不明白为什么在这种情况下 n-fold CV 并不昂贵。
对此问题的一些澄清表示赞赏!谢谢
您的理解是正确的,但就兴趣而言,重要的是 k-NN 是“惰性学习者”(参见此处或此处的示例):训练 k-NN 模型不需要计算,只存储训练数据照原样。计算发生在测试阶段:任何测试实例都需要与训练集中的实例进行比较,以根据最接近的实例确定其标签。因此,与大多数标准 ML 算法相比,训练速度快而测试速度慢。
如果将k-fold CV中发生的情况与简单的训练测试拆分中发生的情况进行比较,假设后一种情况下的测试集与用于 CV 的完整数据具有相同的大小:
因此,与大多数其他学习方法相比,k-NN 在时间上几乎没有差异。