在sklearn的RandomForestClassifier中设置一个随机状态会偏向你的模型吗?

问题描述 投票:1回答:3

我正在训练一个随机的森林模型,并使用一致的random_state值。我的训练,测试和验证数据集的准确度也非常高(都在〜.98左右)。虽然少数类只占数据集的约10%。

如果你有兴趣,这里有一些代码:

model = RandomForestClassifier(n_jobs=-1, oob_score=True, random_state=310, n_estimators=300)
model.fit(subset, train.iloc[:,-1])

鉴于培训,验证和测试数据集的准确度得分很高,random_state是否会影响我的模型的推广?

random scikit-learn random-forest random-seed
3个回答
1
投票

random_state不会影响模型的泛化。事实上,当您调整random_staten_estimators等超高参数时,最好使depth具有相同的值。这将确保您的性能不受随机初始状态的影响。

此外,当您具有不平衡数据集等时,精度不是衡量模型性能的推荐指标。

ROC或PR曲线下面积可能是您可以使用的少数最好的东西之一,但有很多指标可用。见here


1
投票

random_state:int,RandomState实例或None,可选(默认=无)

如果是int,则random_state是随机数生成器使用的种子;如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是np.random使用的RandomState实例。

通常,random_state最初用于设置内部参数,因此您可以确定性地重复训练。现在,您可以更改其他超参数(例如树的数量)以比较结果。

缺点可能是您没有找到全局最优。但是你的结果听起来非常好,0.98的准确性。


1
投票

已知在最优性的几个方面甚至对于简单的概念,学习最优决策树的问题是NP完全的。因此,实际的决策树学习算法基于启发式算法,例如贪婪算法,其中在每个节点处进行局部最优决策。这种算法不能保证返回全局最优决策树。这可以通过在集合学习器中训练多个树来减轻,其中特征和样本随替换而被随机采样。

random_state用于子特征的随机选择,小于总特征和子样本。此参数控制随机选择。

© www.soinside.com 2019 - 2024. All rights reserved.