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

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

大家好,我做了自测题的第一题。

答案解释说k-NN,当k=1的时候,训练误差为0。

这是为什么?谢谢!


 

danny_q   2018-03-04 11:01



   4个回答 
7

knn是惰性算法,不代表没有训练误差。模型在训练集上的误差就是训练误差。所以knn也是一样的。

当k=1时,对于训练集来说,每个点都会被自己本身标上标签,所以训练误差为0。即使是一些孤立点,训练偏差也会是0。

当k>1时,训练集那些孤立点就被被错误分类,因为它们周围都是其他类别的点。

当k=样本数量时,训练集中的每个点都被标上多数的那个标签。

其实k从1到无穷大的过程就是bias从0变大的过程,也是variance逐渐变小的过程。

公式截自维基百科


---------欢迎理性讨论---------

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

Josh_Josh   2018-03-06 10:42

2

k-NN不需要训练,需要做的事情是将所有所有训练集遍历一遍,如果所验证的数据是来自训练集,那么选择k=1时,误差唯一.

个人感觉题目没有说清楚.(此回答仅供参考)

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

betten   2018-03-04 16:32

唯一?什么意思 - danny_q   2018-03-05 00:21
为零 - betten   2018-03-06 13:51
1

因为kNN中k=1时,一个训练数据找到的邻居就是他自己。和自己的误差当然为0。

其实kNN没有训练一个模型去学习输入到输出的映射,只是会把训练数据存储在kdtree的数据结构中,唯一训练的是kdtree中每个节点的split规则。而kdtree只是加速找NN的过程。

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

Zealing   2018-10-04 17:09

0

同样对此题不理解,knn应该不涉及训练的过程,训练误差体现在哪?

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

dzzxjl   2018-03-05 21:32

knn是惰性算法,不代表没有训练误差。模型在训练集上的误差就是训练误差。所以knn也是一样的。 - Josh_Josh   2018-03-06 10:29


  相关讨论

欠采样后概率还原问题

rulefit和gdbt+lr有什么区别?

为什么LR要用Sigmoid函数?

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

线性可分是什么意思?

knn推导过程中的一个细节

MLR分片模型是什么模型?

k-NN的k取1会怎么样

怎么理解platt scaling?

adaboost里的learning rate是什么意思?

  随便看看

tsne被忽视?tsne有什么缺点?

推荐系统中的召回(recall)是什么意思?

鞍点的数学定义是什么?

pandas把一列日期转换为星期

deep learning中的pooling是什么意思?