Graphical LASSO 中算法解和 MATLAB CVX 解的区别?

Difference between algorithm solution and MATLAB CVX solution in Graphical LASSO?

Jerome Friedman、Trevor Hastie 和 Robert Tibshirani 介绍了图形最小绝对收缩和选择运算符(“使用图形套索进行稀疏逆协方差估计”,2014 年)。他们建议使用块坐标下降算法来解决问题(参见 Rahul Mazumder 和 Trevor Hastie 的“The Graphical Lasso: New Insights and Alternatives”)。我使用 CVX 编写了这个简单的 MATLAB 代码,给定 X(大小为 m,n 的回归矩阵):

S = cov(X,0);

cvx_begin
    variable theta(n,n) semidefinite
    minimize (trace(S*theta)-log_det(theta)+lambda*norm(theta,1))
cvx_end

块坐标下降算法解法和CVX解法有什么区别?可以将 CVX 设置为提供完全相同的解决方案吗? 该问题涉及图形 LASSO 算法,但可以扩展到其他类似问题,其中作者建议使用特定算法(es. ADMM),但可以通过优化包找到解决方案。

已提供

  1. 有一个独特的解决方案(如果你的 objective 是正则化的,这应该是正确的,它似乎是在最后一项。)
  2. 两种实现都没有错误。

两种实现方式应该return 完全相同的解决方案,因为问题是凸半定规划。您应该观察到的差异是

  1. 运行时间,一个可能 运行 比另一个长,我敢打赌你的实现使用通用求解器包 (CVX),所以应该更慢。
  2. 内存使用,我希望通用(未调整)包应该消耗更多内存。
  3. 数值稳定性,一般来说,这一些实现在数值上会更加稳定。也就是说,如果您使用弱正则化(非常小的 lambda),您可能会发现某些实现无法收敛,而其他实现仍然有效。

对于小问题和玩具问题,这应该不是什么大问题(如果您是学者,通常就是这种情况。)如果您是一个试图在现实世界中做一些有用的事情的人,运行时间和内存的使用往往非常重要,因为它们控制着您可以使用您的方法解决的问题的规模。

了解每种方法的相对局限性的唯一方法是实施并尝试两种方法!至少,我会实施和 运行 这两种方法作为健全性检查,以确保两种实施都可能正确(两种实施都不正确并且在输入范围内报告相同结果的可能性非常低。)