2016-02-19 134 views
1

我正在使用隨機森林作爲迴歸問題來預測給定的Test-X集合(特性的新值)的Test-Y的標籤值。該模型已經通過給定的Train-X(特徵)和Train-Y(標籤)進行了訓練。 R的「randomForest」對預測Test-Y的數值非常有幫助。但這不是我想要的。如何從迴歸隨機森林中獲得概率密度函數?

我只想用隨機森林來產生一個概率密度函數,而不僅僅是一個數字。我搜索了好幾天的解決方案,這裏是我迄今發現:

  1. 「隨機森林」不會產生概率迴歸,但只有在分類。 (通過「預測」和設置類型=概率)。

  2. 使用「quantregForest」提供了一種製作和可視化預測間隔的好方法。但仍然不是概率密度函數!

還有其他想法嗎?

+0

'quantregForest'確實提供了一個概率密度,它就是你可以預測的'ecdf'。 –

回答

2

請參閱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轉換爲使用核密度估計器的密度估計。