Skip to content

L1 regularized Least Squares minimization problem solver.

Notifications You must be signed in to change notification settings

sschnug/l1-ls.py

 
 

Repository files navigation

l1-ls

BuildStatus

This is a large scale L1 regularized Least Square (L1-LS) solver written in Python. The code is based on the MATLAB code made available on Stephen Boyd's l1_ls page.

L1LSProblem

Installation

You can install the bleeding edge directly from the source:

pip install git+https://github.com/musically-ut/l1-ls.py.git@master#egg=l1ls

This package is also available on PyPi.

pip install l1ls

Usage

The module exposes two functions:

  • l1ls(A, y, lmbda, x0=None, At=None, m=None, n=None, tar_gap=1e-3, quiet=False, eta=1e-3, pcgmaxi=5000), and,
  • l1ls_nonneg(A, y, lmbda, x0=None, At=None, m=None, n=None, tar_gap=1e-3, quiet=False, eta=1e-3, pcgmaxi=5000)

They can be used as follows:

import l1ls as L
import numpy as np

A = np.array([[1, 0, 0, 0.5], [0, 1, 0.2, 0.3], [0, 0.1, 1, 0.2]])
x0 = np.array([1, 0, 1, 0], dtype='f8')  # Original signal
y = A.dot(x0)                            # noise free signal
lmbda = 0.01                             # regularization parameter
rel_tol = 0.01

[x, status, hist] = L.l1ls(A, y, lmbda, tar_gap=rel_tol)
# answer_x = np.array([0.993010, 0.00039478, 0.994096, 0.00403702])

If your matrix A is sparse, pass it in CSR format format for best performance.

Reference

  • S.-J. Kim, K. Koh, M. Lustig, S. Boyd, and D. Gorinevsky. An Interior-Point Method for Large-Scale l1-Regularized Least Squares, (2007), IEEE Journal on Selected Topics in Signal Processing, 1(4):606-617.

About

L1 regularized Least Squares minimization problem solver.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 96.0%
  • Makefile 4.0%