SmallGBM
Gradient boosting for small tabular data.
Outperforms XGBoost · Beats LightGBM · Lowest variance
What is SmallGBM?
SmallGBM is a gradient boosting library designed for small datasets (n < 1000). It combines robust leaf weight estimation with stochastic split selection to outperform XGBoost and LightGBM — with lower variance and no hyperparameter tuning.
Benchmark
27 datasets (15 synthetic + 12 real-world) · 5-fold cross-validation · mean ROC-AUC
| Model | AUC | Std |
|---|---|---|
| SmallGBM | 0.9241 | ±0.0676 |
| XGBoost | 0.9156 | ±0.0792 |
| RandomForest | 0.9140 | ±0.0788 |
| LightGBM | 0.9047 | ±0.0752 |
SmallGBM outperforms XGBoost by +0.85%, RandomForest by +1.0%, LightGBM by +1.9%, and has the lowest variance among all models.
Why Robust Leaf Weights?
Standard gradient boosting uses the mean of residuals per leaf. On small data, one outlier can destroy the estimate.
SmallGBM uses:
- Median for leaves with n ≤ 30
- Inverse-distance weighted mean for larger leaves
- Signal-adaptive shrinkage toward the parent node
This makes predictions robust to outliers and label noise — the main enemies of small-sample learning.
Why Stochastic Split Selection?
Full enumeration of all possible split thresholds overfits on small data. SmallGBM uses 5 random thresholds per feature instead — less overfitting, faster training, and better generalization.
Installation
pip install smallgbm
Quickstart
from smallgbm import SmallGBMClassifier
model = SmallGBMClassifier()
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)
Parameters
| Parameter | Default | Description |
|---|---|---|
n_estimators |
50 | Boosting rounds |
max_depth |
3 | Max tree depth |
min_samples_leaf |
3 | Min samples per leaf |
learning_rate |
0.1 | Shrinkage |
sigma_prior |
0.5 | Regularization strength |
colsample_bytree |
0.5 | Feature fraction per tree |
random_state |
None | Reproducibility |
auto_scale |
False | RobustScaler internally |
Features
- Robust leaf weights — median + adaptive shrinkage
- Stochastic split selection — 5 random thresholds, less overfitting
- Column subsampling — fights overfitting in high-dimensional small data
- Uncertainty estimates —
predict_with_uncertainty() - scikit-learn compatible —
fit,predict,predict_proba - Pure Python + NumPy — no compilation, easy install
Citation
@software{emelyanov2026smallgbm,
author = {Emelyanov, Ilya},
title = {SmallGBM: Gradient Boosting with Robust Leaf Regularization for Small-Sample Tabular Data},
year = {2026},
doi = {10.5281/zenodo.21934674},
url = {https://github.com/nsdmlk/SmallGBM}
}
License
MIT © Emelyanov Ilya, 2026
Built for researchers and engineers working with limited data.
---Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smallgbm-1.4.1.tar.gz.
File metadata
- Download URL: smallgbm-1.4.1.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.15.0a5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9460a3a705514c76978aa27a6973759ef647b0a80d23ff61251102a9a4b7e6fa
|
|
| MD5 |
4220bad4e6749fbc50084bf8e6d7a4e4
|
|
| BLAKE2b-256 |
f51f401ad5323496213a240e7513915c27d7146a0563997c8cadb5d52f21f953
|
File details
Details for the file smallgbm-1.4.1-py3-none-any.whl.
File metadata
- Download URL: smallgbm-1.4.1-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.15.0a5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abad2aeb99337494558738d0df3cbb3370e0c2d78a4b37ae561c81327de84dd7
|
|
| MD5 |
bbf740b982507f4a877007e0197c5add
|
|
| BLAKE2b-256 |
50a26232263ca857d7d7f7e34a5458f30415f60223b947d4a1e65ac3873ca588
|