Giter Club home page Giter Club logo

trex's Introduction

TREX

Tuning-free sparse variable selection with the TREX

This is a resource page for the TREX which allows sparse tuning-free variable selection for linear regression. The TREX is currently available as MATLAB package. R/Python packages are under development.

Background

The forward model is assumed to be the standard linear model:

Here, X is a known design matrix and y is a known continuous response vector. The vector β comprises the unknown coefficients and σ an unknown scale.

The TREX estimator [1] is based on solving the following objective function:

The constant c is by default set to c=0.5, thus requiring no tuning (as compared to, e.g, the Lasso). However, the objective is non-convex and comprises 2p minima.

Several different algorithmic strategies are available to solve the objective. A proximal gradient descent for an approximate solution has been introduced in [1], referred to as q-TREX. Via appropriate reformulation and decomposition, the TREX can be solved exactly by solving 2p convex Second-Order Cone Programs (SOCPs) [2], referred to as c-TREX. Alternatively, the convex subproblems in the c-TREX can also be solved with Douglas-Rachford proximal splitting [3]. The latter algorithm also allows solving sub-problems of the generalized TREX [3]:

where any q>1 can be chosen. Note that in the limit q=1, the TREX reduces to the Sqrt-Lasso [4].

The package includes all of the above algorithmic strategies in one framework. Theoretical bounds for the TREX prediction error are available in [5].

Package structure

The TREX package contains the following files and folders

  • examples/ (different scenarios), also includes figure creation for [2].
  • solvers/ (Schmidt's PSG code, place the ecos/SCS solver here (after download))
  • trex/ (TREX solvers (both single and multi-thread versions), TREX knockoff filter)
  • misc/ (additional files including barweb plotting and the knockoff filter (after download))

Dependencies

External solvers

Two solvers have been tested to solve the TREX problem in SOCP form.

  • ecos: Conic solver for the c-TREX. The software can be downloaded here. The MATLAB interface can be found here.

  • SCS: SOCP solver for the c-TREX. SCS can be downloaded here.

The solver packages should be compiled and placed in the solver/ folder.

Knockoff filter

Knockoff filtering with the TREX requires the MATLAB knockoff filter package by Barber-Foygel and Candes. The software can be downloaded here.

The deprecated link during initial development was here

Please place it in the misc/ folder

Other solvers

The proximal solvers from [1] and [3] are fully integrated and do not rely on external software.

Basic example

To include the package in your MATLAB environment, type first

install_trex

References

The code builds on results from the following papers:

Maintainer:

  • Christian L. Müller, Center for Computational Mathematics, Flatiron Institute, Simons Foundation ([email protected])

Known issues

Workaround for compiling SCS code using mex for Mac OS X with MATLAB 2015a and Xcode 7+ http://www.mathworks.com/matlabcentral/answers/246507-why-can-t-mex-find-a-supported-compiler-in-matlab-r2015b-after-i-upgraded-to-xcode-7-0

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.