k-NN的k取1会怎么样

  统计/机器学习 监督式学习    浏览次数: 1035
5

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

如果k=1,会怎样?


谢谢!

 

Steven0612   2017-11-09 12:14



   4个回答 
12

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

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

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


DuckU   2017-11-10 10:54

5

k=1会严重的过拟合。

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


雷猴   2017-11-10 10:17

3

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

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


李可以   2018-08-15 10:17

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

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

k 值如何选择?

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

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

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

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


libinx   2018-10-11 16:52



  相关主题

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

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

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

SVM的支持向量最少有几个?   1回答

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

有序多分类问题   2回答

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

SVM里的软间隔是什么意思   2回答

支持向量机(SVM)里的支持向量是什么意思   6回答

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

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

python里如何实现线性判别分析(LDA)?   1回答



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

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

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

我们谢绝答非所问。

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

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