Skip to content

Latest commit

 

History

History
136 lines (94 loc) · 6.38 KB

File metadata and controls

136 lines (94 loc) · 6.38 KB

CHANGELOG

Unreleased

Features

  • feature_contributions(X) API — every model now exposes a feature_contributions(X) method that decomposes each prediction into an additive scalar bias (the training-set prior) and a per-sample, per-feature contribution matrix of shape (n_samples, n_features). The decomposition is exact: bias + contributions[i].sum() == predict(X)[i] for every sample. Applies to DeepGBoostRegressor, DeepGBoostClassifier, DeepGBoostMultiClassifier, DGBFModel, DGBFMultiOutputModel, and TreeUpdater.

  • AditiveDecisionTree — new internal tree class (deepgboost.tree.aditive_decision_tree) that implements the exact prediction-decomposition algorithm. TreeUpdater now wraps AditiveDecisionTree instead of sklearn's DecisionTreeRegressor.

Breaking Changes

  • feature_importances_ removed — the feature_importances_ property has been removed from all model classes (DeepGBoostRegressor, DeepGBoostClassifier, DeepGBoostMultiClassifier, DGBFModel, DGBFMultiOutputModel, TreeUpdater). Use feature_contributions(X) instead and derive a global importance score as np.abs(contributions).mean(axis=0).

Tests

  • Replaced TestDeepGBoostRegressorFeatureImportances with TestDeepGBoostRegressorFeatureContributions; verifies shape, finiteness, bias-equals-prior, and raises-before-fit.
  • Updated test_classifier.py (test_feature_contributions_shape) for binary and multiclass paths.
  • Updated test_multiclassifier.py (test_feature_contributions) to assert bias shape, finiteness, and exact prior equality.
  • Added TestAditiveDecisionTreeContributions in test_dgbf.py: shape, decomposition identity, root-node bias, depth-1 stump sparsity, and raises-before-fit.
  • Added TestTreeUpdaterContributions in test_dgbf.py: decomposition identity with and without sample weights.

Examples

  • examples/regressor.ipynb rewritten: migrated from Diabetes to California Housing dataset, added feature_contributions walkthrough, updated plot_importance call (removed stale X_train positional argument).

v0.3.4 (2026-05-27)

Bug Fixes

  • Fix wrong tagging and configure semantic release (776fb6f)

v0.3.2 (2026-05-27)

Chores

Added Classification experiment: ClassificationBootstrapTest is added alongside the existing BootstrapModelTest for regression. Configuration is split into RegressionModels and ClassificationModels

New model XGBoost: : Added XGBoost Regressor and classifier to the benchmark

Model Adapters: Created a model abstract interface and the wrapper implementation for all the models: GradientBoosting, RandomForest, XGBoost, and DeepGBoost.

New datasets: Abalone, Adult, BankMarketing, CaliforniaHousing and Penguins are added (regression and classification). Obsolete datasets removed (Cargo2000, Obesity, Parkinson, Superconductor, Temperature, Wine).

  • chore changed experiment result format to jsonl

  • add benchmar generator

  • update github action filter

Features

  • Deepgboostmulticlassifier, benchmark fixes, ablation config, std from CV folds (c02e76f)

  • Add DeepGBoostMultiClassifier with native softmax multiclass (DGBFMultiOutputModel, per-class single-output trees, hessian-weighted NNLS) - Rename gbm/ → dgbf/ module structure - Fix CrossValidationModelTest std: store per-fold scores (not per-run averages) - Fix BenchmarkGenerator to read *_cross_validation_test.json and strip both bootstrap/cv suffixes - Integrate ablation support into config.json + ExperimentRunner (Ablations: [] section, no-op by default) - Delete standalone run_ablation.py; ablations now run via run_experiments.py - Fix quickstart.ipynb import path after dgbf/ rename - Add COM812 trailing commas across all source files (ruff compliance) - Remove 6 redundant/tautological tests (134 → 128 passing tests)

  • #1: Create python project (7613924)

Summary New Python package deepgboost: full implementation of the DGBF (Distributed Gradient Boosting Forest) algorithm, including regressor, classifier (binary and multiclass), low-level functional API (DeepGBoostBooster), callback system, and plotting utilities.

Test suite: coverage of all core modules — booster, regressor, classifier, metrics, objectives, callbacks, and training.

Reproducible benchmark: scripts to compare DGBF against RandomForest and GradientBoosting on 9 UCI regression datasets, with pre-generated results (CSV, PNG). DGBF outperforms both in 7 out of 9 datasets.

Example notebooks: quickstart, classifier, regressor, and serialization — all executable and validated with nbmake.

CI/CD: GitHub Actions workflows for multi-version testing (3.10–3.13), linting with ruff, coverage reporting via Codecov, notebook execution, automated PR review with Claude, and PyPI publishing via OIDC Trusted Publishing on v*.. tags.

README: documentation with algorithm description, equations, figures, and benchmark results.

  • #5: Add hessian residuals (03797f0)
  • Added hessian residuals: Improve the leraning process using the second order derivative from the Taylor expansion (hessian). This is equivalent to use the newton raphsody optimization process. The difference may be noticed mainly in classifier

  • Improve default params: After many iteration improved the default params from both, classifier and regressor models

  • Added agents and skills: Included expertise agents and skills in the project scope to improve the learning process. As well as a mcp connection to github not used in this PR because today the api is falling :(

  • Rerun benchmark results: Still the best model out of the four but it makes me mad not winning in all the datasets. DeepGBoost is a more general model than RandomForest and XGBoost. It should always win.