用于计算 LASSO 解决方案的 GLMNET 或 LARS?

机器算法验证 r 机器学习 回归 套索 正则化
2022-03-27 19:31:17

我想获得 LASSO 问题的系数

||YXβ||+λ||β||1.

问题是 glmnet 和 lars 函数给出不同的答案。对于 glmnet 函数,我要求而不仅仅是,但我仍然得到不同的答案。λ/||Y||λ

这是预期的吗?和 glmnet之间有什么关系我知道 glmnet 对于 LASSO 问题更快,但我想知道哪种方法更强大?λλ


deps_stats 我担心我的数据集太大以至于 LARS 无法处理它,而另一方面 glmnet 可以处理我的大数据集。

mpiktas 我想找到 (Y-Xb)^2+L\sum|b_j| 的解 但是当我从这两种算法(lars 和 glmnet)中询问他们为那个特定的 L 计算的系数时,我得到了不同的答案......我想知道这是正确的/预期的吗?或者我只是为这两个函数使用了错误的 lambda。

3个回答

根据我的经验,LARS 对于小问题、非常稀疏的问题或非常“广泛”的问题(比样本多得多的特征)更快。实际上,如果您不计算完整的正则化路径,它的计算成本会受到所选特征数量的限制。另一方面,对于大问题,glmnet(坐标下降优化)更快。除其他外,坐标下降具有良好的数据访问模式(内存友好),并且可以从非常大的数据集上的数据冗余中受益,因为它以部分拟合收敛。特别是,它不受高度相关的数据集的影响。

我们(scikit-learn的核心开发人员)也得出的结论是,如果您对数据没有很强的先验知识,您应该使用 glmnet(或坐标下降优化,而不是谈论算法)而不是一个实现)。

有趣的基准可以在 Julien Mairal 的论文中进行比较:

https://lear.inrialpes.fr/people/mairal/resources/pdf/phd_thesis.pdf

第 1.4 节,特别是第 1.4.5 节(第 22 页)

Julien 得出的结论略有不同,尽管他对问题的分析是相似的。我怀疑这是因为他对非常广泛的问题非常感兴趣。

LASSO 在多个特征具有完美共线性的情况下是非唯一的。这是一个简单的思想实验来证明它。

假设您有三个随机向量您试图现在假设 = =最佳 LASSO 解决方案是 ,,其中是 LASSO 惩罚的效果。然而,最佳的也是yx1x2yx1x2yx1x2β1=1Pβ2=0Pβ1=0β21P

Lars 和 Glmnet 为 Lasso 问题提供了不同的解决方案,因为他们使用略有不同的目标函数和不同的数据标准化。您可以在相关问题Why do Lars and Glmnet give different solution for the Lasso problem? 中找到详细的重现代码?