我试图了解%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
答案 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