如何从回归随机森林中获得概率密度函数?

Posted

技术标签:

【中文标题】如何从回归随机森林中获得概率密度函数?【英文标题】:How can I get the probability density function from a regression random forest? 【发布时间】:2016-06-01 05:32:51 【问题描述】:

我正在使用随机森林来解决回归问题,以预测给定 Test-X 集的 Test-Y 的标签值(新的特征值)。该模型已经在给定的 Train-X(特征)和 Train-Y(标签)上进行了训练。 R 的“randomForest”在预测 Test-Y 的数值方面非常有用。但这不是我想要的。

我想使用随机森林来生成概率密度函数,而不仅仅是一个数字。我搜索了几天的解决方案,到目前为止我找到了:

    “randomForest”不会产生回归概率,而只会产生分类概率。 (通过“预测”并设置 type=prob)。

    使用“quantregForest”提供了一种创建和可视化预测区间的好方法。但仍然不是概率密度函数!

对此还有其他想法吗?

【问题讨论】:

quantregForest 确实提供了概率密度,它是您可以预测的ecdf 【参考方案1】:

请看predict.randomForest函数的predict.all参数。

library("ggplot2")
library("randomForest")

data(mpg)
rf = randomForest(cty ~ displ + cyl + trans, data = mpg)

# Predict the first car in the dataset
pred = predict(rf, newdata = mpg[1, ],  predict.all = TRUE)
hist(pred$individual)

500 个“基本”预测的直方图如下所示:

【讨论】:

【参考方案2】:

您还可以将 quantregForest 与非常精细的分位数网格一起使用,使用 R 函数 ecdf 将它们转换为“累积分布函数 (cdf)”,然后使用核密度估计器将此 cdf 转换为密度估计。

【讨论】:

以上是关于如何从回归随机森林中获得概率密度函数?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 随机决策森林:如何获得后验概率

如何获得随机森林多类中一类的预测概率?

如何在 Python scikit-learn 中输出随机森林中每棵树的回归预测?

随机森林分类:如何从“probabilityCol”推断类别概率

pyspark 随机森林回归器预测多类

R语言 | randomForest包的随机森林回归模型以及对重要变量的选择