Wednesday, April 20, 2011

CS: L1 Minimization in Python, A Rosetta table between Statistics/Machine Learning and Compressed Sensing.

If you know any datasets that are relevant to some of the topics discussed here but are not well known, please let me know and I will feature them in the data section page of this blog. In the spirit of putting all my real time computational experiments in one place, I just created a place where they are all listed. It is here.

Mohammadreza Mahmudimanesh just sent me the following:

Hi Igor

I have recently developed a general purpose Python module for CS recovery for both complex and real bases/signals. It is just a direct implementation of l1 minimization algorithm using the opensource package CVXOPT. It is not a fast software, but can be used by CS learners or people who want to use l1-minimization within a scripting language like Python. It is also useful for people who cannot access MATLAB.

The code can be found on my homepage under Software section:


Thanks Mohammadreza! With regards to being fast, SL0 might do the trick and it should be easily implementable in Python.

Since LASSO solvers are potentially becoming important with respect to their ability to deal with multiplicative noise and since most of the literature on the subject is done in statistics, I drew this table of correspondence between terms and variable names generally used in Machine Learning/Statistics and Compressed Sensing so as to enable a faster reading of these papers. Let me know if I am missing a term.

so when they talk about p much larger than n or N, they really mean N much larger than m :-)


Unknown said...


I implemented a LARS algorithm some time ago:

and wonder if it would be useful (or possible) to extend it to the complex domain.

Anonymous said...

Also in scikit-learn to avoid the confusion about the variable names we use:

- n_samples (for the number of observations)

- n_features (for the number of predictors for each observation)

- n_components (for the number of components to extract by PCA, NMF, ...), although we tend to use k as the number of clusters for kmeans and other clustering algorithms

Igor said...


I am not sure that LASSO can be extended to the complex case. I have not looked a the literature on that.


Do you believe I ought to split the Statistics and ML into two ? Let me put up my second version of the table in the next entry.