Git Product home page Git Product logo

improved_glmnet's Introduction

improved_glmnet

This is a software library meant to be a performance-competitive alternative to the library glmnet. Currently supported features include:

  • solving the elastic net optimization problem
  • generating a regularization path
  • selecting a lambda value that has excellent generalization performance via cross validation

I have written one usage example per described feature, which you can see in the src directory:

  • cvx_validation.cc
  • cross_validation.cc
  • regularization_path.cc .

For more details, see the preliminary paper about the library.

###Dependencies

  • g++ (at least v. 4.8).
  • armadillo (at least v. 4.300).
  • a linear algebra subroutine package supported by armadillo such as OpenBLAS.

In addition, I have only tested the library on machines running Linux.

###Installation To compile the examples and the rest of the improved_glmnet source code, perform the below steps:

  1. You'll need modify the Makefile in the src directory to specify a linear algebra library to link against. I assume you took my advice and are using OpenBLAS. In this case, just change the OpenBLAS_DIR variable to point to the installation directory on your machine. That's it.

  2. Run make.

###Usage Each example program expects paths to the data you'll be using. There are several sample datasets of different sizes included in the tests directory that you can use. So, for instance, after you have built the examples, you can run cvx_validation.out with the below command.

./cvx_validation.out 0.5 ../tests/fat/_100_300/_A ../tests/fat/_100_300/_b ../tests/fat/_100_300/_z

See the comments in any of the example source files for more detailed usage instructions.

improved_glmnet's People

Contributors

mchrzanowski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

captaintsao

improved_glmnet's Issues

Support positivity and/or box constraints

In glmnet it is possible to specify positivity or box constraints using the lower.limits and upper.limits arguments. Would it be hard to support this also in improved_glmnet by any chance?

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.