FDEInterviews logo
KDD 2016

XGBoost: A Scalable Tree Boosting System

Gradient boosted trees with a regularized objective, built-in handling of missing values and serious systems engineering. Still the first model to try on a customer's tables.

Breakdown by FDE Interviews · 17 min read · Updated

About the original · 2016
AUTHORS
Chen, Guestrin
FROM
University of Washington
PUBLISHED
Mar 2016 · KDD 2016
CITED BY
64,085Semantic Scholar · Oct 2026
IN THIS BREAKDOWN · 10 SECTIONS

You can read 14% of this breakdown.

01

The paper in one minute

Gradient tree boosting builds a model as a sum of small decision trees. Each new tree is fit to correct the errors of the trees before it, and the final prediction adds up a score from every tree. By 2015 it was the most reliable method for tabular data, the rows and columns of business databases, and the backbone of many competition wins and production systems for click prediction and ranking.

XGBoost, by Tianqi Chen and Carlos Guestrin at the University of Washington, made it fast and practical at scale. The paper contributes on two levels. On the algorithm side: a regularized objective that penalizes leaf count and leaf size; split scoring with both first and second derivatives of any differentiable loss; a split finder that learns which way missing values should go; and a weighted quantile sketch for choosing good candidate splits on large data. On the systems side: data stored in sorted column blocks so sorting happens once, cache-aware memory access, compression and sharding for data that does not fit in memory, and a distributed version.

The adoption numbers in the introduction are the authors' own count. Of 29 winning solutions published on Kaggle's blog during 2015, 17 used XGBoost. Every team in the top 10 of KDD Cup 2015 used it. The paper's experiments show it training as accurately as scikit-learn's implementation at a fraction of the time per tree, and handling 1.7 billion rows on a single machine.

THE IDEA, VISUALLY
SCORE EVERY SPLIT WITH TWO SUMS each row: g, h 1st and 2nd derivative of loss leaf weight w = −G / (H + λ) gain = ½ [ GL²/(HL+λ) + GR²/(HR+λ) − G²/(H+λ) ] − γ G, H = sums of g, h on each side; split only if gain > 0 income < 40k ? yes no / missing leaf leaf missing values go the default way, chosen by trying both sides and keeping the better gain ONE TREE AT A TIME, ADDED UP prediction = sum of all trees' leaf weights × η (shrinkage) λ, γ: penalties on leaf size and leaf count column subsampling, as in random forests approximate mode: candidate splits at weighted quantiles TIME PER TREE, HIGGS-1M, 500 TREES exact greedy, one machine (Table 3) XGBoost test AUC 0.8304 0.6841 s scikit-learn test AUC 0.8302 28.51 s R gbm test AUC 0.6224 1.032 s WHAT THE SYSTEM WORK BOUGHT > 50× sparsity-aware splits vs naive, Allstate-10K 2× cache-aware prefetch on 10M rows 3× · 2× block compression · sharding on 2 disks 1.7 B rows on one machine, out of core 4 machines enough for all 1.7 B rows distributed
XGBoost scores every candidate split with sums of first and second derivatives, learns where missing values should go, and pairs that algorithm with column blocks, cache-aware access and out-of-core storage. The result trained on 1.7 billion rows with one machine.
Research notes: the problem, approach and results
17 of 29

Kaggle winning solutions published in 2015 that used XGBoost, per the authors' count

41×

less time per tree than scikit-learn on Higgs-1M, at the same test AUC (Table 3)

1.7B

rows of click data trained on one machine, out of core

THE PROBLEM

Gradient boosted trees were winning on tabular data, but existing implementations were slow, memory-bound, awkward with sparse or missing data, and hard to run on large datasets or clusters.

THE IDEA

Combine a second-order, regularized boosting objective with a sparsity-aware split finder, a weighted quantile sketch for approximate splits, and a storage layout designed for caches, disks and machines.

THE RESULT

On one million Higgs rows it matched scikit-learn's accuracy at a fraction of the time per tree, ran more than 50× faster on sparse data than a naive split finder, and trained on 1.7 billion rows on a single machine or four cluster nodes.

02

Why it matters to an FDE

Much of what customers want predicted lives in tables: churn, fraud, claim cost, late payment, lead scoring, demand. For those problems, boosted trees remain a strong default, and an FDE who reaches for an LLM first often ships something slower, more expensive and less accurate.

It is the baseline to beat. Before proposing a neural model or an LLM for a tabular prediction, train boosted trees on the same split. If the fancier model cannot clearly beat it, the customer should not pay for the fancier model.

Messy data is normal here. Real tables have missing values and one-hot or sparse columns. XGBoost learns a default direction for missing values at each split and only visits non-missing entries, so it runs on data as it is.

It works alongside LLMs. Common patterns include LLM-extracted fields or text embeddings used as features for a tree model, and small tree classifiers used as routers, filters or risk scores around an LLM system.

It is cheap to run. Training and inference fit on ordinary CPUs. A model that scores millions of rows a minute changes what a customer can afford to automate.

Its weaknesses are well known. Trees overfit if left unchecked, extrapolate poorly beyond the range of the training data, and give probabilities that may need calibrating. The tuning knobs in the paper, shrinkage, depth, λ, γ and column subsampling, exist to manage this.

THE FULL BREAKDOWN

Understand the mechanism. Try it on a real problem.

Unlock this breakdown and 49 more papers.

Premium opens every paper in full, plus every answer, concept, course and guide on the site. One payment for six months of access.

6 months · One payment · No auto-renewal

Get Premium · ₹2,000 / $25
  • ◇1 architecture diagram
  • </>1 runnable code experiment
  • ▦4 results tables
  • ?5 interview questions with answers
  1. 03Key takeaways

    The objective, the split formula, missing values, approximate splits, systems work, misreadings

    Free account
  2. 04How it works

    Second-order boosting, the split algorithms, the weighted quantile sketch and the system design

    Premium
  3. 05The numbers that matter

    Single-machine, ranking, out-of-core and distributed results, with their caveats

    Premium
  4. 06Try it yourself

    Build second-order boosted trees in NumPy, then test missing values, sparsity and approximate splits

    Premium
  5. 07Where it breaks

    The limits of boosted trees and of the paper's evaluation

    Premium
  6. 08Using it on a deployment

    Building, validating and running a boosted-tree model for a customer

    Premium
  7. 09Interview angles

    Five questions this paper prepares you for, with answer hints

    Premium
Back to the paper library →