有人能解释为什么random_state参数对模型有如此大的影响吗?
我有一个RandomForestClassifier模型,并希望设置random_state (可再现性),但是根据我使用的值,我在总体评估指标(F1评分)上得到了非常不同的值。
例如,我尝试用100个不同的random_state值来拟合相同的模型,在训练广告测试之后,最小的F1是0.64516129,最大的是0.808823529)。这是一个巨大的不同。
这种行为似乎也使比较两种模式非常困难。
有什么想法?
发布于 2016-03-11 19:47:38
如果random_state影响您的结果,这意味着您的模型具有高方差。在随机森林的情况下,这仅仅意味着您使用太小的森林,并应该增加树的数量(由于套袋-减少方差)。在scikit中-学习这是由构造函数中的n_estimators参数控制的。
为什么会发生这种事?每种ML方法都试图将误差最小化,从矩阵的角度出发,通常可以将误差分解为偏差和方差+noise。偏差只是指你的模型离真实值的期望值有多远--这部分误差通常来自一些先前的假设,比如对非线性问题使用线性模型等。方差是指当你在不同的数据子集上进行训练时,结果有多大的差异(或者使用不同的超参数,在随机方法中,随机种子是一个参数)。Hyperparameters由我们初始化,参数由模型本身在训练过程中学习。最后,噪声不是来自问题本身(或数据表示)的可还原错误。因此,在您的情况下-您只是遇到了高方差的模型,决策树是众所周知的它们极高的方差(和小的偏差)。因此,为了减少方差,Breiman提出了一种特殊的套袋方法,今天被称为随机森林。森林越大,方差减少的效果越强。特别是具有1棵树的森林具有很大的方差,对于中等大小的问题,1000棵树的森林几乎是确定性的。
总之,你能做些什么?
https://stackoverflow.com/questions/35944725
复制相似问题