A Rust library for implementing and comparing boosting algorithms.
MiniBoosts collects boosting algorithms behind shared
Booster, WeakLearner, and Classifier traits,
so the same data and weak learner can be used across experiments for fair comparisons.
Linear, quadratic, and conic subproblems are solved with
Clarabel; no commercial solver is required.
Optional Python bindings expose the same algorithms with a scikit-learn-style API.
cargo add miniboosts
use miniboosts::prelude::*;
let sample = SampleReader::default()
.file("train.csv")
.has_header(true)
.target_feature("class")
.read()
.unwrap();
let tree = DecisionTreeBuilder::new(&sample)
.max_depth(2)
.build();
let f = LpBoost::init(&sample)
.nu(0.1 * sample.shape().0 as f64)
.run(&tree);
let predictions = f.predict_all(&sample);
| AdaBoost | Freund and Schapire |
| BrownBoost | Freund |
| AdaBoostV | Rätsch and Warmuth |
| MadaBoost | Domingo and Watanabe |
| SmoothBoost | Servedio |
| LPBoost | Demiriz, Bennett, and Shawe-Taylor |
| ERLPBoost | Warmuth, Glocer, and Vishwanathan |
| Corrective ERLPBoost | Shalev-Shwartz and Singer |
| MLPBoost | Mitsuboshi, Hatano, and Takimoto |
| SoftBoost | Warmuth, Glocer, and Rätsch |
| TotalBoost | Warmuth, Liao, and Rätsch |
| Graph Separation Boosting | Alon, Gonen, Hazan, and Moran |
| SparsiBoost | Grønlund, Larsen, and Mathiasen |
Built-in weak learners: decision trees, logistic regression, bounded linear functions, Gaussian naive Bayes, and Gaussian RBF bumps. Any type implementing WeakLearner can be used instead.
Place points, choose an algorithm, and see the decision boundary. Training runs entirely in your browser: MiniBoosts is compiled to WebAssembly. Shading shows the ensemble's confidence (relative to its largest value on the plane); the black line is where the confidence is zero.
Click: add a point of the selected class. Shift-click or right-click: add the other class. Alt-click: remove the nearest point.