随机森林袋外变量重要性

randomForest out-of-bag variable importance

我想了解 %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

145% 这个数字告诉你,你的模型错的远比对的多

我承认这有点令人困惑。 %Var(y) 指的是误差与总目标方差相比的百分比方差。而 % Var explained: 指的是模型解释的百分比方差。

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

在下面的可重现示例中,我 shuffle/permute 目标 (y's) 因此 RF 模型没有机会进行预测。您会看到它的表现非常糟糕,因为误差超过 100% 并且解释的方差小于 0%。在解释方差为 0% 时,您的模型与预测任何等于总均值的观测值具有相同的准确性。

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