消极的R2R2在随机回归森林

机器算法验证 回归 随机森林 r平方
2022-04-16 16:37:50

我目前正在写关于随机森林的硕士论文,并且刚刚开始使用 R 软件。当我运行我的模型时,输出如下所示:

Mean of squared residuals: 0.0002441535
% Var explained: -8.82

谁能解释我为什么我得到一个负我一直认为负是不可能的。R2R2

1个回答

解释方差在这里定义为 R² = 1- SSmodel / SStotal = sum((ŷ-y)²) / sum((mean(y)-y)²)。= 1 - mse / var(y)。

平方 pearson 积矩相关性不能为负是正确的。

在 randomForest 函数的文档中写在值部分:rsq(仅限回归)“伪 R 平方”:1 - mse / Var(y)。

对这个负 R² 的简单解释是,您最好简单地预测任何样本等于总平均值。因此模型做得不是很好。

训练集 RF$predicted 的预测是袋外交叉验证的,任何 R^2 或其他性能度量也是如此。

library(randomForest)
obs = 500
vars = 100
X = replicate(vars,factor(sample(1:5,obs,replace=T)))
y = rnorm(obs)

RF = randomForest(X,y)

#var explained printed
print(RF)
cat("% Var explained: \n", 100 * (1-sum((RF$y-RF$pred   )^2) /
                                    sum((RF$y-mean(RF$y))^2)
                                  )
)

##pearson correlation R²(pearson)
cat("% Pearson cor: \n ", 100*cor(RF$y,RF$predicted)^2)
##spearman correlation R²(spearman)
cat("% spearman cor: \n ", 100*cor(RF$y,RF$predicted,method="s")^2)