【问题标题】:Manipulate Random forest to produce a score rather than 0/1 label操纵随机森林以产生分数而不是 0/1 标签
【发布时间】:2016-05-14 04:12:09
【问题描述】:

这是我的情况:我可以使用random forest 来解决二分类问题;请注意,给定一个特征向量,典型的random forest 模型可以预测它是属于1 组还是0 组,从而进行二分类。

但是,由于多种原因,对于每个特征向量,我希望有一个从 0 到 1 的分数,而不是 0/1 标签。理想情况下,分数越高,我就越有信心将该特征向量放入1 集合,否则,它应该属于0 集合。

所以还是0/1的分类,但是这次我想要一个0到1之间的分数,而不是0或者1标签。

有人告诉我,一些统计分类方法,例如naive Bayes,可以生成可能性分数,表示给定的特征向量应该放入0集合还是1集合。但是,我在我的数据集上使用naive Bayes 进行了快速的 10 倍验证,与random forest 相比,性能看起来很糟糕。

                precision    recall 
random forest   0.901        0.907
naive  Bayes    0.752        0.653

太糟糕了...我想保持random forest的高性能,以及获得score..

我知道random forest 具有特殊的树状结构,作为机器学习的新手,我不知道如何操纵random forest 来生成分数。

所以这是我的问题,在给定特征向量样本的情况下,如何操作 random forest 以生成从 0 到 1 的分数,而不是 01 标签?我够清楚吗?谢谢!

【问题讨论】:

  • 您的 RandomForest 库不能提供这些吗? sklearns RandomForests link 这样做是为了提供概率:输入样本的预测类别概率计算为森林中树木的平均预测类别概率。一棵树的类概率是同一类样本在叶子中的分数。 link
  • @sascha,谢谢您的回复。我正在使用 Sklearn 库。
  • sklearn 可以支持吗?让我看看……
  • 那就用 obj.predict_proba(X) 代替 obj.predict(X)
  • 对于完美主义者来说还有一句话:可以像here 中描述的那样后验地提高这些概率。尽管 sklearn 的这一部分不如其他部分好(功能、设计、添加到管道网格搜索的能力等等)。

标签: machine-learning random-forest


【解决方案1】:

这是随机森林的正常特征。最简单的方法是:森林中的每棵树都给出 0/1 的决定。取决策的平均值。您现在将获得 [0,1] 范围内的分数。

如果您的随机森林包不提供此功能,您应该寻找另一个提供的实现(或查看文档,您可能错过了它)。

例如,在 scikit learn 中,您调用 predict_proba 方法来获取概率,而只需调用 predict 来获取决策。

【讨论】:

  • 这正是我想要的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2019-09-05
  • 2020-01-31
  • 2015-09-22
  • 1970-01-01
  • 2019-03-14
  • 2013-01-10
  • 2017-04-14
  • 1970-01-01
相关资源
最近更新 更多