Skip to main content

PrismBoost: gradient boosting with SEFR oblique splits for classification and regression.

Project description

PrismBoost

PrismBoost is a gradient-boosting classifier/regressor that uses SEFR oblique splits at internal nodes (hyperplane splits instead of axis-aligned thresholds), with an optional fast C++ backend.

from prismboost import PrismBoostClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=0, stratify=y
)

clf = PrismBoostClassifier(n_estimators=100, max_depth=3, random_state=0)
clf.fit(X_train, y_train)
print(clf.score(X_test, y_test))

Why oblique boosting?

Axis-aligned GBDTs approximate curved boundaries with staircases. PrismBoost fits linear (oblique) splits, so decision surfaces on non-linear problems are typically smoother.

PrismBoost vs XGBoost probability surfaces on moons

Predicted-probability surfaces on moons: PrismBoost (left) vs XGBoost (right).

Decision boundaries on six synthetic 2D datasets

Decision boundaries on six synthetic 2D datasets (rows) across classifiers (columns). Lower surface roughness S is smoother.

Mean surface roughness by classifier

Benchmark highlights (PMLB)

Evaluated on 121 Penn Machine Learning Benchmark classification datasets against strong baselines (CatBoost, LightGBM, LightGBM-linear, XGBoost, SPORF, Random Forest, Logistic Regression). Hyperparameters are tuned with Optuna; scores are repeated stratified CV.

Median scores (higher is better for F1 / ROC-AUC; lower is better for inference latency):

Model Median macro-F1 Median ROC-AUC Median inference (ms/row)
PrismBoost 0.903 0.976 0.056
CatBoost 0.892 0.976 0.184
XGBoost 0.875 0.970 0.615
LightGBM-linear 0.875 0.970 0.567
LightGBM 0.870 0.972 0.550
Random Forest 0.862 0.964 5.140
SPORF 0.856 0.970 10.058
Logistic Regression 0.822 0.942 0.053

Average ranks (1 = best; Friedman tests significant for macro-F1 and ROC-AUC):

Model Macro-F1 rank ROC-AUC rank
CatBoost 3.33 3.48
PrismBoost 3.88 4.26
LightGBM-linear 3.99 4.26
LightGBM 4.10 4.10
XGBoost 4.31 4.24
Logistic Regression 5.31 5.66
Random Forest 5.48 5.31
SPORF 5.61 4.70

Nemenyi critical-difference diagrams

Nemenyi critical-difference diagrams (α = 0.05). Models connected by a bar are not significantly different.

On these data, PrismBoost is competitive with modern GBDTs on accuracy while remaining among the fastest at inference (second only to logistic regression; fastest non-linear model by median latency).

Install

Requires Python 3.10–3.13, a C++17 compiler, and CMake (for the optional native extension).

pip install .
# or editable:
pip install -e ".[dev]"

If the C++ extension fails to build, the package still works via the pure-Python backend.

Public API

Name Description
PrismBoostClassifier Primary classifier (sklearn-compatible)
PrismBoostRegressor Primary regressor
SEFRBoostClassifier / SEFRBoostRegressor Compatibility aliases
SEFR Linear weak learner used inside oblique splits

Features

  • Oblique tree splits from SEFR (closed-form linear separator)
  • Binary and multiclass classification; regression
  • Optional C++ backend for faster fit/predict
  • sklearn estimator API (fit, predict, predict_proba, pipelines, pickling)

Quick example

See examples/quickstart.py.

Tests

pip install -e ".[dev]"
pytest -q

License

This project is licensed under the MIT License.

Third-party note: prismboost._utils includes code derived from wnb under the BSD 3-Clause License.

Citation

If you use PrismBoost in academic work, please cite the accompanying paper (to be updated on publication).

Authors

  • Hamidreza Keshavarz
  • Reza Rawassizadeh

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prismboost-0.1.1.tar.gz (734.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prismboost-0.1.1-cp313-cp313-macosx_26_0_arm64.whl (151.6 kB view details)

Uploaded CPython 3.13macOS 26.0+ ARM64

File details

Details for the file prismboost-0.1.1.tar.gz.

File metadata

  • Download URL: prismboost-0.1.1.tar.gz
  • Upload date:
  • Size: 734.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for prismboost-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2bdab5eb2f50c70ee7e0ac8302d681eca5d8ea26ea03ae1f305c2e40276fe4f1
MD5 0db73a5d940ceeb82d3c7571de140614
BLAKE2b-256 b5bb68002e489849b42702832e4dd828b1939f0b18d3f6189bd071d26683f347

See more details on using hashes here.

File details

Details for the file prismboost-0.1.1-cp313-cp313-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for prismboost-0.1.1-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 eac19f340c289af99c2e503f0f45c36c9f970aa1cae14dc721021df734d1cc0e
MD5 edb4fce169561a87a0362e8a8d536710
BLAKE2b-256 b0507874b929b99396f8019a45031d5e885dc1fc4f8afe1a474aeeb21bc437e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page