采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我测试了一下,在最新的 sklearn 的版本中,确实是这个结果。
这里关键是 Decision Tree 的具体实现中有太多随机的元素,这么长时间 sklearn 的稳定版也已经更新了七八个版本了,并且有一次巨大的更新。(我出这个课程的时候,sklearn 是 0.xx 版,现在已经是 1.x 版本了),所以很难追溯到底是哪里的变化导致了这个区别。
我简单比较了一下,和旧版相比,新版的 Decision Tree 的具体实现添加很多新的机制,有了很多新的参数。更重要的是,一个简单的计算精度的变换,都有可能导致这个误差。具体在课程的数据的例子中,这个误差基本就是 1 个样本的分类的差别。
原理上,课程中介绍的基本概念全部适用。在这里另外要把握的几点在于:
1)对于机器学习来说,要想看到相应的实验结果,数据量越大“越好”。
2)一个非常重要的 mindset 是:这里说的“越好”,不一定是准确率越高,而是越可信。
在这个课程中,自从介绍了 overfitting,大家就应该建立起来的一个非常重要的概念是:只要你愿意,做一个模型,让这个模型在指定数据上达到 100% 的准确度,是 100% 可行的。但是,这个模型“不可信”。在机器学习界,更多说成是:无法 generalize,但我喜欢用可信不可信的说法。这就好比一个人作弊可以拿到满分,但是这个满分不可信;如果他不作弊,得到 30 分,这个分数虽然低,但是他反映了这个人的真实水平,所以是更可信的。我们后续的所有决策,应该基于这个 30 分来做,而不是基于 100 分来做。
3)一两个样本点的差距,不能太说明问题。91.2 和 91.24 差距不大,很难说 91.24 的算法就真的优于 91.2 的算法。基本他们就在一个水平上。一定要明白,机器学习的背后是统计学。统计学是以大样本,样本随机分布作为前提的,一两个样本的抖动产生偏差是很正常的。
继续加油!:)
bobo老师用心了,一不注意又把score和可信度混淆了,现在清楚很多了,十分感谢老师的解答
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.4k 19
3.4k 17
2.9k 15
1.6k 15
1.4k 14