Orbit Boost: oblique softmax boosting with ridge warm-start and BOSS sampling
Project description
🚀 Orbit Boost
Orbit Boost is a research-oriented gradient boosting library built from scratch in Python, designed as an experimental alternative to LightGBM, XGBoost, and CatBoost.
It introduces oblique projections, BOSS sampling, Newton-style updates, and a ridge-based warm start for improved performance.
✨ Features
- 🔥 Custom Boosting Core
- Oblique feature projections per round
- BOSS sampling strategy (gradient + rarity-driven)
- Newton-style updates with global line search
- Mild class reweighting for improved balance
- 🏎 Warm Start
- Closed-form ridge multinomial initialization
- ⚡ Parallelization
- Trees for each class are fit in parallel
- 🛑 Early Stopping
- Based on validation Quadratic Weighted Kappa (QWK)
- 🎯 Compatible with scikit-learn API (
fit,predict,predict_proba)
📦 Installation
From PyPI:
pip install orbit-boost
From source:
git clone https://github.com/abdulvahapmutlu/orbit-boost.git
cd orbit-boost
pip install -e .
🛠 Usage
from orbit_boost import OrbitBoostClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = OrbitBoostClassifier(n_estimators=320, learning_rate=0.05, verbose=1)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
📊 Benchmarking
Orbit Boost was compared against LightGBM, XGBoost, and Random Forest on the private NutriScore dataset (balanced training) on a 5-class NutriScore Dataset. Under-sampling applied to the whole dataset for each model, and the balanced training count for each class is (A, B, C, D, E) 103451.
Quadratic Weighted Kappa (QWK) – Validation
| Model | QWK (Validation) | F1-Macro | Accuracy |
|---|---|---|---|
| Orbit Boost | 0.9549 | 0.9161 | 0.93 |
| LightGBM | 0.9545 | 0.9157 | 0.93 |
| XGBoost | 0.9523 | 0.9080 | 0.92 |
| RandomForest | 0.9504 | 0.9065 | 0.92 |
Quadratic Weighted Kappa (QWK) – Test
| Model | QWK (Test) | F1-Macro | Accuracy |
|---|---|---|---|
| Orbit Boost | 0.9549 | 0.9168 | 0.93 |
| LightGBM | 0.9547 | 0.9167 | 0.93 |
| XGBoost | 0.9527 | 0.9080 | 0.92 |
| RandomForest | 0.9508 | 0.9069 | 0.92 |
📌 Orbit Boost achieves state-of-the-art parity with LightGBM on NutriScore, outperforming XGBoost and Random Forest. However, with pure Python loops, it's slower than its optimized rivals. Optimization for Orbit-Boost is a must.
🤝 Contributing
Contributions are welcome! Please read CONTRIBUTING.md and follow the Code of Conduct.
📜 Citation
If you use Orbit Boost in academic work, please cite:
@software{orbit_boost2025,
author = {Abdulvahap Mutlu},
title = {Orbit Boost: Oblique Projection Gradient Boosting},
year = {2025},
url = {https://github.com/abdulvahapmutlu/orbit-boost},
}
📄 License
MIT License © 2025 Abdulvahap Mutlu
Project details
Release history Release notifications | RSS feed
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 orbit_boost-0.1.1.post1.tar.gz.
File metadata
- Download URL: orbit_boost-0.1.1.post1.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df4dcfea43d1c841b012979f2361bb0f648ca6910b39d530655374652cb36b0b
|
|
| MD5 |
c3f6ea87cb3a9879252ebd2ef6a18f31
|
|
| BLAKE2b-256 |
eccdb49ff18c33ed69da7cbf439f4f1c2c52833586e49c312aa26deb4a080b38
|
Provenance
The following attestation bundles were made for orbit_boost-0.1.1.post1.tar.gz:
Publisher:
release.yml on abdulvahapmutlu/orbit-boost
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
orbit_boost-0.1.1.post1.tar.gz -
Subject digest:
df4dcfea43d1c841b012979f2361bb0f648ca6910b39d530655374652cb36b0b - Sigstore transparency entry: 582841641
- Sigstore integration time:
-
Permalink:
abdulvahapmutlu/orbit-boost@f31b51b021b123d4c70e3f2c4f5eb976c32e1da8 -
Branch / Tag:
refs/tags/v0.1.1.post1 - Owner: https://github.com/abdulvahapmutlu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f31b51b021b123d4c70e3f2c4f5eb976c32e1da8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file orbit_boost-0.1.1.post1-py3-none-any.whl.
File metadata
- Download URL: orbit_boost-0.1.1.post1-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d55200c3b3398c48675c97535569a1c48a8313eb2f78bf8d8eed54bc5d4a1bda
|
|
| MD5 |
2874d9b8fa5837adc0adcd543e023382
|
|
| BLAKE2b-256 |
214cf5e90458e54425b11a47a481d506b9ec6cf59cfbeeb07298044b62d1dc01
|
Provenance
The following attestation bundles were made for orbit_boost-0.1.1.post1-py3-none-any.whl:
Publisher:
release.yml on abdulvahapmutlu/orbit-boost
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
orbit_boost-0.1.1.post1-py3-none-any.whl -
Subject digest:
d55200c3b3398c48675c97535569a1c48a8313eb2f78bf8d8eed54bc5d4a1bda - Sigstore transparency entry: 582841644
- Sigstore integration time:
-
Permalink:
abdulvahapmutlu/orbit-boost@f31b51b021b123d4c70e3f2c4f5eb976c32e1da8 -
Branch / Tag:
refs/tags/v0.1.1.post1 - Owner: https://github.com/abdulvahapmutlu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f31b51b021b123d4c70e3f2c4f5eb976c32e1da8 -
Trigger Event:
push
-
Statement type: