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

How can I get the probability density function from a regression random forest?

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

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

  1. "randomForest" 不产生回归概率,只产生分类概率。 (通过 "predict" 和设置 type=prob)。

  2. 使用 "quantregForest" 提供了一种制作和可视化预测区间的好方法。但还是不是概率密度函数!

对此还有其他想法吗?

请查看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 个 "elementary" 预测的直方图如下所示:

您还可以使用具有非常精细的分位数网格的 quantregForest,使用 R 函数 ecdf 将它们转换为 "cumulative distribution function (cdf)",然后使用核密度估计器将此 cdf 转换为密度估计。