// the find
wepe/tgboost
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.