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

3
我正在使用随机森林来解决回归问题,以预测给定一组测试特征值 Test-X 的标签值 Test-Y。该模型已经在给定的训练特征 Train-X 和训练标签 Train-Y 上进行了训练。R 语言的 "randomForest" 在预测 Test-Y 的数值方面表现得非常好。但这还不是我想要的全部。
我希望随机森林能够生成概率密度函数,而不仅仅是一个数字。我已经搜索了几天,目前找到的解决方案如下:
1. "randomForest" 不会为回归问题生成概率,只适用于分类问题(通过 "predict" 并设置 type=prob)。
2. 使用 "quantregForest" 可以提供一种很好的方法来制作和可视化预测区间。但仍然不能生成概率密度函数!
对此您有什么其他想法吗?

quantregForest 提供概率密度,但你可以预测的是 ecdf - catastrophic-failure
2个回答

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

0

你也可以使用quantregForest和非常细的分位数网格,将它们转换为“累积分布函数(cdf)”,使用R函数ecdf将其转换为cdf,并使用核密度估计器将该cdf转换为密度估计。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接