Giter Club home page Giter Club logo

mpgl's Introduction

mpgl

An efficient implementation for the MPGL method (a matching pursuit method for generalized LASSO problem) in the paper:
MPGL: An Efficient Matching Pursuit Method for Generalized LASSO
Dong Gong, Mingkui Tan, Yanning Zhang, Anton van den Hengel, Qinfeng Shi.
In Thirty-First AAAI Conference on Artificial Intelligence (AAAI), 2017.

[Paper][Project]

  • If you use this code for your research, please cite our paper:
@inproceedings{gong2017mpgl,
  title={MPGL: An Efficient Matching Pursuit Method for Generalized LASSO},
  author={Gong, Dong and Tan, Mingkui and Zhang, Yanning and van den Hengel, Anton and Shi, Qinfeng},
  booktitle={AAAI Conference on Artificial Intelligence},
  year={2017}
}
  • This implementation is based on MATLAB and C++ with an MEX interface. The main framework and the entry of the algorithm is implemented in MATLAB. The most time consuming core part is implemented in C++ with MEX interface for high efficiency. An external library OpenBLAS is required.

  • As shown in our paper, the MPGL algorithm and this implementation is both efficient and effective for many applications related to the generalized LASSO problem.

Usage

Getting Started

Install OpenBLAS

  • Download the source to your/openblas/path/;
  • Run Make;
  • Copy the required .h files (i.e. cblas.h and openblas_config.h) to the mpgl/mxsolver/.
  • This instruction is for Linux and OSX.
  • More details for compiling and installation of OpenBLAS can be found from https://github.com/xianyi/OpenBLAS.

Compile MPGL solver in C++

  • Set openblas_path = 'your/openblas/path/' in makemexfiles.m;
  • Run makemexfiles in MATLAB and get the .mex* files.
  • We also provide a package with the compiled mex files.

Test MPGL

  • Run script_gendata to generate synthetic data for testing.
  • The entry of the MPGL method is in entry_mpgl.m.
  • Please find the instructions for tuning the parameters for data generation and MPGL in the comments in the .m files.

Solvers

  • This implementation mainly focuses on the model y=Ax+n and the generalized LASSO problem.
  • The solver for the general case of A is in the mpgl/solver_ls/.
  • For the cases with A=I (i.e. A is an identity matrix, FLSA problem or projection problem), we specifically provide an implementation to accelerate the computation. The related solver is in mpgl/solver_proj/.
  • The core parts of the solver in C++ are in mpgl/mexsolver/.

Related Projects

To be updated...

mpgl's People

Contributors

donggong1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mpgl's Issues

crashes Matlab

When I follow the readme instructions using the prebuilt mexw64 files and running script_gendata and entry_mpgl, the line

[x, supp_map, time] = mpgenlasso_mex(d.A, d.y, D, D.edge_num,...
int32(D.edge_head-1), int32(D.edge_tail-1), D.sI, mpgl_lambda, opts_mpgl);

causes Matlab to crash. As this is a mex file it is difficult for me to debug it further.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.