缩放生产数据
Posted
技术标签:
【中文标题】缩放生产数据【英文标题】:Scaling production data 【发布时间】:2020-09-24 07:33:57 【问题描述】:我有一个数据集,比如 Data,它由分类变量和数值变量组成。清理它们后,我只使用了缩放数值变量(猜测分类不能缩放)
Data <- Data %>% dplyr::mutate_if(is.numeric, ~scale(.) %>% as.vector)
然后我将其随机分成 70-30% 使用
set.seed(123)
sample_size = floor(0.70*nrow(Data))
xyz <- sample(seq_len(nrow(Data)),size = sample_size)
Train_Set <- Join[xyz,]
Test_Set <- Join[-xyz,]
我已经使用 Ranger 构建了一个分类模型,比如 model_rang,使用 Train_Set 并使用 Test_Set 对其进行了测试。
如果一个新数据,比如 new_data,到达生产环境,在清理它之后,是否足以以上述方式对其进行扩展?我是说
new_data <- new_data %>% dplyr::mutate_if(is.numeric, ~scale(.) %>% as.vector)
然后用它来预测结果使用(有两个类 0 和 1 和 1 是感兴趣的)
probabilities <- as.data.frame(predict(model_rang, data = new_data, num.trees = 5000, type='response', verbose = TRUE)$predictions)
caret::confusionMatrix(table(max.col(probabilities) - 1,new_data$Class), positive='1')
规模是否像数据中那样正确完成,或者我是否遗漏了生产数据中的任何关键内容?
或者,我是否必须单独缩放 Train_Set 并取每个变量的标准差和相关的平均值来缩放 Test_Set,并且当生产过程中的新数据到达时,将来自 Train_Set 的旧标准差和平均值应用于每个新数据集?
【问题讨论】:
我觉得这个链接很有趣:stats.stackexchange.com/questions/89172/… 【参考方案1】:当您对数据进行缩放时,您会从中减去平均值并除以标准差。新数据中的均值和标准差可能与用于构建模型的(训练数据)中的不同。
想象一下,在您的随机森林中,一个变量被拆分为 0.555(缩放数据),现在在您的新数据中,标准差更低,低于 0.555 的值现在已经结束,并将被分类为不同的类别.
您可以做的一件事是存储您指向的帖子的属性:
set.seed(111)
data = data.frame(A=sample(letters[1:3],100,replace=TRUE),
B=runif(100),C=rnorm(100))
num_cols = names(which(sapply(data,is.numeric)))
scale_params = attributes(scale(data[,num_cols]))[c("scaled:center","scaled:scale")]
newdata = data.frame(A=sample(letters[1:3],100,replace=TRUE),
B=runif(100),C=rnorm(100))
newdata[,num_cols] = scale(newdata[,num_cols],
center=scale_params[[1]],scale=scale_params[[2]])
【讨论】:
+1 以获得明确的答案和示例!顺便说一句,这个理由是否也适用于问题中指定的Test_Set
,还是仅适用于new_data
等生产数据?如果第一个是真的,那么我们是否可以说在训练和测试集拆分之前可以对Data
进行缩放?
感谢@RicS 的反馈。您通常在拆分为测试和训练之前缩放数据。更有意义,在 OP 的示例中,它是这样做的。所以它只适用于 new_data
谢谢@StupidWolf。顺便说一句,我在 SO ***.com/questions/49444262/… 上看到了这个答案,这与你在评论中所说的相反。你怎么看?
还有这些链接stats.stackexchange.com/questions/267012/…和datascience.stackexchange.com/questions/54908/…
您分享的第一个链接,接受的答案说:“因此,您应该对训练数据执行特征归一化。然后对测试实例也执行归一化,但这次使用的均值和方差训练解释变量。”以上是关于缩放生产数据的主要内容,如果未能解决你的问题,请参考以下文章
cloudformation 堆栈更新和启动模板版本/自动缩放组的问题
R数据缩放值标准缩放(standardization scaling)以及最小最大缩放(Min-Max scaling)