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