我读到在KNN算法中我们需要交叉验证,因为我们从KNN的训练测试中发现的K值可能无法对未见数据进行泛化。
给出的逻辑是,在求K值时使用测试数据集,因此KNN-算法具有测试数据集的信息,因为K是通过测试数据集发现的。这和看不见的数据不一样。
但是是的,K值是从测试数据集中找到的,因此我们得到了我们的KNN算法,但是对测试数据的测试是在不知道测试数据的情况下进行的,而且是的,我们从中选择了K,但是不管我们是否选择了k,KNN给出了对测试数据的这种盲的准确性。
因此,为什么需要交叉验证呢?
发布于 2022-01-09 14:23:47
使用交叉验证来找到最佳的超参数值是最好的实践。
如果您测试了几个不同的超参数值(就像KNN的一些不同的K值),那么定制的有:
通过这种方式,您肯定会为最终的模型评估保留一些看不见的数据,并在选择和选择最佳的超参数值k时避免数据泄漏。
发布于 2022-01-12 14:49:42
是的,我们从中选择了K,但不管我们选的是K还是不选,KNN都给出了测试数据的准确性,这是盲目的。
是的,这就是为什么选择过程不是完全无用的原因;我们选择了基于未见数据的性能的超参数(S)。
但这一选择仍然会给分数带来偏见。为了看到这一点,假装你的超参数实际上什么都不做,所以测试褶皱上的分数只是由于模型拟合过程中的随机性而变化的(好的,所以不是kNN)。然后,测试分数只是随机数,在真实/渐近性能附近有一定的分布。选择方法从这个随机样本中选择显示最大值的超参数。这显然高于实际的预期性能,该性能位于样本值的平均值附近。
https://datascience.stackexchange.com/questions/106874
复制相似问题