包括scale= F作为插入符号列中preProcess的参数吗?

问题描述

我正在处理分类问题。在我的数据处理过程中,我使用 bestnormalize()估计了向正态性的最佳转换。在此步骤中,我将所有预测变量标准化。

我将PCA用作预处理步骤,以在训练步骤中对数据进行解相关。我无法包含其他参数 scale。= F 以防止数据再次标准化。插入符号文档指出“如果请求PCA,但不要求居中和缩放,则值仍将居中和缩放。” 。我要问的是,两次标准化是否会引起问题,以及如何在预处理步骤中使用PCA而不再次标准化预测变量。

我相信以下内容无效

my_ctrl <- trainControl(method='repeatedcv',number=5,repeats=5,search='grid',preProcoptions = list(thresh=0.95,scale.=F),#including scale argument via preProcoptions
                        classprobs = T,summaryFunction = twoClassSummary,savePredictions=T,index=createResample(y_train,5))

lg <- train(y=y_train,x=X_train,method='glm',trControl=my_ctrl,preProcess='pca',metric="ROC",family="binomial")

解决方法

PCA有两种流行的方式:prcomp(x,scale = FALSE)princomp(x,cor = FALSE,scores = TRUE)

也许您可以尝试这些方法中的一种,因此您无需进行两次标准化。 此外,如果两次标准化,这也不成问题,因为第二次预测变量已经标准化,因此不会发生任何事情。

如果这有帮助,请告诉我:)

,

您可能考虑的另一种解决方案是通过将 bestNormalize 设置为选项来告诉 standardize = FALSE 不要标准化。您不会进行双重标准化,因为标准化会发生在后面的 PCA 步骤中。