Skip to content

approximate message massing (AMP), bridge regression, optimal tuning

Notifications You must be signed in to change notification settings

wangsw09/AmpBridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AmpBridge

Approximate message passing (AMP), state-evolution analysis, bridge regression, Stein's unbiased risk estimator (SURE) of bridge regression.

Approximate message passing is an algorithm which has tractable and analyzable performance under specific design (Gaussian typically). On the other hand, it connects to a class of statistical machine learning models, making it possible to analyze the statistical properties of these models, including MSE, variable selection, etc.

This package provides functionalities about the following topics:

  • Theoretical quantities about AMP state-evolutions, such as MSE, optimal tuning, optimal MSE, transformation between raw tuning and AMP tuning, etc;
  • The 1st (2nd) order expansion of the optimal MSE under different asymptotics;
  • Bridge regression with Lq penalty, where q >= 1 (coordinate descent implementation)
  • Empirical MSE and transformation between raw tuning and AMP tuning under Gaussian design.

Cython is used to accelerate the core, upon which the whole package is then built.

blas functions are called directly whenever possible to boost the calculations involving vectors and matrices (through interface scipy.linalg.cython_blas).

The work is motivated by my research with Haolei Weng and Professor Arian Maleki at Columbia University. The relevant paper is "Which bridge estimator is optimal for variable selection?".

For examples to use the package, please check the Examples.ipynb in the root dir.

Installation

After git clone the repo to your local dir, simply do the following to compile the cython part:

make all

For windows user, please directly call python setup build_ext --inplace --compiler=<specify_your_c_compiler> and replace <specify_your_c_compiler> parameter with your C compiler.