【问题标题】:Retrieving probabilities of outcomes from a random forest从随机森林中检索结果的概率
【发布时间】:2017-04-20 23:26:45
【问题描述】:

我在一个包含 7 个变量的大约 1000 个观察值的数据集上构建了一个随机森林模型(使用包“party”的 cforest)。响应是二元的(比如结果 A 和结果 B),并且 6 个预测变量都是分类的。我的问题是我想获得 1000 个结果中的每一个的概率,就像在逻辑回归模型中一样。在后一种情况下,我们可以使用 predict(yourmodel, type="response") 来获取每个结果的概率,在这种情况下,当 p=0.5 时结果 B 是有利的。

似乎在对随机森林对象应用预测时,我只能得到每个观察的预测结果(即 A 或 B)。是否有解决方法来检索预测响应的概率?

非常感谢您的帮助!

C.B.

【问题讨论】:

    标签: r random-forest predict


    【解决方案1】:

    来自文档:

    键入一个响应,概率。或投票,指示输出的类型:预测值、类概率矩阵或投票计数矩阵。类是允许的,但会自动转换为“响应”,以实现向后兼容性。

    所以试试这个:

    probs <- predict(FIT, newdata, type="probs")
    

    【讨论】:

    • 感谢您的帮助。我已经尝试过了,但我仍然只需要访问列表中每个元素的第二个元素。尝试以下返回第一行中第二个结果的概率: predict.prob
    【解决方案2】:

    现在我知道如何生成和提取 p 值,就像查看逻辑回归的预测响应一样:

    1) 生成两种结果的预测概率

    probs <- predict(FIT, newdata, type="prob") # thanks to thc
    

    2) 检索每行第二个结果的概率,即逻辑回归中第二个级别的概率:

    > predict.prob<-unlist(lapply(probs, '[[', 2))
    

    我希望这将有助于其他对我们如何从列表中提取概率感兴趣的读者。

    我要感谢 thc 和 tylers 的建议和帮助!

    C.B.

    【讨论】:

      【解决方案3】:

      我使用 h2o randomforest 包来训练我的模型。 在进行预测时,每个观察值都会返回一个概率值(模型对其置信度)

      https://cran.r-project.org/web/packages/h2o/h2o.pdf

      看看

      【讨论】:

      • 感谢分享。我不想使用另一个包,而且 h2o 对我来说似乎有点棘手。
      猜你喜欢
      • 2015-11-27
      • 2016-01-28
      • 2012-12-20
      • 2015-05-03
      • 2012-10-24
      • 2019-08-12
      • 2017-07-02
      • 2016-06-09
      • 2014-05-28
      相关资源
      最近更新 更多