微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Graphical LASSO中算法解与MATLAB CVX解的区别?

图形最小绝对收缩和选择运算符,由 Jerome Friedman、Trevor Hastie 和 Robert Tibshirani 引入(“使用图形套索进行稀疏逆协方差估计”,2014 年)。他们建议使用块坐标下降算法来解决问题(请参阅 Rahul Mazumder 和 Trevor Hastie 的“图形套索:新见解和替代方案”)。我使用 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 算法,但可以扩展到其他类似问题,其中作者提出了特定算法(例如 ADMM),但可以通过优化包找到解决方案。

解决方法

提供

  1. 有一个独特的解决方案(如果您的目标是正则化的,这应该是正确的,这似乎是到最后一个学期。)
  2. 两种实现都没有错误。

两个实现都应该返回完全相同的解决方案,因为问题是一个凸半定程序。您应该观察的差异是

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

对于小问题和玩具问题,这应该不是什么大问题(如果您是学者,通常就是这种情况。)非常重要,因为它们控制着您的方法可以解决的规模问题。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。