randomForest out-of-bag变量重要性

时间:2016-03-21 17:57:41

标签: r random-forest variance

我试图了解%var如何超过100。

我正在使用脚本:

require(randomForest)

start <- "B_fixed"
suffix <- ".txt"
dataDir <- "/Users/Desktop/"


mod1 <- read.table(paste(dataDir,start,suffix,sep=""),sep="\t",header=T)


form <- as.formula(Ksat_f~.)

Ksat_rf <- randomForest(form, data=mod1[c(1:14)],na.action=na.omit, ntree=1000, 
              replace=F,importance=T, do.trace=50, keep.forest=T,keep.inbag=T)

我得到了输出:

     |      Out-of-bag   |
Tree |      MSE  %Var(y) |
  50 |    3.258   114.85 |
 100 |     3.06   107.87 |
 150 |    3.096   109.12 |
 200 |    3.054   107.66 |
 250 |    3.014   106.25 |
 300 |    3.012   106.15 |
 350 |    2.978   104.96 |
 400 |    2.971   104.73 |
 450 |    2.952   104.06 |
 500 |    2.941   103.66 |
 550 |    2.936   103.49 |
 600 |    2.928   103.22 |
 650 |    2.933   103.39 |
 700 |    2.934   103.44 |
 750 |     2.92   102.94 |
 800 |    2.929   103.23 |
 850 |    2.953   104.10 |
 900 |    2.957   104.24 |
 950 |    2.951   104.04 |
1000 |    2.931   103.32 |

这是使用14个变量.....如果我使用一个变量,%var可以达到145%。

一切都会有所帮助。

谢谢

-t

1 个答案:

答案 0 :(得分:1)

145%的数字告诉您,您的模型远比正确

错误

我承认这有点令人困惑。 % Var explained:是指与总目标差异相比的误差百分比方差。而set.seed(1) library(randomForest) X <- data.frame(replicate(5,rnorm(1000))) y <- apply(X,1,sum) y <- sample(y) Data <- data.frame(X,y) form <- as.formula(y~.) rf <- randomForest(form, data=Data,na.action=na.omit, ntree=1000,replace=F,importance=T, do.trace=50, keep.forest=T,keep.inbag=T) | Out-of-bag | Tree | MSE %Var(y) | 50 | 5.81 108.91 | 100 | 5.671 106.31 | 150 | 5.651 105.95 | 1000 | 5.609 105.15 | print(rf) Call: randomForest(formula = form, data = Data, ntree = 1000, replace = F, importance = T, do.trace = 50, keep.forest = T, keep.inbag = T, na.action = na.omit) Type of random forest: regression Number of trees: 1000 No. of variables tried at each split: 1 Mean of squared residuals: 5.608769 % Var explained: -5.15 是指模型解释的百分比差异。

注意:105.15%+( - 15.15%)= 100%

在下面的可重复示例中,我对目标进行了混洗/置换(y's),因此RF模型没有机会进行预测。您会发现它的表现非常糟糕,因为误差超过100%且解释的方差小于0%。在0%解释方差时,您的模型与预测任何等于平均值​​的观察值具有相同的准确度。

0.0.0.0