finds.dev← search

// the find

wepe/tgboost

★ 324 · Java · MIT · updated Jun 2019

Tiny Gradient Boosting Tree

A from-scratch Java implementation of gradient boosting, combining XGBoost's scoring function with SLIQ's level-wise tree building. It's a teaching tool first, a production library second — the Python binding just shells out to a bundled JAR. Worth reading if you want to understand how GBDT internals actually work.

The ternary tree approach to missing values is genuinely interesting — instead of XGBoost's learned direction, it tries left/right/missing and picks the best split, which is a concrete algorithmic difference worth understanding. Categorical feature handling via gradient statistics ordering is implemented cleanly without one-hot encoding. The parallel tree building on a single machine is real, not fake — it uses the SLIQ attribute list structure which makes column-parallel splits tractable. The Python-branch companion repo is a clean pedagogical implementation that reads almost like pseudocode.

Abandoned since 2019 — last commit is seven years old, no issues triaged, no releases. The Python package ships a prebuilt JAR blob in the repo rather than building from source, so you can't inspect or modify the actual execution path without switching to Java. No support for multi-class classification, ranking, or custom objectives — you get squared error and log loss and nothing else. There's no real test suite; correctness is validated by running the Higgs example and eyeballing AUC, which is not confidence-inspiring if you want to extend it.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →