SmallGBM
Gradient boosting that actually works on small data.
Why SmallGBM?
XGBoost and LightGBM are built for scale. They shine on thousands of rows. But when you only have 50, 100, or 500 samples, their default hyperparameters fail — overfitting, instability, unpredictable results.
SmallGBM is designed from the ground up for datasets with fewer than 1000 samples.
| Feature | SmallGBM | XGBoost | LightGBM |
|---|---|---|---|
| Bayesian leaf weights | ✅ | ❌ | ❌ |
| Adaptive regularization | ✅ | ❌ | ❌ |
| No bootstrap (uses all data) | ✅ | ❌ | ❌ |
| Stable under label noise | ✅ | ❌ | ❌ |
| scikit-learn compatible | ✅ | ✅ | ✅ |
Noise Stability
SmallGBM degrades gracefully when labels are noisy — unlike XGBoost and LightGBM which drop sharply.
At 20% label noise, SmallGBM is the best performer. Bayesian regularization keeps it stable when others collapse.
Learning Curve
Clear, predictable improvement as data grows. Reliable performance starts at n ≈ 40.
No sudden jumps, no catastrophic failures. A safe choice when data is limited.
Installation
pip install smallgbm
Quickstart
from smallgbm import SmallGBMClassifier
model = SmallGBMClassifier()
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)
API
SmallGBMClassifier
| Parameter | Default | Description |
|---|---|---|
n_estimators |
50 | Number of boosting rounds |
max_depth |
3 | Maximum tree depth |
min_samples_leaf |
3 | Minimum samples per leaf |
learning_rate |
0.1 | Shrinkage factor |
sigma_prior |
0.5 | Bayesian prior strength |
SmallGBMRegressor
Same parameters, for regression tasks.
from smallgbm import SmallGBMRegressor
model = SmallGBMRegressor()
model.fit(X_train, y_train)
preds = model.predict(X_test)
Research
Full characterisation notebook with 5 experiments: benchmark_final.ipynb
- Noise stability analysis
- Prior sensitivity
- Sample size curve
- Regression performance
- Class imbalance tolerance
License
MIT © Emelyanov Ilya 2026
Built with ❤️ for the small data community
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.1.0.tar.gz.
File metadata
- Download URL: smallgbm-1.1.0.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.15.0a5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec079669f6a24168f0345a90c6446df2c97fd816053a6096777ce7325cb4d868
|
|
| MD5 |
96071c1968228d9689f0ccce1e45804f
|
|
| BLAKE2b-256 |
c6e408b95eb2710cd2e7c18d7a2fd63b54f582cbdf750d524c4695fd624843ad
|
File details
Details for the file smallgbm-1.1.0-py3-none-any.whl.
File metadata
- Download URL: smallgbm-1.1.0-py3-none-any.whl
- Upload date:
- Size: 7.0 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 |
4eda485f2c6df55ea3f79308fa3502f7b55159faf5e63b4885045f641fa1926f
|
|
| MD5 |
4e31ae973b387946029f4ba0e3282efd
|
|
| BLAKE2b-256 |
8e646d9ef2d55e4acf3e8c252223c48ff49227432e68ee5c2b6812bcc1752fd4
|