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:
Guilherme Aldeia (@gAldeia)
Fabricio Olivetti de Franca (@folivetti)
Zongjun Liu (@msnliu)
Daniel S. Herman (@hermands)
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
Quickstart
User Guide