【问题标题】:How to set up my own probabilistic threshold in random forest?如何在随机森林中设置我自己的概率阈值?
【发布时间】:2016-12-31 09:14:22
【问题描述】:

我使用 python 在具有二进制目标类的不平衡数据集上运行随机森林。我想将默认概率阈值 0.5 更改为另一个值以提高召回率和精度。到目前为止,我找不到任何可用于执行此任务的已定义方法或类。任何人都可以请教一种方法还是意味着我应该自己编写代码?干杯

【问题讨论】:

  • 你在运行哪个库? Python 没有“随机森林”。
  • @AmiTavory 我使用'from sklearn.ensemble import RandomForestClassifier'
  • 你可以使用p = clf.predict_proba(X)得到概率,然后计算Y = p > custom_value
  • @tihom 对。所以没有定义的方法可以使用,我应该手动编码?
  • @LUSAQX 我不知道任何已定义的方法或参数可以立即执行此操作

标签: python machine-learning random-forest threshold


【解决方案1】:

scikit-learn 的 RandomForestClassifier 没有固定的阈值来分配一个类来采样。正如您在RandomForestClassifier.predict 的源代码中所见,它只返回最可能的类。当然你可以使用@thiom 建议的方法,但我很难想象这会提高准确率和召回率。

例如,如果您选择的阈值是 0.7 并且类别概率是 0.6 和 0.4,您分配什么类别?一个都没有?

作为替代方案,您可以尝试使用 RandomForestClassifier 的 class_weight 选项来增加代表性不足的班级的权重。

【讨论】:

  • 我同意。改变预测概率并不是提高不平衡类的精度/召回率的可靠方法。您将需要更新模型训练策略,例如使用类权重(如 Rene 建议的那样)或更改采样频率。
猜你喜欢
  • 2017-12-04
  • 2016-01-28
  • 2018-09-21
  • 2018-06-30
  • 1970-01-01
  • 2012-12-20
  • 2019-03-25
  • 2015-05-03
  • 2012-10-24
相关资源
最近更新 更多