在scikit-learn中运行linear_model.lars_path
(model ='lasso')时,我对套索路径的行为感到困惑。
我认为一旦权重(系数)变为活动(从0开始),它必须在LARS算法的所有即将到来的步骤中保持活动状态。
在我的数据上运行算法时,我注意到有时系数会变为活动状态,然后它会变为零(从活动集中移除)。这是LARS算法的正确行为,还是scikit-learn实现中可能存在错误?
答案 0 :(得分:0)
这是LARS的L1正则化版本的正确行为(并且L1正则化回归通常被称为“套索”)。
在L1版本中,如果沿着LARS路径的步骤导致数据矩阵的列与残差的相关符号与相应回归系数的符号不同(例如sgn(x_i^\top(y-X\beta)) != sgn(\beta_i)
) ,然后该列/系数将从活动路径中删除。 (您可以在2003年的论文“最小角度回归”中找到Efron等人的原始描述。)
相反,活动集在LARS的L0正则化版本的每次迭代中都会增长。