如何在KNN算法中选择K值

时间:2018-02-25 05:34:26

标签: machine-learning knn

我对应用KNN算法有点困惑。问题是 - 我如何设置K值我看到有时它2,4等等? 最佳选择K值的任何症状/有效方式? 我使用不同的k值,找出哪个值最适合您的问题。 还有其他节省时间的方法吗? 谢谢。

1 个答案:

答案 0 :(得分:-1)

这可能非常棘手。首先,我看一下:https://stats.stackexchange.com/questions/126051/choosing-optimal-k-for-knn。我会继续解释。

诀窍在于 - 通常 - k值越低,训练集中的表现越好。也就是说,您的模型将越好地捕获其训练的数据集的可变性。你可以这样想:k = 1是所有实例中最容易过载的情况。预测仅基于最接近所提供样本的训练样本。

问题在于 - 即使在低维度,直观的空间中 - 这也不能(或者更确切地说,不经常)很好地概括。在较大的数据集上,最好增加邻居的数量以更好地表示被区分的类的共享特征:一些可变性是可以接受的,但它(希望)通常会取消以最好地反映类的平均属性。被识别出来。

一般来说,这个问题没有灵丹妙药。有时,可能很明显:将泛化误差绘制为k的函数。如果有明显的肘部(快速下降,然后是高原),这是适当选择k值的良好指示。这意味着训练数据存在k“建议”的值:一个最佳推广的值,无需对最近邻居类别进行过度计算。

但是,没有明确的分析解决方案。从根本上说,这是一个问题,即您的训练数据如何反映您的测试数据以及您的训练和测试数据如何反映所收集样本之外的数据。如果您还有其他问题,请告诉我们!我对数据科学充满热情,并乐于改进我的答案!

对于松散的直觉,低k值对应于分类空间中的“尖锐”决策边界。较高的k值对应于“曲线”,或者在极限平坦中对应于决策边界。我的建议是制作一些合成数据,以获得变化k的效果的直觉!