R cv.glmnet 错误与手动计算不符

问题描述 投票:0回答:1

模型报告的测量值与我计算的手动误差不符。我正在使用 R 包

cv.glmnet
中的
glmnet
函数。我相信当我将函数变量
keep
设置为
True
时,交叉验证拟合将保留在
fit.preval
中。但是,我使用
fit.preval
手动计算均方误差和最小 cv 误差的指数与模型摘要所说的不匹配。我的手工计算总是少很多。

library(glmnet)

x <- data.frame(runif(100),runif(100),runif(100),runif(100),runif(100))
y <- data.frame(runif(100),runif(100),runif(100))

cvfit <- cv.glmnet(x = as.matrix(x), y = as.matrix(y), keep = T, family = "mgaussian")
mean(unlist((cvfit$fit.preval[,,cvfit$index["min",]] - y)^2))
## [1] 0.08803571
cvfit
## Call:  cv.glmnet(x = as.matrix(x), y = as.matrix(y), keep = T, family = "mgaussian") 

## Measure: Mean-Squared Error 

##      Lambda Index Measure      SE Nonzero
## min 0.06003     1  0.2641 0.01158       1
## 1se 0.06003     1  0.2641 0.01158       1

我手动计算的均方误差与模型测量值不匹配。

r cross-validation glmnet mse
1个回答
0
投票

对于“mgaussian”响应,cv 计算误差的均方 Frobenius 范数。 所以 errormin = (cvfit$fit.preval[,,cvfit$index["min",]] - y)^2 平均值(行总和(误差最小值))

将匹配报告的错误

© www.soinside.com 2019 - 2024. All rights reserved.