Skip to main content

Gradient boosted decision trees for multiple outputs

Project description

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 pip and uv installation 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 deterministic parameter
  • 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 when base_score is unset

For the original project, benchmark figures, experiment scripts, and upstream research context, please see:

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 deterministic parameter for fixed-thread CPU repeatability on the same platform
  • optional sklearn-compatible wrappers
  • automatic regression mean initialization when base_score is omitted
  • scalar or per-output base_score values for MultiOutputGBDT
  • accuracy-oriented wrapper defaults for regression workflows
  • split gain thresholding through gamma that 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

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}
}

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

omnigbdt-0.5.0.tar.gz (94.8 kB view details)

Uploaded Source

Built Distributions

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

omnigbdt-0.5.0-cp313-cp313-win_amd64.whl (88.2 kB view details)

Uploaded CPython 3.13Windows x86-64

omnigbdt-0.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (207.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

omnigbdt-0.5.0-cp313-cp313-macosx_14_0_arm64.whl (332.9 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

omnigbdt-0.5.0-cp312-cp312-win_amd64.whl (88.2 kB view details)

Uploaded CPython 3.12Windows x86-64

omnigbdt-0.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (207.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

omnigbdt-0.5.0-cp312-cp312-macosx_14_0_arm64.whl (332.9 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

omnigbdt-0.5.0-cp311-cp311-win_amd64.whl (88.2 kB view details)

Uploaded CPython 3.11Windows x86-64

omnigbdt-0.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (207.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

omnigbdt-0.5.0-cp311-cp311-macosx_14_0_arm64.whl (332.9 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

omnigbdt-0.5.0-cp310-cp310-win_amd64.whl (88.2 kB view details)

Uploaded CPython 3.10Windows x86-64

omnigbdt-0.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (207.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

omnigbdt-0.5.0-cp310-cp310-macosx_14_0_arm64.whl (332.9 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file omnigbdt-0.5.0.tar.gz.

File metadata

  • Download URL: omnigbdt-0.5.0.tar.gz
  • Upload date:
  • Size: 94.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnigbdt-0.5.0.tar.gz
Algorithm Hash digest
SHA256 8d9154cd3f8af6c1aa1710358a18a351f0e89017644233a4f429c6c1f04eabdb
MD5 99e50e036a9eed9f97f3c836e617f0ef
BLAKE2b-256 c142d0072050fab155af5f400f6a77ee154d6ae13668fef5d095c6cbf60345a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0.tar.gz:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: omnigbdt-0.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 88.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnigbdt-0.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5cc7c3286cc954cc2dbc35881cb311ca01c37a64b6664cc7fbf9823d458cea24
MD5 21949ece1ff1e5f2e76b77732fcaf5e4
BLAKE2b-256 e4ec8740a355b92ee1c0ac885933991b5b68e3edb7d611abc660e905d97e2a83

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3eecdbdd20c0e5006d79601ee0c4de83fe604ba813efd72b96cbaf6490d1a242
MD5 4925ed3c51286da3bf4d6dfa52aeea6c
BLAKE2b-256 e92252b5aabd6cb153d428f1b7d99c0fc9d583ddfa16a1750036ce5be4c9d9c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.5.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 89951907816c491d77c1afbc14ef531d6df89b33dc6f0af2b3dbb0993e24cff6
MD5 74ee70c2d1a8b5f3444afe89cc6c2514
BLAKE2b-256 6f675e2545dee26516a081ecedbffd0fbcda5b2418d3376184f9e17009a55b48

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: omnigbdt-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 88.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnigbdt-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 22b32556f551807315c1b82c6f39973a57220317309d1b0bb576521643258aa3
MD5 4adeb2b20887827e898c26bfa6435ad5
BLAKE2b-256 627c5a4b75bee1d25541b62ea2e96f5cde12eb82f293480b6e0943e5b7e14f6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dcafc1ba7d54c5576a8523ff12d4930d175c5f6d67326bd1efae3aeb746a1127
MD5 6e16ed501687386e1e32b19199eff80f
BLAKE2b-256 3de9ad3746e9498f02d6c429acf67febdfc079673ae3f029ce5e6e4d7558f8ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.5.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 fb9686656beb40b3859b32c32679a12d306c15baa1d161685474057e3647ebcd
MD5 1be44ff76b5ebfd90261a3a0a6a0d34c
BLAKE2b-256 be4b91ee4cba952fb7a7096812a64bcf6a8a67f6b99be3268d68b061b1a44813

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: omnigbdt-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 88.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnigbdt-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bf0d925ebfddd1db1243d370c5deeba21462abb6875f4234d190e206bd042a9d
MD5 047ba2a25c0c023e3ee6e6223de9ab0f
BLAKE2b-256 626f2229d43d5c89d8c5d527a16d351def5703ff137767ce8f4a5e43bb49dc2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a489c4362ef7ca7a62ce231f0ac4799db6b18102c98a15b15e26764ad80693b
MD5 ccdc5a785cb03f0ff8c6a22e7b2f9195
BLAKE2b-256 d98cc49df4f6cb5dd478b131dc04803c475666747f494de2e811248460166319

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.5.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 84fccb873b20d7347682b27de45d4af84822f5d1f4dbbc4884d6b9a30039ff69
MD5 e583daa3f4470a61f90cda4b0475501e
BLAKE2b-256 29dbd54b91c8a20dcd2aa3a3f1f7cd202072b402e458b34584df9ce665aad61a

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: omnigbdt-0.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 88.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omnigbdt-0.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 79104847914ad2332fd01d68920deaa5abf5801401e7d5d309f22049a492d38a
MD5 59da426d04ca7a18030f3e405d9b78ca
BLAKE2b-256 0cc6e642d5b49002ec14cbf55df421bcde7382d1ddec0496b220d194b4ca94d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c42b71161615ded373ca7523d889d610a6085c5e72a9af32e42d8327771bc6a8
MD5 933c236e4de9607cd0a02df5ebc25b0f
BLAKE2b-256 e7595a88dbab67bd31a5c6fdaabcda8d8d9ba9a519985fce9f0fd9594c1ce3ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omnigbdt-0.5.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for omnigbdt-0.5.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a03c6a569894de210637c5d103f93dd127a960f0e8f6615bde0f96fd4667fbd8
MD5 9550356cb661b0a0d2a4f3add3763f0f
BLAKE2b-256 c3c3bfbe22caee659ec0c482c5589d38a270f0662ec8a8fd4feb21e26d99fa97

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnigbdt-0.5.0-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: wheels.yml on University-of-Aruba/OmniGBDT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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