我在交叉验证中发现了一个类似的问题,但没有得到解答;如果这已得到答复,我深表歉意。
我正在尝试在 R 中处理的回归模型中的特征交互。我现在唯一关心的是构建和缩放/居中特征。
是否存在缩放/居中数字交互特征的“统计上更正确”的方法?我考虑过的选项包括:
- 选项 1:缩放/居中所有数字特征,然后计算交互值
- 这里的第二个问题......我是否需要重新缩放/重新居中这些值?
- 选项 2:计算所有特征的交互,然后同时缩放/居中
好吧,我有直方图伴随下面的代码,但我没有足够的代表来发布图片链接。
选项 1 的示例:
# taking a small sample of "airquality" data
set.seed(2)
my_aq <- data.frame(airquality[sample(1:nrow(airquality), 100), ])
# create a scaled/centered version
my_aq_pp_scaler <- caret::preProcess(my_aq, method=c("center", "scale"))
my_aq_scaled <- predict(my_aq_pp_scaler, my_aq)
# computing interactions with pre-scaled data
denmat_prescaled <- as.data.frame(model.matrix(~ .^2 - 1, data=my_aq_scaled))
hist(denmat_prescaled$`Ozone:Solar.R`, col='light blue', main="Pre-interaction-scale: Not Rescaled")
然后,如果我重新缩放/重新居中,我就剩下这个了,这看起来很好:
# 1) do I need to scale/center again?
denmat_pp_scaler <- caret::preProcess(denmat_prescaled, method=c("center", "scale"))
denmat_prescaled_scaled <- predict(denmat_pp_scaler, denmat_prescaled)
hist(denmat_prescaled_scaled$`Ozone:Solar.R`, col='light pink', main="Pre-interaction-scale: Also Rescaled")
我认为从机器学习/建模的角度来看,这看起来像是我想要的。因此,如果我选择选项 1,我可能会重新缩放/重新居中。
选项 2 的示例:
# postscaled - not scaling until AFTER interactions have been computed
denmat2 <- model.matrix(~ .^2 - 1, data=my_aq)
denmat2_pp_scaler <- caret::preProcess(denmat2, method=c("center", "scale"))
denmat_postscaled <- as.data.frame(predict(denmat2_pp_scaler, denmat2))
hist(denmat_postscaled$`Ozone:Solar.R`, col='light green', main="No Pre-scale: Just Post-interaction-scale")
问题:
这些方法中的一种在统计上是否比另一种更可靠?或者这是那些“取决于”类型的情况之一。我发现有趣的是,看看这些不同的方法对最终值的整体偏差有多大影响。这不是我预料到的。如果有人可以对哪个更好以及为什么它/无关紧要进行更严格的统计解释,那就太棒了。谢谢!
编辑:
我现在使用的主要模型是极端梯度提升(xgboost),目标设置为“reg:linear”,但我也可能会尝试使用 glmnet 进行套索和岭回归。
编辑2
由于一些支持,我现在有足够的代表来添加我的直方图图像。