Releases: iamthinbaker/deepgboost
Release list
v0.3.4
v0.3.4 (2026-05-27)
This release is published under the Apache-2.0 License.
Bug Fixes
- Fix wrong tagging and configure semantic release (
776fb6f)
Detailed Changes: v0.3.2...v0.3.4
v0.3.1 — Documentation site, CONTRIBUTING, and CITATION
What's new
Documentation site
- New MkDocs site (Material theme) deployed to GitHub Pages: https://delgadopanadero.com/DeepGBoost/
- API reference for all public classes, generated from NumPy docstrings via mkdocstrings
- Examples section with rendered Jupyter notebooks (quickstart, regressor, classifier, serialization)
- SEO: meta descriptions, tags, social cards, social links (LinkedIn, Twitter)
- GitHub Actions workflow for automatic deployment on push to
main
Contributing & Citation
CONTRIBUTING.md— dev setup, code style, project structure, and PR checklistCITATION.cff— standard citation file; GitHub shows a "Cite this repository" button on the repo page
Other
- Completed missing type annotations in NumPy docstrings across all
fit/_fit_layermethods - Images moved from
doc/todocs/img/; legacydoc/directory removed .claude/settings.json— replacedbypassPermissionswith an explicit allow/deny permission list
v0.3.0 — DeepGBoostMultiClassifier & benchmark improvements
What's new
New feature: DeepGBoostMultiClassifier
Native softmax multiclass classifier backed by DGBFMultiOutputModel. Unlike the OvR approach in DeepGBoostClassifier, this trains a single model with shared tree splits that jointly optimise residuals for all K classes simultaneously.
- Per-class single-output trees with
SoftmaxObjective(gradient/hessian from softmax cross-entropy) - Hessian-weighted NNLS per class per layer
predict_probareturns calibrated probabilities via softmax; binary case handled via two-column one-hot- Full sklearn compatibility:
clone,Pipeline, pickle,get_params/set_params
Module rename: gbm/ → dgbf/
Internal module reorganisation for clarity. Direct imports from deepgboost.gbm.* are a breaking change — use deepgboost.dgbf.* instead.
Benchmark improvements
- CV std fix:
CrossValidationModelTestnow stores per-fold scores individually so std is computed across all folds (not collapsed per-run averages → std was always 0) - BenchmarkGenerator fix: reads
*_cross_validation_test.jsoncorrectly and strips both_bootstrap_testand_cross_validation_testsuffixes from dataset names - Ablation config: ablation experiments are now configured via the
"Ablations"section inconfig.jsonand run automatically viarun_experiments.py— the standalonerun_ablation.pyscript has been removed
Other
- Ruff COM812 compliance across all source files
- Removed 6 redundant/tautological tests
v0.2.1
v0.2.1
🚀 What’s New
✨ Features & Enhancements
-
Hessian Residuals 🧠: Improved the learning process by integrating second-order derivatives from the Taylor expansion (Hessian). This implements a Newton-Raphson optimization approach, showing significant gains particularly in classification tasks.
-
Optimized Default Params ⚙️: After extensive iteration, we’ve updated the default parameters for both Classifier and Regressor models for better out-of-the-box performance.
📈 Benchmarks & Performance
- Rerun Benchmark Results 🏆: Confirmed! We remain the top-performing model among the big four. While DeepGBoost is more versatile than RandomForest and XGBoost, we’re still pushing to sweep every single dataset.
v0.2.0
v0.2.0
✨ New features
🎲 Layer bagging — max_features parameter
Each tree within a layer now supports feature subsampling at each split via the new max_features parameter, available on both DeepGBoostRegressor and DeepGBoostClassifier. Mirrors sklearn's DecisionTreeRegressor.max_features. Defaults to None (all features, preserving previous behaviour).
⚖️ Configurable weight_solver
New weight_solver parameter controls how the T bagged trees in each layer are combined:
"nnls"(default) — Non-Negative Least Squares optimal weights, normalised to sum 1"uniform"— equal weight1/Tfor every tree, equivalent to RandomForest averaging
🌲 RandomForest equivalence
With n_layers=1, weight_solver="uniform", and learning_rate=1.0 the model is mathematically equivalent to a standard RandomForest.
from deepgboost import DeepGBoostRegressor
rf = DeepGBoostRegressor(
n_layers=1,
weight_solver="uniform",
max_features="sqrt",
learning_rate=1.0,
)🔧 Improvements
📦 Callbacks refactored from a single callback.py module into a callbacks/ package with one file per class
🔁 sklearn Pipeline compatibility verified with cross_val_score and get_params/set_params tunneling tests
🐛 Bug fixes
Fixed missing comma in callbacks/init.all that caused silent string concatenation
Fixed callback class names exported from deepgboost not matching the actual class names after refactor
v0.1.0
Hello world 👋
Initial release of DeepGBoost — a Python implementation of the Distributed Gradient Boosting Forest (DGBF) algorithm, which unifies RandomForest and GradientBoosting into a graph-structured tree ensemble capable of hierarchical representation learning.
Highlights
- DeepGBoostRegressor and DeepGBoostClassifier with a scikit-learn compatible API
- Low-level functional API via DeepGBoostBooster for full training control
- Callback system for early stopping, logging, and custom hooks
- Feature importance computation and plotting (plot_importance)
- Model serialization with pickle