1

linear_model.lars_path在 scikit-learn 中运行 (model = 'lasso') 时,我对套索路径的行为感到困惑。

我认为一旦权重(系数)变为活动状态(与 0 的差异),它必须在 LARS 算法的所有即将执行的步骤中保持活动状态。

在我的数据上运行算法时,我注意到有时一个系数会变得活跃,然后它会变为零(从活跃集中删除)。这是 LARS 算法的正确行为,还是 scikit-learn 实现中存在错误?

4

1 回答 1

1

这是 L1 正则化版本的 LARS 的正确行为(而 L1 正则化回归通常称为“套索”)。

在 L1 版本中,如果沿 LARS 路径的一步导致数据矩阵的一列与残差的相关性符号与相应回归系数(例如sgn(x_i^\top(y-X\beta)) != sgn(\beta_i))的符号不同,则该列/系数将为从活动路径中删除。(您可以在 Efron 等人 2003 年的论文“最小角回归”中找到原始描述。)

相反,在 L0 正则化版本的 LARS 中,活动集在每次迭代时都会增长。

于 2013-02-08T02:27:26.917 回答