2

내 문제파이썬에서 볼록 최적화를 해결하기 위해 패키지를 어떻게 선택합니까?

minΣ (XI-Xci || ||^2 + λ || || CI)

명세서 CII = 0

X, 다음과 같이 정의된다 는 형태 d * n의 행렬이고 C는 형태 n * n, xi이고 ci는 X와 C의 열을 따로 따로 의미합니다.

X는 여기에 알려진 우리는 내가 이미 AdamOptimizer 사용 tensorflow의 버전을 가지고, C.

내가 지금 몇 가지 옵션을 가지고

를 찾으려면 X를 기반으로합니다. 나는이 문제를보다 효율적으로 해결할 수있는 방법이 있는지 궁금한가요? cvxpy 또는 cvxopt으로이 문제가 더 잘 해결됩니까?

여러분 중 누군가가 tensorflow 이외의 다른 방법으로 구현을 할 수있게 해주시면 많은 도움이 될 것입니다.

+1

라텍스를 사용하여 방정식을 읽기 쉽도록 다시 작성하면 더 많은 사람들이 문제를 조사하게됩니다. –

답변

1

객관적인 함수는 사전 학습 (예 : X)과 스파 스 코딩 (ci)과 관련되어 있으며 파이썬에는 여러 가지 훌륭한 라이브러리가 있습니다.

scikit-learn's sparse coding 및 사전 학습을 살펴보십시오. 또는 최적화를 위해 SPAMS을 사용할 수 있습니다.

사전은 이미 알고 있으므로 스파 스 코드를 알아야합니다. scikit-learns 스파 스 코더를 사용하는 것이 가장 쉬운 방법이라고 생각합니다.

최적화 과정에서 더 많은 힘을 얻으려면 this처럼 Theano (또는 Keras, Lasagne, TensorFlow)에서 직접 구현할 수 있습니다.

+1

좋은 분석! 또한 가능한 알고리즘을 언급하는 [Sparse approximation] (https://en.wikipedia.org/wiki/Sparse_approximation)에 대한 위키 기사가 있으며 그 중 일부는 이미 scikit-learn에서 구현됩니다. OP가 cvxpy 내에서 범용 볼록 최적화 방법을 사용하려면 lasso-approach가 좋은 출발점이되어야합니다. – sascha

관련 문제