我正在训练随机森林模型,并使用一致的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
是否会影响模型的泛化?
答案 0 :(得分:1)
random_state:int,RandomState实例或无,可选(默认=无)
如果为int,则random_state是随机数生成器使用的种子;否则为false。如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是np.random使用的RandomState实例。
通常,random_state
最初用于设置内部参数,因此您可以确定地重复训练。现在,您可以更改其他超参数(例如,树的数量)以比较结果。
一个缺点是您找不到全局最优值。但是您的结果听起来确实不错,准确度为0.98
。
答案 1 :(得分:1)
random_state
不会影响模型的概括。实际上,在调整random_state
,n_estimators
等超级参数时,最好的做法是使depth
具有相同的值。这将确保您的性能不受以下因素的影响随机的初始状态。
此外,当您拥有诸如不平衡数据集之类的数据时,也不建议使用“准确性”来衡量模型的性能。
ROC或PR曲线下的面积可能是您可以使用的少数几个最好的东西之一,但是有很多可用的指标。参见here
答案 2 :(得分:1)
在最优性的几个方面,甚至对于简单的概念,学习最优决策树的问题都是NP完全的。因此,实用的决策树学习算法基于启发式算法(例如贪婪算法),其中在每个节点上做出局部最优决策。这样的算法不能保证返回全局最优决策树。可以通过在整体学习器中训练多棵树来缓解这种情况,在该学习器中,特征和样本通过替换随机抽样。
random_state用于子特征的随机选择,小于总特征和子样本。此参数控制随机选择。