Ridge\Lasso -- 虚拟指标的标准化

机器算法验证 分类数据 预测模型 套索 正常化 标准化
2022-03-06 01:06:40

假设我有一个数据集,其中包含 5000 行和大约 150 列(5000 个样本,150 个预测变量/特征),我对应用岭回归或套索回归感兴趣。(让我们假设使用 logit 链接函数——如果重要的话)。同样,如果重要的话,我们会说一些特征是高度相关的——例如,其中一半以上实际上是虚拟变量指标。让我们也说我们更关心预测的准确性而不是模型的可解释性(如果我们想要一个清晰的解释,我们不会使用惩罚回归!)

现在,惩罚线性模型的标准建议是对数据进行标准化(我相信 Tibshirani 总是建议这样做。标准化,我的意思是中心和尺度的均值和标准差)。但是,这会破坏数据集中固有的很多结构。我认为这样做没有意义 - 因为这将导致模型中始终存在二进制指标,除非 Lasso 将它们归零。

有没有更好的方法来处理这个问题?可以规范化将保留结构的行(例如,Normalizer()在 sklearn 中),但实际上这给了我截然不同的结果。

是否应该标准化所有输入?只有非二进制的?那么序数类别呢(比如说一个列有 1,2,3,... 衡量,比如说,教育年限)。标准化或最小/最大缩放?

澄清:通过标准化二进制输入,您可以消除数据集中的稀疏性,因为您必须首先减去平均值。这就是我所说的“破坏结构”。

1个回答

您已经确定了一个重要但可能未被充分重视的问题:在惩罚回归中没有一种万能的方法来规范化分类变量。

归一化试图确保对所有预测变量公平地应用惩罚,而不管测量的规模如何。您不希望基于长度的预测变量的惩罚取决于您是以毫米还是英里为单位测量长度。因此,在惩罚之前以均值为中心并以标准差进行缩放对于连续预测器是有意义的。

但是,分类预测变量的“测量尺度”是什么意思?对于具有 50% 流行率的二元预测变量,归一化将原始值 0 和 1 分别转换为 -1 和 +1,在归一化尺度上的总体差异为 2 个单位。对于具有 1% 流行率的二元预测变量,原始值 0 和 1 转换为大约 -0.1 和 +9.9,在归一化尺度上的总体差异为 10 个单位。

在具有这些属性的二元预测变量之间,归一化因此在它们的相对变换尺度中引入了一个因子 5,从而在它们对惩罚的敏感性中引入了与原始 0/1 编码的情况相比。那是你要的吗?并且归一化的分类预测变量是否更“无标度”,以便二元和连续预测变量在某种意义上相对于彼此受到公平惩罚?您必须根据对主题的了解和您的预测目标自己做出决定。

Harrell 的回归建模策略在第 9.10 节“惩罚最大似然估计”中对此进行了介绍。正如他所指出的,多类别预测变量还有一个问题,因为归一化的结果可能会因参考值的选择而异。在这种情况下,请尝试将同一分类预测变量的所有系数与其均值的差异一起惩罚,而不是单独惩罚每个系数。

您在选择如何处罚方面确实有一定的灵活性。一些标准软件,如glmnet()R 中的,允许在预测变量之间进行差异惩罚,Harrell 讨论了它作为对预测变量值本身进行预归一化的替代方法,以便最终结果是无标度的。但是您仍然必须解决您希望将什么视为分类预测变量的“规模”的问题。

如果您没有关于如何最好(如果有的话)扩展分类预测变量的主题知识中没有有用的信息,为什么不在构建模型时比较不同的方法来扩展它们呢?您当然应该验证这种方法,例如通过对数据的多个自举重采样重复整个模型构建过程并在原始数据上测试模型预测。由于您有兴趣做出有用的预测,这提供了一种原则性的方法来查看哪种预测方法最适合您。


我很欣赏破坏二进制/虚拟编码提供的稀疏结构的问题,这可能是处理编码为稀疏矩阵的非常大的数据集的效率问题。对于您的问题的规模,只有几千个案例和几百个预测变量,这不是一个实际问题,并且不会影响回归的处理方式:但是您可能已经对分类变量进行了标准化,每个仍将具有与以前相同数量的类别,只是具有不同的数值(因此对惩罚的敏感性不同)。

请注意,按行归一化并不能解决此处讨论的问题,并且可能会加剧这些问题。在基因表达研究等情况下,按行归一化可能是一个有用的步骤,在这些情况下,所有测量基本上都在相同的规模上,但样本之间的整体表达可能存在系统差异。然而,将不同尺度上测量的连续预测变量与分类预测变量混合在一起,行归一化将无济于事。