我目前正在写关于随机森林的硕士论文,并且刚刚开始使用 R 软件。当我运行我的模型时,输出如下所示:
Mean of squared residuals: 0.0002441535
% Var explained: -8.82
谁能解释我为什么我得到一个负?我一直认为负是不可能的。
我目前正在写关于随机森林的硕士论文,并且刚刚开始使用 R 软件。当我运行我的模型时,输出如下所示:
Mean of squared residuals: 0.0002441535
% Var explained: -8.82
谁能解释我为什么我得到一个负?我一直认为负是不可能的。
解释方差在这里定义为 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)