如何处理 LASSO 中的分类预测变量

机器算法验证 分类数据 回归系数 套索 截距 分类编码
2022-02-14 17:53:51

我正在运行一个 LASSO,它有一些分类变量预测变量和一些连续变量。我有一个关于分类变量的问题。我理解的第一步是将它们中的每一个都分解成假人,将它们标准化以进行公平惩罚,然后回归。处理虚拟变量有几种选择:

  1. 包括每个因素的除一个假人之外的所有假人,留下一个作为参考水平。虚拟系数的解释与排除的“参考”类别有关。截距现在是参考类别的平均响应。

  2. 对每个因素中的变量进行分组,以便全部排除或全部包含在内。我相信这就是@Glen_b在这里的建议:

    通常,是的,您将所有因素放在一起。有几个 R 包可以做到这一点,包括 glmnet

  3. 包括所有级别,正如@Andrew M在这里所建议的那样:

    您可能还想更改默认对比函数,默认情况下会忽略每个因素的一个级别(治疗编码)。但是由于 lasso 惩罚,这不再是可识别性所必需的,实际上使所选变量的解释更加复杂。为此,请设置

    contr.Dummy <- function(contrasts, ...){
       conT <- contr.treatment(contrasts=FALSE, ...)
       conT
    }
    options(contrasts=c(ordered='contr.Dummy', unordered='contr.Dummy'))
    

    现在,无论选择什么水平的因子,您都可以认为它表明这些特定水平很重要,而不是所有省略的水平。在机器学习中,我看到这种编码称为 one-hot 编码。

问题:

  1. 在每种方法下,截距系数的解释是什么?
  2. 选择其中之一时需要考虑哪些因素?
  3. 我们是否对虚拟系数进行缩放,然后将它们解释为从关闭到开启的变化?
1个回答

在 LASSO 回归中处理分类变量时,通常使用分组 LASSO 将对应于特定分类变量的虚拟变量保持在一起(即,您不能仅从模型中排除一些虚拟变量)。一种有用的方法是在Choi、Park 和 Seo (2012) 中描述的 Modified Group LASSO (MGL)在这种方法中,惩罚与一组虚拟变量向量的范数成正比。您仍然在此方法中保留参考类别,因此仍包含截距项。这使您可以处理多个分类变量而不会出现可识别性问题。β

在回答您的具体问题时:

(1) LASSO 是一种系数估计方法,但系数本身由回归的初始模型方程定义。因此,系数的解释与标准线性回归中的相同;它们表示由于解释变量的变化而导致的预期响应的变化率。

(2) 上述文献建议对变量进行分组,但保留一个参考类别。这隐含地假设您正在将分类变量的存在与删除它但仍具有截距项的模型进行比较。

(3) 如上所述,估计方法不影响对模型语句设定的系数的解释。