为什么机器学习习惯设置random_state = 42 ?

在学机器学习写代码时一直有个小疑问,为什么大家习惯设置random_state=42?甚至许多官方文档也是用的42这个数字。简单上网搜索之后发现原来是在致敬这本道格拉斯·亚当斯所作的幽默荒诞风的科幻小说——《银河系漫游指南》(The hitchhiker's guide to the galaxy)

花了两天时间把这本书读完了,很喜欢作者的文笔,幽默中带着讽刺,无厘头但又致力在每一个细节上给予“逻辑上的合理性”。

地球高寿?科学给出的答案是46亿年。而科幻给出的答案是1000万年。在茫茫宇宙中,一个具有超级智慧的泛维度种族厌烦了对于生命的意义的无休止争论,于是建造了宇宙一切空间和时间中第二强大的电脑“沉思(Deep Thought)”。他们向它寻求关于生命、宇宙、一切终极问题的答案。经过整整750万年的计算,“沉思”给出了答案:42。泛维度物种显然对这样一个不知所谓的答案不满意,对此“沉思”给出的回答是,他们首先要明白生命宇宙以及一切的终极问题本身的含义,才能理解这个问题的答案。“沉思”并不能胜任给出这个意义的艰巨任务,但它能够创造另一台可以计算出这个终极问题的电脑,一台具有无限和微妙的复杂性,有机生命本身也是它操作母体的一部分,泛维度物种自身也会以一种新的生命形式参与其中来操控它的程序的电脑。这台电脑被命名为......“地球”。它需要为期1000万年的时间来给出答案。然而就在这台电脑将要计算出答案前的5分钟,沃贡人宣布要在这里建一条超空间快速通道而将地球清除了。于是关于生命宇宙一切的终极问题随之湮灭,42这个数字也失去了它的意义。

书中有许多我很喜欢的讽刺意味拉满的话,简单分享几句吧:

  • 人就像无知的原始人,对银河事务的了解程度简直和一只非洲蚊子对北京城生活的了解程度差不多。
  • 抬头仰望星空就是仰望无限——距离广阔无垠,因而也就失去了意义。
  • 《银河系漫游指南》已经取代伟大的《银河系百科全书》成为所有知识和智慧的标准。这是因为,尽管显得冗长,并且包含许多虚假或者至少是不够准确的信息,但它却在两个极其重要的方面超越了那部更加陈旧和呆板的著作。第一,它稍微便宜一点儿;第二,在它的封面上以大而友善的字体写着“不要恐慌”这句话。(实际从书中种种细节就可以看出相比于百科全书,漫游指南对于许多事物的解释就是在扯淡)
  • 银河系漫游指南对地球的描述:“无害”,而星际漫游者福特正在向编辑传送一个新的解释:“基本无害”

随机数种子

最后再简单介绍一下"randm_state"这个参数吧。
在一些具有随机性的类或函数中,如果我们希望能够重复给出相同的随机结果时,就会用到random_state这个参数。换句话说,它相当于一个随机数种子(random seed)用来控制类或函数的随机模式。
例如在构建随机森里模型时,我们会用到random_state这个参数:

rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
posted @ 2024-01-18 19:12  树娃娃  阅读(751)  评论(0编辑  收藏  举报