MiniBoosts
A collection of boosting algorithms written in Rust 🦀.

This library uses Gurobi optimizer, so you must acquire a license to use this library.
Note that you need to put gurobi.lic in your home directory;
otherwise, the compile fails.
See this repository for details.
Features
Currently, I implemented the following Boosters and Weak Learners. You can combine them arbitrarily.
Classification
-
Boosters
- AdaBoost by Freund and Schapire, 1997
- AdaBoostV by Rätsch and Warmuth, 2005
- TotalBoost by Warmuth, Liao, and Rätsch, 2006
- LPBoost by Demiriz, Bennett, and Shawe-Taylor, 2002
- SmoothBoost by Rocco A. Servedio, 2003
- SoftBoost by Warmuth, Glocer, and Rätsch, 2007
- ERLPBoost by Warmuth and Glocer, and Vishwanathan, 2008
- CERLPBoost (The Corrective ERLPBoost) by Shalev-Shwartz and Singer, 2010
- MLPBoost by Mitsuboshi, Hatano, and Takimoto, 2022
-
Weak Learners
- DTree (Decision Tree)
- GaussianNB (Naive Bayes), beta version
- WLUnion, a union of multiple weak learners.
Regression
- Weak Learner
- RTree (Regression Tree)
Future work
-
Boosters
-
Weak Learners
- Bag of words
- TF-IDF
- Two-Layer Neural Network
- RBF-Net
-
Others
- Parallelization
- LP/QP solver (This work allows you to use this library without a license).
How to use
You can see the document by cargo doc --open command.
This library uses
the DataFrame of polars crate,
so that you need to import polars.
You need to write the following line to Cargo.toml.
= { = "https://github.com/rmitsuboshi/miniboosts" }
Here is a sample code:
use *;
use *;
If you use boosting for soft margin optimization, initialize booster like this:
let n_sample = df.shape.0;
let nu = n_sample as f64 * 0.2;
let lpboost = init
.tolerance
.nu; // Setting the capping parameter.
Note that the capping parameter must satisfies 1 <= nu && nu <= n_sample.