我是用k-NN做二元分类,我也大概知道k-NN的工作原理,问题是这个k是怎么选出来的呢?
2个回答
简单来说,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面试题库 DS面经可以对k进行cross validation,候选的k可以是1,3,5,7,9,15,25,45。
你好,我想问下,1不是会过拟合么,为何还作为候选值
-
anxueying
2019-01-02 16:54
不推荐k=1,1会过拟合
-
lihaile
2019-01-03 13:16