当模型装有缩放数据时,如何缩放新的观察结果以进行预测?

机器算法验证 r 回归 预言
2022-01-22 22:25:33

我理解缩放数据矩阵以在线性回归模型中使用的概念。例如,在 R 中,您可以使用:

scaled.data <- scale(data, scale=TRUE)

我唯一的问题是,对于我想要预测输出值的新观察,它们如何正确缩放?会不会,scaled.new <- (new - mean(data)) / std(data)

2个回答

对您的问题的简短回答是,是的 - scaled.new 的表达式是正确的(除了您想要sd而不是std)。

可能值得注意的是 scale 具有您可以使用的可选参数:

scaled.new <- scale(new, center = mean(data), scale = sd(data))

此外,由 scale (scaled.data) 返回的对象具有保存使用的数字居中和缩放(如果有)的属性,您可以使用:

scaled.new <- scale(new, attr(scaled.data, "scaled:center"), attr(scaled.data, "scaled:scale"))

当原始数据包含多于一列时,就会出现这种优势,因此需要考虑多种均值和/或标准偏差。

现在有更简单的方法可以做到这一点。比如包的preprocess功能caret

library(caret)
preproc <- preProcess(data, method = c("center", "scale")
scaled.new <- predict(preproc, newdata = new)

scale_bystandardize包装中

或使用receipes

library(recipes); library(dplyr)
rec <- recipe(~ ., data) %>% step_normalize(all_numeric()) %>% prep()
scaled.new <- rec %>% bake(new)