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

时间:2016-02-19 15:22:56

标签: r random-forest probability-density

我使用random-forest进行回归问题,以预测给定Test-X集(特征的新值)的Test-Y的标签值。该模型已经在给定的Train-X(特征)和Train-Y(标签)上进行了训练。 R的“randomForest”很好地预测了Test-Y的数值。但这不是我想要的全部。

我想使用random-forest来产生概率密度函数,而不仅仅是一个数字。我搜索了几天的解决方案,到目前为止我找到了这个:

  1. “randomForest”不会产生回归概率,只会产生分类。 (通过“预测”和设置类型=概率)。

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

  3. 还有其他想法吗?

2 个答案:

答案 0 :(得分:2)

请参阅predict.all功能的predict.randomForest参数。

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个“基本”预测的直方图如下所示:enter image description here

答案 1 :(得分:0)

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