Bottom line: To predict the total number of points scored in an NFL professional football game, I attempted to improve prediction accuracy compared to a simple linear regression model by using powerful kernel ridge regression. KRR did not do better than linear regression. But I’m not giving up.
Zoltar is my NFL football prediction system. Zoltar uses a combination of classical statistics, a neural network, and a form of reinforcement learning.
My basic Zoltar predicts game results against Las Vegas point spread data. For example, if the Broncos are playing the Jets, the Vegas line might be “Broncos -6.5” meaning the Broncos must win by more than 6.5 points. Zoltar will predict which team will win and by how many points, such as “Broncos will win by 2 points”. This would result in a recommendation to bet on the underdog Jets.
I decided to modify Zoltar to predict the total number of points that will be scored in a game. This can be used to place over-under bets. For example, in the hypothetical Broncos vs. Jets game, the Vegas over-under line might be 42.5 points. You can bet that the total number of points scored by both teams will either be over 42.5 points or under 42.5 points. The .5 prevents ties.
I used Zoltar to create a data file that looks like:
# TotalPointsData2024.txt # week, visitorID, visitorRating, homeID, homeRating, totalPts # 1 24 ravens 2105 8 chiefs 2058 47 1 19 packers 2011 12 eagles 2058 63 1 28 steelers 2035 13 falcons 1964 28 1 6 cardinals 1894 2 bills 2058 62 . . . 18 11 dolphins 2025 17 jets 1874 52 18 31 vikings 2140 18 lions 2200 40
Each line represents one of the 272 games played during the 18 weeks of the 2024 regular season. The eight values on each line are week number, visitor team ID, visitor team name, visitor team rating according to Zoltar, home team ID, home team name, home team rating according to Zoltar, total points scored in the game. The predictor values are visitor team rating and home team rating. The other fields are for debugging.
I realized that I needed to normalize the team rating predictor values by dividing by 10,000, and normalize the predicted total number of points scored by dividing by 100.
For my first attempt last week, I used basic linear regression to establish baseline results. The key output of the preliminary linear regression exploration was:
Evaluating model Accuracy train (within 0.15) = 0.4301 Train RMSE = 0.1308
A prediction is scored as correct if it’s within 15% of the true target number of points scored.
The average total points scored by both teams in a game during the 272 regular season games of the 2024 season is 45.82 points. If you simply predict 45.82 points for each game, the root mean squared error of that naive model is 0.1309 points. The linear regression model RMSE of 0.1308 points is essentially the same — it just predicts the average number of points scored.
So, my next step was to try the more powerful kernel ridge regression technique. After a couple hours of work, I got a system up and running. The output:
Begin NFL 2024 Total Points prediction using KRR (Cholesky) regression Loading data into memory Normalizing predictor and target values First three train X: 0.2105 0.2058 0.2011 0.2058 0.2035 0.1964 First three train y: 0.47 0.63 0.28 Setting RBF gamma = 2.0 Setting alpha noise = 0.100 Create and train KRR model using Cholesky Done Analysis of model weights: Smallest value = -3.6096 Largest value = 4.2073 Average magnitude = 1.0041 Computing model accuracy Train acc (within 0.15) = 0.4412 Train RMSE = 0.1302 Predicting for x = 0.2105 0.2058 Predicted y = 0.4671
The KRR algorithm requires a “kernel function”. I used the radial basis function (RBF), the most common (I used the gamma version of RBF). The RBF kernel function requires values for gamma and alpha parameters, that must be determined by trial and error. There are several ways to train a KRR model; I used matrix inverse with the Cholesky algorithm.
Darn. The accuracy of the sophisticated KRR model (44.12% accuracy = 120 out of 272 correct) and error (RMSE = 0.1302) were essentially the same as the simple linear regression model (43.01% accuracy = 117 out of 272 correct) and error (RMSE = 0.1308). And when I looked at the predictions, they’re all between 44 and 46 points — just predicting the average. In short, failure.
Interesting results. Next week, I need to try the most powerful regression technique, neural network regression. I’m beginning to suspect that using just team ratings does not supply enough “signal” for accurate prediction of total points scored.

Las Vegas clearly sees sports betting as an important part of the future. It’s already a multi-billion dollar industry and it will soon reach multi-trillion dollar levels (actually, it may be there already).
Left: My prediction system is named after the Zoltar fortune teller machine you can find in arcades.
Center: This is the sports book (betting room) at Caesars Palace. I’ve been there many times and the excitement is incredible.
Right: This is the showroom of the old “New Frontier” hotel and casino. The property was the “Last Frontier” from 1942-1955, the “New Frontier” from 1955-1967, and “The Frontier” from 1967-2007. The “Trump International” hotel is now on the site. In the photo, I love the mid-century modern atom age clock on the wall. I visited the “New Frontier” with my parents in 1968, and “The Frontier” many times during my blackjack card counting days.

.NET Test Automation Recipes
Software Testing
SciPy Programming Succinctly
Keras Succinctly
R Programming
2026 Visual Studio Live
2025 Summer MLADS Conference
2026 DevIntersection Conference
2025 Machine Learning Week
2025 Ai4 Conference
2026 G2E Conference
2026 iSC West Conference
You must be logged in to post a comment.