2013-02-05 22 views
1

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

我认为一旦权重(系数)变为活动(从0开始),它必须在LARS算法的所有即将到来的步骤中保持活动状态。

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

+1

是的,这是可能的。也许看看“统计学习元素”一书,了解线性模型中路径算法的更多细节。 –

回答

0

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

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

相比之下,活动集在L0S正规化版本的LARS的每次迭代中增长。