k-NN的k取1会怎么样

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

k-NN一般都选比较大的数,几乎没有见过选k=1,为什么?

如果k=1,会怎样?


谢谢!

 

Steven0612   2017-11-09 12:14



   4个回答 
14

举个两元分类的例子。上图是k=1,下图是k=100。

当k=1的时候,决策边界变得非常不光滑,换句话说,模型的决策规则变得非常复杂,而这个就会很容易造成过拟合。

至于k怎么选,可以参考k近邻算法怎么选k


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

DuckU   2017-11-10 10:54

5

k=1会严重的过拟合。

严重到训练误差为0,但是测试误差会很大。


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

雷猴   2017-11-10 10:17

3

+ $k$ 的值越小,模型就越复杂,所以就越容易过拟合,过拟合表现出来的特点就是“训练误差远小于测试误差”。

+ $k$ 的值越大,模型就越简单(可以从极端情况来理解,$k$ 设置成一个很大很大的数值,那么我们的模型就不用计算 $k$ 近邻了,把所有的训练样本都拿进来做一次投票就行了),所以就越容易欠拟合。


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

李可以   2018-08-15 10:17

一直有个疑问,KNN是不需要训练的,学习时间为0,直接用于测试就行,何来训练误差? - AIphaCat   2018-10-11 14:16
kNN是惰性算法。模型在训练集上的误差就是训练误差。kNN没有那种迭代的过程罢了,类似的还有朴素贝叶斯。 - WinJ   2018-10-11 14:21
2

先了解knn的原理:给定一个实例点,然后在所有的数据中找到与该实例点距离最近的 k 个样本,最后选择 k 个样本中出现最多的分类标记作为实例点的分类预测结果。

k 值如何选择?

- k 值的选择不能过小,否则实例点会对自己周边的点异常敏感,容易过拟合

- k 值的选取也不能过大,容易产生较大的误差

- 一般选择一个合适的 k 值,用交叉验证法择优选取

如果你将 k 设置为 1,那么knn会找所有数据中与该点距离最近的 1 个点,此时模型会变得很敏感。想想小蝌蚪找妈妈,它总不能看到一个人就叫妈妈吧?:)


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

libinx   2018-10-11 16:52



  相关讨论

为什么说knn是惰性算法

为什么LR要用Sigmoid函数?

MLR分片模型是什么模型?

关于方差和偏差和噪声

欠采样后概率还原问题

adaboost里的learning rate是什么意思?

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

怎么理解platt scaling?

线性可分是什么意思?

stacking模型里每个子模型的权重如何确定?

  随便看看

去掉pandas DataFrame的index的名字

特征归一化对K Means有影响吗?

lightgbm.LGBMModel和lightgbm.LGBMClassifier该用哪个?

micro和macro F1 score分别是什么意思?

为什么机器学习中的优化问题很少用到牛顿法?