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

  统计/机器学习 监督式学习 模型验证    浏览次数: 1477
6

我是用k-NN做二元分类,我也大概知道k-NN的工作原理,问题是这个k是怎么选出来的呢?

 

ZackLi   2017-03-13 23:36



   2个回答 
16

简单来说,k应该选择一个不大不小的奇数。

k太大了,会出现under-fitting。比如训练集有75个“1”,25个“0”。如果k=51,那无论测试点在哪里都会被预测为“1”。

k太小了,会出现over-fitting。如果k=1,那么测试点的标签就是离它最近的训练点的标签,如果这个训练点本身是个outlier,那这个测试点的预测结果当然就靠谱了。

k是偶数的话,会有打平的现象。比如k=10,如果一个预测点的10个近邻中5个是“1”,5个是“0”,那么它到底是什么呢?选偶数就是给自己添麻烦。

SofaSofa数据科学社区 DS面经 问答 实战

高代兄   2017-03-14 08:07

3

可以对k进行cross validation,候选的k可以是1,3,5,7,9,15,25,45。


SofaSofa数据科学社区 DS面经 问答 实战

Gakki   2017-05-13 14:38



  相关主题

什么是混淆矩阵(confusion matrix)   2回答

precision-recall曲线下面积有什么意义?   3回答

F1值会受到不平衡数据的影响吗?   2回答

多元分类的混淆矩阵   1回答

机器学习里的ppv是什么意思?   1回答

二元分类问题中经常提到的TP,TN,FN,FP都是什么意思?   3回答

利用交叉验证调参后还需要用完整的数据集重新训练吗?   2回答

用python求二元分类的混淆矩阵   2回答

如果我用交叉验证,还是否需要单独分出测试集?   1回答

k-fold cross validation的k怎么选   3回答

测试集和验证集的区别?   4回答

如何在保持查全率不变的情况下提高查准率?   1回答



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

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

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

我们谢绝答非所问。

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

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