请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于KNN算法的中k的取值的问题

我从网上自己找的西瓜书的模拟数据, 尝试着自己去找出合适的K值, 数据集有两种分类, 当k为偶数的时候时候,考虑了距离的权重, 之后把k从1到10 进行遍历, 输出结果很诧异, k= 1, 2, 3,4的时候 准确率都是1, 那么这种情况下,我们k值应 给如何去选取呢??? k=1 可以考虑,,会有过拟合, 那k=2 可以吗? 应该如何去理解呢??? 我们又该如何去理解呢???
另外k的遍历范围是多少合适? 从0开始,上限是数据集数量的平方根????
另外结果出现这个情况,是不是和我自己找的数据有关???
图片描述
图片描述

图片描述

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2021-03-26 15:28:24

首先,这说明你的数据太简单了。轻松达到 100%。在这种情况下,请考虑一下,是否有可能你的数据根本不需要使用机器学习的算法,就能很好地作区分。


其次,如果一定要使用 kNN,应该使用较大的 k。因为 k 越小,越容易过拟合;k 越大,越不容易过拟合。这一点,在课程后续介绍过拟合的时候会介绍。整体,让数据不过拟合,是非常重要的,甚至比几个点的准确率还重要。


你给出的 k 的取值范围,从数学的角度,是一个很好的取值范围(2 - 数据集的平方根)。


但是很多时候,k 的取值范围,也和具体业务场景相关。比如一个正常人认识的人的数量不会超过 100 人,那么在对人做分类的时候,可能最多看 100 个人就够了。哪怕你的数据集中有 1 个亿的数据量。


在很多时候,专有的领域有这样的先验知识可以使用。这也是机器学习在解决领域问题的时候,离不开领域专家的原因。(比如机器学习在金融领域的应用,大量依赖已有的金融指标。)


另外,k 从小到大的过程,肯定是从过拟合,到欠拟合的过程。所以,也可以不指定 k 的范围,k 从小到大,计算验证数据集的准确率,这个准确率肯定是一个从逐渐下降的过程(从过拟合,到欠拟合)。可以去观察这条曲线,找到这条曲线最合适的点(比如准确率在 75% 以上的最大的 k)。


这种绘制出一条曲线,曲线中找到一个合适的平衡点,也是机器学习中常用的一种参数选择的方式。这个课程中后续还会介绍一些这类曲线。但这种方式在更复杂的算法中,应用的更多。(比如神经网络,但这个课程不涉及神经网络。)


继续加油!:)

4 回复 有任何疑惑可以回复我~
  • 老师回答的好用心!学习到很多知识,谢谢!
    还有就是现在在准备data science 的面试,老师对机器学习这个部分的面试怎么刷题来准备?就是怎么能够测试自己是否已经充分理解了某一个算法? 学习完一个算法之后怎么找题目来联系一下?
    回复 有任何疑惑可以回复我~ 2023-10-24 03:20:25
  • 这个课程其实不涉及 data science 相关的“刷题”,以讲清楚机器学习算法原理(但其实很多时候涉及的是一些实践原则,而不是简单地算法原理,欠拟合和过拟合就是最典型的例子,也是在机器学习领域经常要讨论的内容,不管是用的是什么算法)。如果对“刷题”有需求,现在市面上其实已经有了一些针对 data science 的刷题的“教程”,比如这本书:https://www.amazon.com/Ace-Data-Science-Interview-Questions/dp/0578973839/ref=asc_df_0578973839/?tag=hyprod-20&linkCode=df0&hvadid=532387267820&hvpos=&hvnetw=g&hvrand=2403621971340084961&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9031921&hvtargid=pla-1408441908462&psc=1 
    
    另外还要补充一句,data science 涵盖的范围是比机器学习广的。比如一些基础的统计学, SQL 的使用,包括深度学习相关的内容,等等,都是这个课程不涵盖的。
    
    加油!:)
    回复 有任何疑惑可以回复我~ 2023-10-24 03:31:17
  • 感谢老师的回复!这个课程真的太良心了。讨论区收获很多,希望老师能够多写文章分享。之后有新课程一定还支持!
    回复 有任何疑惑可以回复我~ 2023-10-28 03:46:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信