【问题标题】:How do I choose the package to solve this convex optimization in Python?如何选择包来解决 Python 中的这种凸优化?
【发布时间】:2016-07-18 15:29:24
【问题描述】:

我的问题定义如下,

minΣ(||xi-Xci||^2+ λ||ci||),

s.t cii = 0,

其中 X 是形状为 d * n 的矩阵,C 是形状为 n * n、xi 和 ci 分别表示 X 和 C 的一列。

X 在这里是已知的,我们想根据 X 找到 C。

我现在有几个选项,我已经有 tensorflow 中的版本,它使用 AdamOptimizer。我只是想知道,有什么方法可以更有效地解决这个问题? cvxpycvxopt 会更好地解决这个问题吗?

如果你们中的任何人能给我提供除 tensorflow 之外的任何一种方法的实现,我将不胜感激。

【问题讨论】:

  • 如果能用 Latex 重写你的方程式,让它们更具可读性,那就太好了,这样更多的人会调查你的问题。

标签: python machine-learning tensorflow cvxopt convex-optimization


【解决方案1】:

我猜,目标函数与字典学习(例如你的 X)和稀疏编码(你的 ci)有关,Python 中有几个很好的库。

看看scikit-learn's sparse coding 和字典学习。或者,您可以使用SPAMS 进行优化。

您已经知道您的字典,所以您需要知道的是稀疏代码。我认为使用 scikit-learns 稀疏编码器将是最简单的方法。

如果您想在优化过程中拥有更多权力,您可以自己在 Theano(或 Keras、Lasagne、TensorFlow)中实现它,如 this

【讨论】:

  • 好分析!还有关于Sparse approximation 的维基文章提到了可能的算法,其中一些已经在 scikit-learn 中实现。如果 OP 想要在 cvxpy 中使用通用凸优化方法,套索方法应该是一个很好的起点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多