如何使用测试数据计算 R 中训练模型的 MSE?

Posted

技术标签:

【中文标题】如何使用测试数据计算 R 中训练模型的 MSE?【英文标题】:How can I use test data to calculate the MSE for a training model in R? 【发布时间】:2022-01-09 06:23:48 【问题描述】:
set.seed(1234)
training.samples=RealEstate$Y.house.price.of.unit.area%>%createDataPartition(p=0.75,list=FALSE)
train.data=RealEstate[training.samples,]
test.data=RealEstate[-training.samples,]
Price.Model1=lm(Y.house.price.of.unit.area~factor(X1.transaction.date)+
                        X2.house.age+
                        X3.distance.to.the.nearest.MRT.station+
                        X4.number.of.convenience.stores+
                        X5.latitude+
                        X6.longitude,
                data=train.data)

这是正确的吗?

mean((test.data$Y.house.price.of.unit.area-predict(Price.Model1))^2)

我收到了这个警告,所以我不确定我是否做得对:

test.data$Y.house.price.of.unit.area 中的警告 - predict(Price.Model1) : 较长的对象长度不是较短对象长度的倍数

【问题讨论】:

使用newdata参数predict。像这样:predict(Price.Model1, newdata = test.data). 【参考方案1】:

均方误差定义为:

在 R 中计算它:

    用训练数据拟合模型 使用测试数据通过predict() 函数获得预测 使用测试数据的预测值和实际值计算 MSE

使用一些虚假数据...

test_ix <- floor(runif(nrow(mtcars) * 0.2, 1, nrow(mtcars)))
train <- mtcars[-test_ix, ]
X_test <- mtcars[test_ix, ] %>%
  select(!mpg)

y_test <- mtcars[test_ix, "mpg"]

fit <- lm(mpg ~ ., data = train)
yhat <- predict(fit, X_test)

mse <- mean((y_test - yhat) ** 2)

要获得 RMSE,取 MSE 的平方根。

【讨论】:

以上是关于如何使用测试数据计算 R 中训练模型的 MSE?的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用lm构建线性回归模型并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary)模型训练(测试)集自由度计算模型训练(测试)集残差标准误计算

计算 DNNRegressor 模型的 MAE、MSE 和 R2 指标

无法绘制MAPE和MSE的训练和测试值吗?

如何在自动编码器模型上绘制ROC曲线并计算AUC?

R中的并行计算:如何使用内核

R语言vtreat包自动处理dataframe的缺失值计算所有数据列的均值和方差并对所有数据列进行标准化缩放在将测试数据提供给模型之前使用训练数据集的处理方式变换测试数据(同样的数据预处理方式)