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

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

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

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

这是为什么?谢谢!


 

danny_q   2018-03-04 11:01



   3个回答 
6

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

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

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

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

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

公式截自维基百科


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

Josh_Josh   2018-03-06 10:42

2

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

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

betten   2018-03-04 16:32

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

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

dzzxjl   2018-03-05 21:32

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


  相关主题

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

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

k-NN的k取1会怎么样   2回答

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

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

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

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

逻辑回归的前提假设是什么?   1回答

线性回归的bagging   2回答

可以对线性回归进行boosting吗?   3回答

GBDT+LR的工作原理?   3回答

python中可以做beta regression的包?   1回答



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

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

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

我们谢绝答非所问。

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

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