KNN中K值的选择

  统计/机器学习 监督式学习    浏览次数:433        分享
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



  相关主题

线性可分是什么意思?   1回答

怎么理解platt scaling?   2回答

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

关于方差和偏差和噪声   1回答

有序多分类问题   2回答

MLR分片模型是什么模型?   0回答

为什么LR要用Sigmoid函数?   6回答

欠采样后概率还原问题   2回答

为什么说knn是惰性算法   1回答

k-NN的k取1会怎么样   4回答

knn推导过程中的一个细节   2回答

adaboost里的learning rate是什么意思?   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!