采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
knn不是计算出样本与每个样本的距离后,对前k个距离最近的样本进行投票,然后最高票胜出。那为什么说k越小越容易过拟合呢?
直观地理解,过拟合就是学习到了很多“局部信息”,或者是“噪音”,使得我们的模型中包含很多“不是规律的规律”。在knn算法中,k越小,就越有可能让我们的学习结果被“局部信息”所左右。在极端情况下,k=1,knn算法的结果只由离我们待预测样本最近的那个点决定,这使得我们knn的结果高概率被“有偏差的信息”或者“噪音”所左右,是一种过拟合。
一个简单的可视化看过拟合的方式,是看决策边界的形状。“决策边界”的概念会在下一章介绍。决策边界越不规则,越有可能是过拟合。因为不规则的决策边界意味着数据的特征稍微有一点微小的变化,我们的分类算法就可能改变分类结果,也就是所谓的对噪音很明显。我们可以使用我们在这个课程中后续一直使用的plot_decision_boundary这个函数,来观察一下knn中,对k不同的取值,决策边界的不同。可以考虑看完下一章,再回头看下面的图示。在这里,我简单绘制了对于iris数据,knn中的k取值不同,决策边界的不同。很显然,k越小,决策边界越不规则:)
代码参见: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
之前也有类似问题,模模糊糊地理解了下,从图上看更好理解了,比用文字描述简单多了
很直观的理解,恍然大悟!
我补充一点。knn和神经网络不一样的一点在于,knn并没有需要训练的参数。fit只是记住了训练数据(和标签)。在预测时,输入测试数据,根据你指定的k去取最近的k个点然后投票。因此,k越小,投票结果越容易受到个别点的影响。体现在决策边界就是“弯弯曲曲”。学习到了更多细节,所以说模型更复杂。
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.6k 19
3.5k 17
3.0k 15
1.7k 15
1.5k 14