KNN中K值的选择

  统计/机器学习 监督式学习    浏览次数:14664        分享
0

最近学习KNN算法,然后发现K值如果很大的话,分类准确率会越来越低,准确率随着K值增加而减少


在相关文章里面也发现K值通常是选择1,3,5,7都比较小

一直没想明白,为什么K越大 准确率却越来越低

还请各位大神帮忙指点迷津

 

吃饭用桶   2019-03-13 17:27



   5个回答 
3

KNN的思想是用目标点邻点的类别投票判断目标点的类别。如果K过大,即和它距离较远的不同类别的点就变成了邻点,偏差变大,准确率就低了。如果K过小,比如就选最近的一个点,容易被噪声和错误的样本干扰,就容易过拟合。

SofaSofa数据科学社区DS面试题库 DS面经

咸魚   2019-03-15 12:29

2

KNN有一个先验假设,物以类聚,人以群分。距离近的点有相似的分布,所以相近点的统计量也相近。

KNN有两步:

1.对一个测试点,找K个最临近的训练点作为一个聚类(cluster)的采样,得到统计量,比如均值、中位数、方差或分类标签等。

2.用得到的统计量表示这个测试点的统计量。

K太小,因为采样数太小,估计统计量的置信区间过大,偏差大,会过拟合。K太大,一个聚类中的训练点没有相同分布,所以聚类的统计量不能代表测试点的统计量,没有找到想要的统计量,会欠拟合。统计量的置信区间和相同分布是两个矛盾的条件。K应该选训练数据中聚类大小的平均值。

对于你的例子,如果K>60,用不是同类的点去计算分类标签,肯定会引入更多错误。

SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2019-03-14 23:52

2

k越小,模型越容易过拟合;k越大,越容易欠拟合。

SofaSofa数据科学社区DS面试题库 DS面经

zl_pku   2019-03-13 21:41

0

感谢各位前辈的解答。

小弟还有一个问题,我自己编写的程序和SKLEARN调用的程序,在相同K值、相同数据集的情况下,得到的分类准确率很多不一样,不知道什么原因,这个现象正常吗?

下图是对比曲线,请参考


SofaSofa数据科学社区DS面试题库 DS面经

吃饭用桶   2019-03-20 10:06

0

参考一下这两个问题,应该对题主会很有帮助

k近邻算法(k-NN)怎么选k

k-NN的k取1会怎么样

SofaSofa数据科学社区DS面试题库 DS面经

maxroot   2019-03-14 12:46



  相关讨论

有序多分类问题

adaboost里的learning rate是什么意思?

为什么说knn是惰性算法

为什么LR要用Sigmoid函数?

MLR分片模型是什么模型?

kNN的k=1为什么训练误差为0?

knn推导过程中的一个细节

线性可分是什么意思?

k-NN的k取1会怎么样

rulefit和gdbt+lr有什么区别?

  随便看看

求多个torch tensor的平均值

怎么理解图像识别里的dice系数?

两个凸函数相加,还是凸函数吗?

cvr和ctr的区别是什么?

随机森林(random forest)和支持向量机(SVM)各有什么优劣