如何从回归随机森林中获得概率密度函数?
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 转换为密度估计。
【讨论】:
以上是关于如何从回归随机森林中获得概率密度函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python scikit-learn 中输出随机森林中每棵树的回归预测?