Skip to content

Releases: iamthinbaker/deepgboost

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 27 May 09:56

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

Choose a tag to compare

@iamthinbaker iamthinbaker released this 15 Apr 10:30

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 checklist
  • CITATION.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_layer methods
  • Images moved from doc/ to docs/img/; legacy doc/ directory removed
  • .claude/settings.json — replaced bypassPermissions with an explicit allow/deny permission list

v0.3.0 — DeepGBoostMultiClassifier & benchmark improvements

Choose a tag to compare

@iamthinbaker iamthinbaker released this 13 Apr 18:03

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_proba returns 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: CrossValidationModelTest now 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.json correctly and strips both _bootstrap_test and _cross_validation_test suffixes from dataset names
  • Ablation config: ablation experiments are now configured via the "Ablations" section in config.json and run automatically via run_experiments.py — the standalone run_ablation.py script has been removed

Other

  • Ruff COM812 compliance across all source files
  • Removed 6 redundant/tautological tests

v0.2.1

Choose a tag to compare

@iamthinbaker iamthinbaker released this 08 Apr 08:02

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

Choose a tag to compare

@iamthinbaker iamthinbaker released this 05 Apr 09:44

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 weight 1/T for 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

Choose a tag to compare

@iamthinbaker iamthinbaker released this 30 Mar 17:42

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