THE spread
WK 03 · 2026 · 47 games in

Logistic Regression vs Random Forest: Win Probability (Part 2)

Part 2 of the win-probability series compares three ways to fit the same six features to a probability, and explains why most modern public models settled on tree-based methods.

Updated 6 min read

The same six features — score differential, time remaining, field position, down and distance, timeouts, and a spread-adjusted pregame prior — can be fed to more than one kind of model, and the algorithm chosen changes how well the resulting win probability holds up in unusual game states. Part 1 of this series built a football win probability model with logistic regression as the first pass; this part compares it against random forest and gradient boosting, the two tree-based methods most public models have converged on.

What Logistic Regression Assumes

Logistic regression fits a linear combination of the input features and passes the result through the logistic function, producing a number bounded between 0 and 1. Its central assumption is that each feature’s effect on the log-odds of winning is additive and constant across the range of the other features — score differential contributes the same way whether there are two minutes left or two quarters, unless the model is explicitly given an interaction term that changes that.

That assumption is close enough to true for most of a football game to make logistic regression a reasonable baseline, but it breaks down in exactly the situations a broadcast win-probability graphic gets tested on hardest: the final two minutes of a half, when the value of a single point, a single timeout, or a single yard of field position swings much faster than it does in the first quarter. A pure logistic model needs those interactions engineered by hand — the multiplicative score-time term described in Part 1 is one example — or it will underreact to fast-moving late-game situations.

What Random Forest and Gradient Boosting Add

Random forest and gradient-boosted trees both build their predictions from decision trees, but they combine them differently. A random forest, introduced by Leo Breiman in a 2001 paper in the journal Machine Learning, builds many trees independently, each on a randomized subset of the data and features, and averages their outputs — a strategy that mainly reduces variance (Breiman, 2001). Gradient boosting, introduced the same year by Jerome Friedman in The Annals of Statistics, builds trees sequentially, with each new tree trained to correct the residual errors of the trees before it — a strategy aimed more directly at reducing bias (Friedman, 2001). Neither paper was written with football in mind; both describe general-purpose machine learning methods that later got applied to sports data among many other domains.

The practical advantage for a win probability model is that tree-based methods can discover interaction effects on their own. A tree can learn, without being told, that score differential matters much more in the fourth quarter than the first, simply by repeatedly splitting on time remaining and then on score inside each resulting time bucket. That is the same interaction a logistic regression needs an engineered term to represent — the tree-based model gets it for free, at the cost of a model that is harder to read directly, since the “coefficient” for any one feature no longer exists as a single number.

nflfastR’s current public win probability model uses xgboost, a gradient-boosting implementation, and the project’s own writeup gives the stated reasons: building in era adjustments so that game states from different decades of football can be compared more fairly, and improving calibration “especially for end-of-half situations with complicated nonlinear interactions between variables” (Open Source Football) — precisely the late-game, fast-changing situations described above.

How a Single Decision Tree Splits the Data

Both random forest and gradient boosting are built from decision trees, so understanding one tree explains most of how the ensemble behaves. A decision tree starts with the full set of training plays and repeatedly asks a yes/no question about one feature — “is time remaining under 300 seconds?” — choosing at each step the question that best separates plays that resulted in a win from plays that resulted in a loss. Each answer splits the data into two smaller groups, and the process repeats inside each group, recursively, until a stopping rule is reached (a minimum number of plays per group, or a maximum tree depth). The final groups, called leaves, each get assigned a win probability equal to the observed win rate of the training plays that landed there.

A single tree built this way can already represent an interaction for free: if the first split is on time remaining and the second, inside the “under 5 minutes” branch, is on score differential, the tree has effectively learned that score differential matters differently depending on time remaining — without that interaction ever being written down as an explicit formula. A random forest averages many such trees, each grown on a different random slice of the data; a gradient-boosted ensemble grows trees one after another, each one aimed specifically at the plays the previous trees got most wrong.

What Gets Traded Away

The gain in flexibility from a tree-based method is not free. A gradient-boosted model with hundreds of trees is far harder to explain in a single sentence than a logistic regression, whose coefficients can be read off directly (“each additional point of lead adds roughly this much to the log-odds of winning”). Tree-based models are also more prone to overfitting the training data if left unconstrained — a concern this series returns to directly in the discussion of uncertainty and overfitting later in the cluster — which is part of why cross-validation matters more, not less, once the model moves beyond logistic regression.

