finds.dev← search

// the find

wepe/efficient-decision-tree-notes

★ 230 · Python · updated May 2019

高效决策树算法系列笔记

A Chinese-language study notebook walking through the algorithmic lineage of efficient decision tree methods — SLIQ, SPRINT, CLOUDS — and how they inform XGBoost and LightGBM. It also ships tgboost, a from-scratch GBDT implementation in both Python and Java, built as a learning exercise rather than a production library. Aimed squarely at ML engineers who want to understand what's happening inside LightGBM rather than just calling fit().

The paper-to-code mapping is genuinely useful: reading why LightGBM uses histogram-based splitting alongside an implementation that does the same thing makes the algorithm click in a way that just reading the LightGBM source doesn't. The tgboost Python implementation is clean enough to follow — gbm.py, tree.py, and tree_node.py are small and readable, not buried under optimization noise. Having both a 'simple' reference version and a more complete version side by side is a good pedagogical choice. The comparison benchmarks against XGBoost on the Higgs dataset give the implementation some empirical grounding.

Abandoned in 2019 — Python ecosystem has moved on significantly and nothing here is compatible with modern scikit-learn conventions or tooling. The notes are entirely in Chinese, which cuts the potential audience roughly in half for a topic where most of the source literature is in English. The tgboost Java variant is half-finished: it has a histogram-based binning stub and a main GBM implementation that don't share code, and there's no documentation bridging them. No explanation of what tgboost deliberately simplifies or omits compared to XGBoost, so it's not obvious where the educational value ends and the missing features begin.

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 →