4个回答
knn是惰性算法,不代表没有训练误差。模型在训练集上的误差就是训练误差。所以knn也是一样的。
当k=1时,对于训练集来说,每个点都会被自己本身标上标签,所以训练误差为0。即使是一些孤立点,训练偏差也会是0。
当k>1时,训练集那些孤立点就被被错误分类,因为它们周围都是其他类别的点。
当k=样本数量时,训练集中的每个点都被标上多数的那个标签。
其实k从1到无穷大的过程就是bias从0变大的过程,也是variance逐渐变小的过程。
公式截自维基百科
---------欢迎理性讨论---------
SofaSofa数据科学社区DS面试题库 DS面经k-NN不需要训练,需要做的事情是将所有所有训练集遍历一遍,如果所验证的数据是来自训练集,那么选择k=1时,误差唯一.
个人感觉题目没有说清楚.(此回答仅供参考)
SofaSofa数据科学社区DS面试题库 DS面经
唯一?什么意思
-
danny_q
2018-03-05 00:21
为零
-
betten
2018-03-06 13:51
因为kNN中k=1时,一个训练数据找到的邻居就是他自己。和自己的误差当然为0。
其实kNN没有训练一个模型去学习输入到输出的映射,只是会把训练数据存储在kdtree的数据结构中,唯一训练的是kdtree中每个节点的split规则。而kdtree只是加速找NN的过程。
SofaSofa数据科学社区DS面试题库 DS面经同样对此题不理解,knn应该不涉及训练的过程,训练误差体现在哪?
SofaSofa数据科学社区DS面试题库 DS面经
knn是惰性算法,不代表没有训练误差。模型在训练集上的误差就是训练误差。所以knn也是一样的。
-
Josh_Josh
2018-03-06 10:29