随机森林:每个班级中样本数量的影响

时间:2018-02-02 08:02:03

标签: python machine-learning scikit-learn random-forest

我一直在使用sklearn RandomForestClassifier进行一些实验。我正在多批次培训多棵树并使用以下方法合并:

def combine_rfs(rfList):
   rf1 = rfList[0]

   for i in range(1,len(rfList)):
      rf1.estimators_ += rfList[i].estimators_
   rf1.n_estimators = len(rf1.estimators_)

   return rf1

我注意到如果我在A类和B类中给出相同数量的样本,最终树的分类往往是A类40-60%,B类40-60%,尽管我会有预计它在A中会更多,而在B中会更少。

基本上我所看到的是,无论测试数据中这些类别的实际比例如何,A / B中的样本比例都将决定这些类别的分类比例。

如何减轻这种影响?

1 个答案:

答案 0 :(得分:2)

您可以查看stratified cross-validation,这是一种确保测试和验证数据集中相对类频率相同的方法。

如果您的火车组相对地包含很多B类,那么您的分类器将预测该实例的更多内容是有道理的。分层交叉验证通过使三组(训练,测试,验证)更相似来克服这个问题。