Overview#

Brush is an interpretable machine learning library for training symbolic models. It wraps multiple learning paradigms (gradient descent, decision trees, symbolic regression) into a strongly-typed genetic programming language (Montana, 1995 PDF).

This project is very much under active development. Expect api changes and broken things.

For the user guide and API, see the docs.

Features / Design Goals#

  • Flexibility to define n-ary trees of operators on data of variable types (singletons, arrays, time series, matrices of floats, ints, and bools)

  • Support for gradient descent over these programs

  • Support for recursive splits that flow with gradients

  • Fast-ish in C++

  • Easy-to-use Python API with low-level bindings

Contact#

Brush is maintained by William La Cava (@lacava, william.lacava@childrens.harvard.edu) and initially authored by him and Joseph D. Romano (@JDRomano2).

Special thanks to these contributors:

Acknowledgments#

Brush is being developed to improve clinical diagnostics in the Cava Lab at Harvard Medical School. This work is partially funded by grant R00-LM012926 from the National Library of Medicine and a Patient-Centered Outcomes Research Institute (PCORI) Award (ME-2020C1D-19393).

License#

GNU GPLv3, see LICENSE

Table of Contents#