/slim-matlab

Optimized scoring systems for classification problems in MATLAB

Primary LanguageMATLABGNU General Public License v3.0GPL-3.0

slim-matlab is a package to create SLIM scoring systems using MATLAB and the CPLEX Optimization Studio.

Scoring Systems

Scoring systems are simple models to make quick predictions by adding, subtracting and multiplying a few numbers:

Scoring system for the mushrooms dataset

SLIM

SLIM is a new classification method for building data-driven scoring systems. SLIM is special in that it produces models that are fully optimized for accuracy and sparsity, and that satisfy difficult constraints without parameter tuning (e.g. hard limits on model size, sensitivity, specificity)

Requirements

slim-matlab was developed using MATLAB 2014b and CPLEX V12.6. It may work with earlier versions of MATLAB and/or CPLEX, but this has not been tested and will not be supported.

Obtaining and Installing CPLEX

CPLEX is cross-platform commercial optimization solver that can be called from MATLAB. It is freely available to students and faculty members at accredited institutions as part of the IBM Academic Initiative. To get the latest version of CPLEX, you should:

  1. Join the IBM Academic Initiative
  2. Download IBM ILOG CPLEX Optimization Studio V12.6 (or higher) from the software catalog
  3. Install CPLEX on your machine. Note: Mac/Unix users will need to install a from .bin file
  4. Add the CPLEX API to your MATLAB search path using pathtool/addpath as shown here

If you have problems installing CPLEX, check the CPLEX user manual or the CPLEX forums.

Citation

If you use SLIM, please cite our paper!

@article{
    ustun2015slim,
    year = {2015},
    issn = {0885-6125},
    journal = {Machine Learning},
    doi = {10.1007/s10994-015-5528-6},
    title = {Supersparse linear integer models for optimized medical scoring systems},
    url = {http://dx.doi.org/10.1007/s10994-015-5528-6},
    publisher = { Springer US},
    author = {Ustun, Berk and Rudin, Cynthia},
    pages = {1-43},
    language = {English}
}