Surrogate Splits and Missing Values in Trees
Decision trees can handle missing data without imputing anything first, by learning a backup rule — a surrogate split — that mimics the primary split's behavior using a different feature, for exactly the rows where the primary feature is missing.
Prerequisites: Decision Trees and CART
A tree's split — "if leverage ratio > 3.0, go right" — has an obvious problem if leverage is missing: which way does the row go? The usual fix elsewhere in machine learning is imputing the value first. Classical CART trees instead build a surrogate split: at every node, alongside the primary rule, the tree finds a backup rule on a different feature that best mimics the primary split's assignment, so a row with the primary feature missing can still be routed sensibly.
The analogy: a substitute who plays the same role
A sports team's star player sometimes doesn't show up, so the coach has already identified a backup whose on-field decisions tend to match the star's closely enough — not the same player, but reading the game the same way. When the star is out, the backup makes a very similar call. A surrogate split is exactly this backup plan, decided in advance at every node.
The mechanics: finding a substitute split at every node
At a node with primary split "," a surrogate search checks every other feature and threshold for how well "" reproduces the same assignment, using rows where both are observed:
In plain English: a surrogate is judged purely by how often it lands on the same side as the primary feature would have — nothing about accuracy on the actual target, just mimicry. At prediction time, if is missing, the tree falls back to the top surrogate, then the next, only defaulting to the majority branch if every surrogate is also missing.
Worked example: routing a row with missing leverage
If the primary split is "leverage > 3.0," "interest coverage < 2.5" might agree with it on 91% of rows where both are observed — high leverage firms tend to have low coverage — making it the top surrogate. For a company where leverage is missing but coverage of 1.8 is available, the tree applies the surrogate: since , the row is sent the same direction a high-leverage company would go, a reasoned guess rather than an arbitrary default.
Picture the surrogate as a second, cheaper boundary drawn using a different feature axis — imperfect, but close enough to the primary boundary above to route most cases correctly when the primary axis is unavailable.
What this means in practice
Surrogate splits let a tree be trained and queried without a separate imputation pipeline, useful in finance where missingness is often informative itself (a private company's disclosure gaps aren't random) rather than something to paper over. The tradeoff is cost: computing surrogates at every node multiplies training cost, and most modern gradient-boosting libraries use simpler strategies instead.
A surrogate split is a backup rule on a different feature, chosen purely to mimic the primary split's routing on rows where both are observed — letting a tree route a row with a missing feature to a well-reasoned branch instead of requiring imputation.
A surrogate is optimized to agree with the primary split, not to predict the target well on its own. A common confusion treats the top surrogate as "the second most important feature" for the outcome — it's the second most important feature for reproducing this split's routing, a narrower thing.
Related concepts
Practice in interviews
Further reading
- Breiman, Friedman, Olshen & Stone, Classification and Regression Trees (1984), ch. 5.3