有人可以解释为什么random_state参数会如此影响模型吗?
我有一个RandomForestClassifier模型并且想要设置random_state(用于再现性pourpouses),但是根据我使用的值,我的整体评估指标(F1得分)得到的值非常不同
例如,我尝试使用100个不同的random_state值来拟合相同的模型,并且在训练广告测试之后,最小的F1是0.64516129和最大的0.808823529)。这是一个巨大的差异。
这种行为似乎也很难比较两种模型。
思想?
答案 0 :(得分:3)
如果random_state影响您的结果,则表示您的模型高差异。在随机森林的情况下,这仅仅意味着您使用太小的森林并且应该增加树的数量(由于套袋 - 减少差异)。在scikit-learn中,这由构造函数中的n_estimators
参数控制。
为什么会这样?每种ML方法都试图最小化误差,从形态上看,这种误差通常可以分解为偏差和方差[+噪声](参见偏差方差dillema /权衡)。偏差就是你的模型在预期中与真实值的距离有多远 - 这部分错误通常来自一些先前的假设,例如使用非线性问题的线性模型等。方差是你训练时你的结果有多大差异在不同的数据子集上(或使用不同的超参数,在随机方法的情况下,随机种子是参数)。 超参数由我们初始化,参数在培训过程中由模型本身学习。最后 - 噪声不是来自问题本身(或数据表示)的可减少的错误。因此,在您的情况下 - 您只是遇到具有高方差的模型,决策树因其极高的方差(和小偏差)而众所周知。因此,为了减少方差,Breiman提出了特定的装袋方法,现在称为随机森林。森林越大 - 方差减少的影响越大。特别是 - 有1棵树的森林有很大的差异,1000棵树的森林对于中等大小的问题几乎是确定性的。
总结一下,你能做些什么?