Introduction
SPGL1 is a Matlab solver for large-scale one-norm regularized least squares. It is designed to solve any of the following three problems:
Basis pursuit denoise
(\hbox{BP}_\sigma)\quad\hbox{minimize} \quad \|x\|_1^{} \quad\hbox{subject to}\quad\|Ax-b\|_2^{}\le\sigma
Basis pursuit
(\hbox{BP})\quad\hbox{minimize} \quad \|x\|_1^{} \quad\hbox{subject to}\quad Ax=b
Lasso
(\hbox{Lasso})\quad\hbox{minimize} \quad \|Ax-b\|_2^{} \quad\hbox{subject to}\quad \|x\|_1^{}\le\tau
SPGL1 relies only on matrix-vector operations Ax and A^Ty and accepts both explicit matrices and functions that evaluate these products. SPGL1 is suitable for problems that are in the complex domain.
The theory underlying SPGL1 is described in the paper Probing the Pareto Frontier for basis pursuit solutions (pdf).
Group sparsity
In version 1.6, the core SPGL1 function was generalized to solve the above three problems with \|\cdot\|_1 replaced by any norm \|\cdot\|. In order to do so, it requires that functions are provided for computing: (1) the (primal) norm \|\cdot\|, (2) the corresponding dual norm \|\cdot\|_*, and (3), the (possibly weighted) Euclidean projection:
\hbox{project}(x,\tau) := \hbox{argmin}\quad \|p - x\|_2\quad\hbox{subject to}\quad\|p\| \le\tau
Using this framework we implemented two new solvers (for more information, see spgdemo.m and Extensions):
Multiple measurement vectors (MMV)
The MMV version of BPDN currently implemented solves
(\hbox{MMV}_\sigma)\quad\hbox{minimize} \quad \|X\|_{1,2}^{} \quad\hbox{subject to}\quad\|AX-B\|_{2,2}^{}\le\sigma,
where the mixed (p,q)-norm, \|X\|_{p,q}, (p,q\ge 1), defined by
\|X\|_{p,q} := \left(\sum_{i}^{m} \|X_i^T\|_q^p\right)^{1/p},
with X an m\times n matrix and where X_i denotes the i-th row of X. When weights are given, they apply to each row of X.
Group-sparse BPDN
In group-sparse BPDN each entry of x is assigned a group. Denoting by \Lambda_i the indices of group i, the group-sparse BPDN problem, for \sigma \ge 0, is given by:
(\hbox{Group}_\sigma)\quad\hbox{minimize} \quad \sum_i \|x_{\Lambda_i}\|_2^{} \quad\hbox{subject to}\quad\|Ax-b\|_2^{}\le\sigma.
It is assumed that the \Lambda_i are disjoint and that their union gives the set \{1,\ldots,n\}. When weights are given, they apply to each group.
Feedback
We would be delighted to hear from you if you find SPGL1 useful, or if you have any suggestions, contributions, or bug reports. Please send these to
License
SPGL1 is distributed under the GNU Public License.
Credits
This research is supported in part by an NSERC Discovery Grant and by an NSERC Collaborative Research and Development Grant (334810-05) that funds the DNOISE project.