OmniGBDT
OmniGBDT packages the original GBDT-MO algorithm as a regular Python library. The native C++ training core remains in place, while the Python layer adds wheel-based installation, public custom-objective hooks, optional sklearn-compatible wrappers, and accuracy-oriented regression defaults.
At the mathematical level, GBDT-MO replaces the usual one-tree-per-target strategy with a single tree whose split score is the summed second-order objective gain across all outputs. This allows one tree to reuse shared structure across correlated targets, supports optional sparse leaves that update only the most relevant outputs, and extends histogram-based split search to the multi-output case so the costs of training remain practical at larger output dimensions.
The main public classes are MultiOutputGBDT and SingleOutputGBDT.
Why OmniGBDT
- Joint multi-output gradient boosting from the original GBDT-MO research codebase
- Standard
pipanduvinstallation with the native library bundled inside the package - Public Python callbacks for custom gradients, Hessians, metrics, and early stopping
- Fixed-thread deterministic CPU training through the public
deterministicparameter - Optional sklearn-compatible wrappers for tools such as permutation importance
- Accuracy-oriented regression defaults in the current fork:
num_rounds=200,lr=0.05,max_bins=128,early_stop=15, and automatic mean initialization whenbase_scoreis unset
For the original project, benchmark figures, experiment scripts, and upstream research context, please see:
- Original repository: https://github.com/zzd1992/GBDTMO
- Experiment and evaluation repository: https://github.com/zzd1992/GBDTMO-EX
Installation
Install the released package:
pip install omnigbdt
or with uv:
uv add omnigbdt
Optional extras:
pip install "omnigbdt[plot]"
pip install "omnigbdt[sklearn]"
The current wheel targets are:
- Linux x86_64
- Windows x86_64
- macOS arm64 (Apple Silicon, 14+)
First Model
The example below trains one MultiOutputGBDT model on two correlated targets using only NumPy:
import numpy as np
from omnigbdt import MultiOutputGBDT, Verbosity
rng = np.random.default_rng(0)
X = rng.normal(size=(400, 6))
shared_signal = 1.2 * X[:, 0] - 0.8 * X[:, 1] + 0.5 * X[:, 2] * X[:, 3]
Y = np.column_stack(
[
shared_signal + 0.3 * X[:, 4],
shared_signal - 0.2 * X[:, 5],
]
)
X_train, Y_train = X[:240], Y[:240]
X_valid, Y_valid = X[240:320], Y[240:320]
X_test = X[320:]
model = MultiOutputGBDT(
out_dim=Y.shape[1],
params={
"loss": b"mse",
"max_depth": 4,
"max_bins": 128,
"lr": 0.05,
"early_stop": 15,
"num_threads": 1,
"verbosity": Verbosity.SILENT,
},
)
model.set_data((X_train, Y_train), (X_valid, Y_valid))
model.train(200)
preds = model.predict(X_test)
print(preds.shape)
SingleOutputGBDT can be used to train one model per target column as a simple baseline. A real-world financial benchmark based on the UCI Stock Portfolio Performance dataset, together with custom-objective and sklearn examples, is available in the hosted examples page.
Differences From The Original Package
Compared with the upstream GBDT-MO repository, OmniGBDT currently adds:
- standard Python packaging and bundled native-library loading
- wheel automation for Linux, macOS, and Windows
- public Python callback hooks for custom gradients, Hessians, metrics, and early stopping
- public
deterministicparameter for fixed-thread CPU repeatability on the same platform - optional sklearn-compatible wrappers
- automatic regression mean initialization when
base_scoreis omitted - scalar or per-output
base_scorevalues forMultiOutputGBDT - accuracy-oriented wrapper defaults for regression workflows
- split gain thresholding through
gammathat now applies consistently at the root and deeper nodes
Several targeted native-code fixes are also part of the fork, so same-seed runs are not guaranteed to match older buggy runs exactly. A fuller summary is available in the Differences From Upstream page.
Documentation Guide
- Hosted documentation: https://omnigbdt.readthedocs.io
- Installation and source-build notes: install page
- Worked examples, including the financial benchmark: examples page
- Python API reference: API page
- Parameter reference: parameters page
- Fork-specific differences: differences page
- Development workflow: development page
Project Provenance
This fork builds directly on the original GBDT-MO implementation by Zhendong Zhang and Cheolkon Jung.
OmniGBDT is intended to make the package easier to build, install, and distribute. It is not the canonical source for the paper, benchmark tables, figures, or research documentation.
Versioning
This fork follows Semantic Versioning independently from the upstream GBDT-MO repository.
License
This fork is distributed under the Apache License 2.0. The main license text for this fork is in LICENSE.
Because this repository incorporates and modifies the original GBDT-MO codebase, the original upstream MIT license notice from Zhendong Zhang is preserved in LICENSE.upstream. Additional attribution and fork-specific notice text is provided in NOTICE.
Citation
If this project is used in research, please credit the original paper by Zhang and Jung:
@article{zhang2020gbdt,
title={GBDT-MO: Gradient-boosted decision trees for multiple outputs},
author={Zhang, Zhendong and Jung, Cheolkon},
journal={IEEE transactions on neural networks and learning systems},
volume={32},
number={7},
pages={3156--3167},
year={2020},
publisher={Ieee}
}
Metadata
Release files for omnigbdt 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| omnigbdt-0.5.0.tar.gz | 94.8 kB | Details |
Built distributions (wheels)
Total release size: 2.6 MB
Release files / omnigbdt-0.5.0.tar.gz
| Download URL | omnigbdt-0.5.0.tar.gz |
|---|---|
| Size | 94.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8d9154cd3f8af6c1aa1710358a18a351f0e89017644233a4f429c6c1f04eabdb
|
|
BLAKE2b-256 checksum How to use checksums |
c142d0072050fab155af5f400f6a77ee154d6ae13668fef5d095c6cbf60345a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp313-cp313-win_amd64.whl
| Download URL | omnigbdt-0.5.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 88.2 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5cc7c3286cc954cc2dbc35881cb311ca01c37a64b6664cc7fbf9823d458cea24
|
|
BLAKE2b-256 checksum How to use checksums |
e4ec8740a355b92ee1c0ac885933991b5b68e3edb7d611abc660e905d97e2a83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | omnigbdt-0.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 207.2 kB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3eecdbdd20c0e5006d79601ee0c4de83fe604ba813efd72b96cbaf6490d1a242
|
|
BLAKE2b-256 checksum How to use checksums |
e92252b5aabd6cb153d428f1b7d99c0fc9d583ddfa16a1750036ce5be4c9d9c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp313-cp313-macosx_14_0_arm64.whl
| Download URL | omnigbdt-0.5.0-cp313-cp313-macosx_14_0_arm64.whl |
|---|---|
| Size | 332.9 kB |
| Tags | CPython 3.13 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
89951907816c491d77c1afbc14ef531d6df89b33dc6f0af2b3dbb0993e24cff6
|
|
BLAKE2b-256 checksum How to use checksums |
6f675e2545dee26516a081ecedbffd0fbcda5b2418d3376184f9e17009a55b48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp312-cp312-win_amd64.whl
| Download URL | omnigbdt-0.5.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 88.2 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
22b32556f551807315c1b82c6f39973a57220317309d1b0bb576521643258aa3
|
|
BLAKE2b-256 checksum How to use checksums |
627c5a4b75bee1d25541b62ea2e96f5cde12eb82f293480b6e0943e5b7e14f6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | omnigbdt-0.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 207.2 kB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
dcafc1ba7d54c5576a8523ff12d4930d175c5f6d67326bd1efae3aeb746a1127
|
|
BLAKE2b-256 checksum How to use checksums |
3de9ad3746e9498f02d6c429acf67febdfc079673ae3f029ce5e6e4d7558f8ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp312-cp312-macosx_14_0_arm64.whl
| Download URL | omnigbdt-0.5.0-cp312-cp312-macosx_14_0_arm64.whl |
|---|---|
| Size | 332.9 kB |
| Tags | CPython 3.12 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
fb9686656beb40b3859b32c32679a12d306c15baa1d161685474057e3647ebcd
|
|
BLAKE2b-256 checksum How to use checksums |
be4b91ee4cba952fb7a7096812a64bcf6a8a67f6b99be3268d68b061b1a44813
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp311-cp311-win_amd64.whl
| Download URL | omnigbdt-0.5.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 88.2 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
bf0d925ebfddd1db1243d370c5deeba21462abb6875f4234d190e206bd042a9d
|
|
BLAKE2b-256 checksum How to use checksums |
626f2229d43d5c89d8c5d527a16d351def5703ff137767ce8f4a5e43bb49dc2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | omnigbdt-0.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 207.2 kB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4a489c4362ef7ca7a62ce231f0ac4799db6b18102c98a15b15e26764ad80693b
|
|
BLAKE2b-256 checksum How to use checksums |
d98cc49df4f6cb5dd478b131dc04803c475666747f494de2e811248460166319
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp311-cp311-macosx_14_0_arm64.whl
| Download URL | omnigbdt-0.5.0-cp311-cp311-macosx_14_0_arm64.whl |
|---|---|
| Size | 332.9 kB |
| Tags | CPython 3.11 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
84fccb873b20d7347682b27de45d4af84822f5d1f4dbbc4884d6b9a30039ff69
|
|
BLAKE2b-256 checksum How to use checksums |
29dbd54b91c8a20dcd2aa3a3f1f7cd202072b402e458b34584df9ce665aad61a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp310-cp310-win_amd64.whl
| Download URL | omnigbdt-0.5.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 88.2 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
79104847914ad2332fd01d68920deaa5abf5801401e7d5d309f22049a492d38a
|
|
BLAKE2b-256 checksum How to use checksums |
0cc6e642d5b49002ec14cbf55df421bcde7382d1ddec0496b220d194b4ca94d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | omnigbdt-0.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 207.2 kB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c42b71161615ded373ca7523d889d610a6085c5e72a9af32e42d8327771bc6a8
|
|
BLAKE2b-256 checksum How to use checksums |
e7595a88dbab67bd31a5c6fdaabcda8d8d9ba9a519985fce9f0fd9594c1ce3ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / omnigbdt-0.5.0-cp310-cp310-macosx_14_0_arm64.whl
| Download URL | omnigbdt-0.5.0-cp310-cp310-macosx_14_0_arm64.whl |
|---|---|
| Size | 332.9 kB |
| Tags | CPython 3.10 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a03c6a569894de210637c5d103f93dd127a960f0e8f6615bde0f96fd4667fbd8
|
|
BLAKE2b-256 checksum How to use checksums |
c3c3bfbe22caee659ec0c482c5589d38a270f0662ec8a8fd4feb21e26d99fa97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency log