【问题标题】:Random Forest: Effect of Number of Samples in Each Class随机森林:每个类别中样本数量的影响
【发布时间】:2018-07-12 16:36:46
【问题描述】:

我一直在用 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 中的样本比例将决定这些类别的分类比例,无论这些类别在测试数据中的实际比例是多少。

如何减轻这种影响?

【问题讨论】:

  • 很遗憾,我无法为您提供解决方案,但可能会提示您正确的方向。听起来像一个经典的类不平衡问题,所以也许搜索更多关于随机森林中的类不平衡主题的信息可以帮助你。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 2014-09-19
    • 2016-05-25
    • 2014-04-20
    • 2021-03-12
    • 2017-05-13
    • 2018-04-05
    • 2017-03-15
    • 2018-07-10
    相关资源
    最近更新 更多