For a hypothetical illustration only: a logistic regression might assign a lead of 10 points with 5 minutes left a win probability of roughly 85%, using the same coefficient it would apply to a 10-point lead with 25 minutes left, unless an interaction term corrects it. A tree-based model trained on the same data could split on time remaining first, then evaluate the 10-point lead separately within the “under 5 minutes” branch and the “over 20 minutes” branch, arriving at something closer to 92% in the first case and 70% in the second — numbers invented here purely to illustrate the mechanism, not measured from any real fit.

Regularization settings — how deep a tree is allowed to grow, how many trees an ensemble builds, how many plays must land in a leaf before it is allowed to split further — control how aggressively a tree-based model is permitted to specialize to the training data. Set too loosely, a gradient-boosted model can start fitting quirks specific to particular seasons or particular teams rather than a pattern that will hold up on new data, which is exactly the overfitting risk a later piece on win probability, uncertainty and overfitting covers directly, and exactly why cross-validation matters more once a model moves beyond logistic regression. Set correctly, those same settings are what let a tree-based model capture genuine interactions like the score-time example above without also memorizing noise.

There is also a computational trade-off that rarely gets mentioned alongside the accuracy question. A logistic regression with six features fits in a fraction of a second and can be refit on an entire season’s worth of plays as new data arrives with almost no cost. A gradient-boosted ensemble with hundreds of trees takes measurably longer to train and, more importantly, longer to explain to someone auditing the model’s behavior on a specific play — a cost that matters more for a public, reproducible research model than it does for a one-off internal tool.

Choosing Between Them

Neither algorithm is unconditionally correct for a football win probability model. Logistic regression remains a defensible choice when interpretability matters as much as raw accuracy, or as a fast baseline to compare a more complex model against. Random forest and gradient boosting earn their added complexity when the goal is squeezing out calibration gains in exactly the fast-changing, high-leverage situations — two-minute drills, end-of-half sequences, onside-kick aftermaths — where a linear model’s assumptions are weakest. Part 3 of this series takes up the next question directly: once a model is fit, with either family of algorithm, how is “good” actually measured?

Frequently asked questions

Is random forest better than logistic regression for win probability?

Not automatically. Random forest and gradient-boosted trees can capture nonlinear interactions between features — like how field position changes the cost of a turnover — without those interactions being specified by hand, which is why nflfastR's current model uses a tree-based method (xgboost). But a well-specified logistic regression with the right interaction terms can perform competitively, and it stays easier to inspect.

Why did nflfastR switch to a tree-based win probability model?

The stated reasons were era adjustment (allowing the model to weigh recent seasons differently from older ones) and better handling of nonlinear interactions in complicated situations, especially near the end of a half, where tree-based methods like xgboost tend to outperform a purely linear specification.

What is the difference between random forest and gradient boosting?

Random forest builds many decision trees independently on random subsets of the data and averages their predictions, which reduces variance. Gradient boosting builds trees sequentially, with each new tree focused on correcting the errors of the ones before it, which tends to reduce bias. Both were introduced as general-purpose machine learning methods before being applied to sports data specifically.

Does a tree-based model need feature engineering the way logistic regression does?

Less of it. A tree-based model can learn interaction effects — like time remaining changing the importance of score differential — from raw features on its own, where a logistic regression has to be given that interaction as an explicit term, such as the diff_time_ratio combination used in nflfastR's model.

Is logistic regression still worth using for a win probability model?

Yes, especially as a first pass or a baseline to compare a more complex model against. Its coefficients are directly interpretable, it trains quickly on a full season of play-by-play data, and if a tree-based model only marginally outperforms it, the added complexity may not be worth the loss of interpretability.

Who introduced random forests and gradient boosting?

Leo Breiman introduced random forests in a 2001 paper in the journal Machine Learning. Jerome Friedman introduced gradient boosting the same year in a paper in The Annals of Statistics, framing it as a general numerical-optimization technique for additive models rather than something specific to sports.

Sources

  1. Breiman (2001), "Random Forests" (Machine Learning, vol. 45, pp. 5-32)
  2. Friedman (2001), "Greedy Function Approximation: A Gradient Boosting Machine" (The Annals of Statistics, vol. 29, no. 5, pp. 1189-1232)
  3. Open Source Football — nflfastR EP, WP, and CP models