为什么knn算法的k越小模型会越复杂?

来源:8-5 学习曲线

慕运维2948618

2018-01-22

knn不是计算出样本与每个样本的距离后,对前k个距离最近的样本进行投票,然后最高票胜出。那为什么说k越小越容易过拟合呢?

写回答

1回答

liuyubobobo

2018-01-23

直观地理解,过拟合就是学习到了很多“局部信息”,或者是“噪音”,使得我们的模型中包含很多“不是规律的规律”。在knn算法中,k越小,就越有可能让我们的学习结果被“局部信息”所左右。在极端情况下,k=1,knn算法的结果只由离我们待预测样本最近的那个点决定,这使得我们knn的结果高概率被“有偏差的信息”或者“噪音”所左右,是一种过拟合。


一个简单的可视化看过拟合的方式,是看决策边界的形状。“决策边界”的概念会在下一章介绍。决策边界越不规则,越有可能是过拟合。因为不规则的决策边界意味着数据的特征稍微有一点微小的变化,我们的分类算法就可能改变分类结果,也就是所谓的对噪音很明显。我们可以使用我们在这个课程中后续一直使用的plot_decision_boundary这个函数,来观察一下knn中,对k不同的取值,决策边界的不同。可以考虑看完下一章,再回头看下面的图示。在这里,我简单绘制了对于iris数据,knn中的k取值不同,决策边界的不同。很显然,k越小,决策边界越不规则:)

//img.mukewang.com/szimg/5a6638fc0001cc9c10900728.jpg

//img.mukewang.com/szimg/5a66386a0001728610860695.jpg

//img.mukewang.com/szimg/5a66386b00013bd510970680.jpg

//img.mukewang.com/szimg/5a66386b000186b711280700.jpg


代码参见:https://github.com/liuyubobobo/Play-with-Machine-Learning-Algorithms/blob/master/09-Logistic-Regression/Optional-01-kNN-Decision-Boundary/Optional-01-kNN-Decision-Boundary.ipynb

9
3
慕标1049315
我补充一点。knn和神经网络不一样的一点在于,knn并没有需要训练的参数。fit只是记住了训练数据(和标签)。在预测时,输入测试数据,根据你指定的k去取最近的k个点然后投票。因此,k越小,投票结果越容易受到个别点的影响。体现在决策边界就是“弯弯曲曲”。学习到了更多细节,所以说模型更复杂。
2021-05-19
共3条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5766 学习 · 2429 问题

查看课程