我正在运行一个 LASSO,它有一些分类变量预测变量和一些连续变量。我有一个关于分类变量的问题。我理解的第一步是将它们中的每一个都分解成假人,将它们标准化以进行公平惩罚,然后回归。处理虚拟变量有几种选择:
包括每个因素的除一个假人之外的所有假人,留下一个作为参考水平。虚拟系数的解释与排除的“参考”类别有关。截距现在是参考类别的平均响应。
对每个因素中的变量进行分组,以便全部排除或全部包含在内。我相信这就是@Glen_b在这里的建议:
通常,是的,您将所有因素放在一起。有几个 R 包可以做到这一点,包括 glmnet
包括所有级别,正如@Andrew M在这里所建议的那样:
您可能还想更改默认对比函数,默认情况下会忽略每个因素的一个级别(治疗编码)。但是由于 lasso 惩罚,这不再是可识别性所必需的,实际上使所选变量的解释更加复杂。为此,请设置
contr.Dummy <- function(contrasts, ...){ conT <- contr.treatment(contrasts=FALSE, ...) conT } options(contrasts=c(ordered='contr.Dummy', unordered='contr.Dummy'))
现在,无论选择什么水平的因子,您都可以认为它表明这些特定水平很重要,而不是所有省略的水平。在机器学习中,我看到这种编码称为 one-hot 编码。
问题:
- 在每种方法下,截距和系数的解释是什么?
- 选择其中之一时需要考虑哪些因素?
- 我们是否对虚拟系数进行缩放,然后将它们解释为从关闭到开启的变化?