LmCast :: Stay tuned in

A Model for Winning Survivor

Recorded: Sept. 20, 2026, 11 a.m.

Original Summarized

A Model for Winning Survivor
Home About Me Work with Me Coding Projects Blog A Model for Winning Survivor September 18, 2026

The new season of Survivor airs next week. My favorite thing about watching Survivor is arguing about the strategy of the show: who should have won the season? Is it better to play under the radar? Or does making big moves set you up to win? Who is the greatest player of all time: Cirie? Tony? Boston Rob? I thought it’d be fun to build a machine learning model to help answer these questions.
On Survivor a bunch of real-life strangers are stranded somewhere remote. They manage camp life, compete in challenges for “immunity,” hunt for advantages, and vote each other out every three days at “tribal council.” Once it’s down to the final two or three, the players who have been voted out (now called “the jury”) vote for the winner. The winner takes home a million dollars and the title of “Sole Survivor.”
Ultimately it’s a social strategy game.
It’s messy and feels in some way outside the scope of what you can do with a mathematical model. But when we watch and argue about the show, we’re implicitly building mental models of what it takes to win. An ML model is just a way to systematize those theories and put them to the test. And maybe, hopefully, it can give a meaningful preview of who will take the title of “Sole Survivor” (assuming, like me, you’re the type to ignore the betting market leaks). I loved using it while watching Season 50, and it identified several interesting threads early on. I’ll share some of those insights with you here as well.
The model predicts, episode by episode, who’s most likely to win, and who’s most likely to go home next. You can play with the model’s results here.

An overview of the Survivor ML dashboard.

The website loads the most recent season by default, but you can explore previous ones too. The top row shows win and elimination probabilities across a season. Below that is a cumulative plot of who’s been ranked #1 most often, which is a cleaner way to see the real contenders. A “Player Breakdown” section lets you pick a player to understand which features bump their odds up or down. More on all of this below. (And if you want all the nerdy ML details, there’s a notes section at the end.)
Caution: Spoilers for the TV show Survivor ahead!

Building the model
The data comes from the survivoR GitHub repo, which has a ton of nicely structured Survivor data like voting history, challenge results, advantages, demographics, edit metrics, etc.
I trained two separate models: one predicts who will go home next episode, and one predicts who will win the whole season. This isn’t a lot of data (especially for the Win model, since there are only 50 winners across US Survivor’s history), so take all the results with a grain of salt.
Both models use logistic regression. I tried fancier models too, but they performed worse (details in Methodology notes if you want them).
I built out a bunch of candidate features and let the model pick which ones mattered. The ones that survived into the Win model are:

Times in danger (number of tribal councils where this person received any votes)
N (a control for how many players are left. It’s the same for everyone, so it’s not shown in the dashboard, but the model uses it)
Confessional share (rolling share of confessionals over the last 3 episodes; this one is more about the editorial storytelling than the other features)
Age (this worked best as a curve rather than a straight line, meaning the model includes both a linear and a squared term. So, you’re most likely to win if you’re around 30, and your chances are lower if you’re much older or younger)
Number of previous seasons
Has advantage (yes/no)

The features for the Elimination model are slightly different:

N (again, a control for how many players remain)
Advantages held (how many advantages, rather than yes/no)
Votes against (last 3 episodes)
Individual immunity win rate
Age (also a curve, but its effect is weaker than in the Win model)

An interesting outcome here: the two models kept different features, which means winning is not the same thing as surviving vote-outs, presumably because jury appeal is key and relies on different things. This lines up with what I think is the general take here. For instance, the show Rob Has a Podcast did a recent episode breaking down how Survivor 50 was won and lost, where Rob Cesternino concludes that a low likelihood of elimination doesn’t necessarily give you high odds of winning.
How good is the model?
Not bad, depending on your perspective. For simplicity I’ll talk mostly about the Win model.
I’m not going to pretend you can use this to know who’s going to win. But on average it picks the eventual winner roughly 2x better than chance.
What that means: if you pick a player at random, you’ll get the winner right about 10% of the time (this varies with how many people are left, but 10% is an average). My model’s #1 pick is right just over 20% of the time. That 2x improvement holds for most of the game, basically after two episodes have elapsed (once the features have enough data).
Being right ~20% of the time might not sound like much. It does mean it’s wrong most of the time. That’s fine to me, there’s a huge amount of unquantifiable strategy and luck in any season that no model like this can capture. But 2x over baseline isn’t bad!
It’s also worth separating two things: how the model ranks players, and its exact probabilities. The episode-to-episode bumps are tiny, especially early, when a big cast is splitting up the win equity. And it turns out the ordering may be more informative than the numerical probability of winning — the model’s #1 pick actually wins more often than the probability suggests (for instance, the #1 pick wins 40% of the time going into the finale even though that pick has an average probability of only 29%). Just being the model’s favorite has value. I think that discrepancy is likely an odd quirk of how I built this. More discussion on this in the notes section.
Anecdotally, I’ve found it pretty compelling how often the numbers match the assessment of people watching (or at least my own). It heavily favors a lot of the best winners, moves players’ odds up and down in ways that make sense given what’s happening in the game, and often picks up on trajectories before they’re obvious in the main narrative. I got to watch that happen live, since I ran the model alongside Season 50.
How did Season 50 go?
Pretty well. The model was fun to have as a companion while I watched. A few things I noticed, to show how it can be used:
The model flagged Jonathan (the runner-up) as a contender before I took him seriously. He ended up making a lot of strong endgame moves and had the highest P(Win) going into the finale (the wrong choice in the end, but not an unreasonable one, given how close he came). The “Win Probability by Episode” plot shows the relative P(Win) for every player, and you can see his trajectory rising mid-game.

The model flagged Jonathan as a strong contender early.

Aubry, the actual winner, was one of the model’s main contenders all season. By the finale it did give Jonathan a higher P(Win) than Aubry. But she had a strong early game and was the #1 pick for much of the season. This is where the second metric gives you a different perspective. The “Fraction of Episodes Ranked at #1” is a smoothed-out way to see who the real contenders are, and it only appears on the dashboard once a few episodes have aired. In S50, the only players who ever reach #1 at all are Jonathan, Aubry, Ozzy, and Christian, who are all reasonable players to take seriously.

The main contenders for S50. This chart shows the fraction of episodes where each player was ranked #1 for P(Win). It's a smoothed view of the main plot, and it helps identify the real contenders. Aubry was the most consistent pick earlier in the season.

The model responds to in-game events realistically. In episode 11, Cirie sensed danger and (correctly) played her extra vote advantage to save herself. She avoided elimination, but she had now received votes (bad) and spent her advantage (also bad). The model reflected this change in her situation accurately, with her elimination probability shooting up and her relative win chances dropping. She went home the next episode.

Probability of elimination (left) and probability of winning (right) for Cirie's game. For most of the season, Cirie had a low probability of both elimination and winning. Her P(Win) rose toward the end, but her big move that saved her also left her vulnerable: her P(Elimination) shot up and her relative rank in P(Win) sank, going into episode 12 when she was eliminated.

Why was the model so down on Cirie?
Cirie is a beloved fan favorite, and I think a lot of people were thrilled to see her play in S50. In my view, she has a mastery of the social game unlike anyone else. Her odds crept up steadily over the game, but the model never had her as high as I personally wanted. Her player breakdown shows her age was capping her win probability. I don’t know whether Cirie’s low P(Win) is a result of the model missing Cirie’s idiosyncratic strengths, or a result of it capturing something real that fans would rather ignore. Probably some of both.

Player Breakdown for Cirie in episode 12 (the episode she was voted out), explaining the model's prediction. The left two plots are the Elimination model. The right two are the Win model. The top row is "Model Contributions," where the width of each bar shows that feature's contribution. The bottom row is "Compared to Field," a way to see how the player's values compare to everyone else remaining (bar width here represents the feature's coefficient).

There are lots of stories like these! You can explore previous seasons on the dashboard too.
What is important for winning?
You might be wondering which direction these features push, or what happens with the ones that got dropped. How does immunity win rate impact your odds of winning? Does steering the vote help? Rather than try to interpret these features from the main model above, I ran separate simpler models for each feature alone (controlling for stage in the game). That way I could also look at features that got dropped from the main model too. Here’s a selection of the most interesting results (and remember, these are associational, not causal — the model can’t differentiate between age itself making it hard to win vs the show casting older players into roles that don’t win):

How different features relate to winning. Confessional share is strongly associated with winning, and being in danger (more tribals receiving votes) is bad. For the ML people: I built this controlling for stage in the game, so this is the result of `won_season ~ < feature > + n`, where `n` is how many people are left. That's because the model predicts each individual's win probability, but probability naturally rises as the season goes on, and some of these features correlate with how far along a season is. The error bars come from 2,000 bootstrap resamples that resample whole seasons at a time, so they respect the fact that episodes within a season aren't independent. (I left out age here, since it's quadratic and that's confusing to include.)

A lot of this tracks. People talk about a “winner’s edit,” or the fact that players who get shown more are more likely to win. Confessional share being so strongly associated with winning suggests that’s real. To be clear, though, the edit isn’t part of the game. The model is picking up the story the editors are telling after the fact. I included it as a feature since the goal is to predict a winner as a season airs, but it’s probably not helpful for assessing strategy (unless you think being a good storyteller will help you win).
Other things: being in danger often (more tribals where you receive votes, more votes against you recently) is negatively associated with winning. There might be some signal in the other features, although I’d note the confidence intervals are huge. “Being a returnee” and “having advantages,” for instance, are maybe good.
Not included in a figure here, but the features that help or hurt your chances of being eliminated tell a different story. Holding advantages and not receiving votes are what most lower your odds of going home. Your team winning immunity in the early game is protective, while winning individual immunity later seems to maybe make you a threat and more likely to be a target for elimination. Those don’t all line up with the features for winning (again, staying safe is not the same thing as winning).
Comparing winners across seasons
Once I had the model running, I could start doing some cross-season analysis. How do different players, across different seasons, compare?
I needed a fixed reference point to make things simpler, so I picked the finale. The rest of this section only looks at the ~5 people remaining heading into the last episode.
The metric is the cumulative #1 count from earlier: the share of episodes a player was the model’s top pick. It predicts the eventual winner about as well as the raw probabilities do (~40% at the finale vs a 20% baseline), and it’s more stable across the season. For each winner, I take the margin between their share and the next-highest player’s. It’s not perfect (different cast sizes affect how easy it is to ever reach #1), but it gives a rough view.
In S50, for instance, Aubry was the #1 pick in 4 out of 13 episodes (31%), and Jonathan in 5 out of 13 episodes (38%). The margin is -7 points. I’m calling that Aubry’s “dominance score.”
We can then rank winners by that score:

Dominance scores for every winner: the margin between the winner's share of #1 rankings and the next-highest player's, entering the finale. The result is something like a ranking of the "cleanest" wins in Survivor.

This is pretty interesting! If I were to rank winners in my head by how cleanly they won their season, I think it wouldn’t be too far from this. Boston Rob’s unmatched S22 win is the most dominant one here. Tony’s wild and strategic ride to an 8-1 victory in S28 is up there too. Some of the winners fans dismiss more are toward the bottom, like Natalie in S19 (a season dominated by the runner-up, Russell Hantz). But a low score could just mean a tough field. Parvati’s famous S16 win is lowish middle of the pack here, maybe because she had to beat so many other great players.
Biggest upsets
You can do the same thing for the non-winning players entering the final episode, which answers a different question: who were the biggest “upsets” in Survivor?

Biggest upsets in Survivor. Same dominance margin, but for people entering the finale who didn't win.

This generally also lines up with a lot of fan lore, which is reassuring. Russell Hantz in S19, who I mentioned above, is #1. Boston Rob in S8 is also high up, which is funny since his loss there has a bit of an asterisk; he led the game as half of a duo with Amber and proposed to her moments before she won, meaning he and the actual winner effectively took home the money as a pair. And, as we saw, Boston Rob later topped the most dominant winner analysis (above) in S22.
Wrapping up
There’s a lot this model misses. I wish I had a measure of social chemistry, or of how much one player trusts another. Sometimes a jury votes for who they think is deserving, sometimes for who they like. There isn’t much data to train on, and a lot of what feeds our sense of who will win is outside the scope of an ML model like this.
That said, these analyses keep telling stories close to the narratives fans have been building for years. I made this for the obsessive Survivor fans like me who want to understand what’s going on, and hopefully to give people some evidence for their intuitions so they can have more fun debating.
Feel free to play around with it, use it when the new season airs, and let me know what you think!
And, to give credit where it’s due: thanks again to the Recurse Center for giving me a great community to work on this with.

Methodology notes
For anyone who wants the actual ML details.
Model building:
Alongside logistic regression, I tested random forest, XGBoost, KNN, and a small neural net. Logistic regression performed the best. My guess is that’s largely because there isn’t much data and the more flexible models overfit. For feature selection I tried both forward selection and Lasso; forward selection produced better results, so I went with that (where the feature selection was done using an offline expanding-window temporal validation). I’m also using regularization to reduce overfitting.
The model predicts each player’s win probability independently and then normalizes across the remaining players in a given episode, so probabilities sum to 1 within each episode.
What seasons are used for training?
For evaluating performance, I used temporal validation (I only trained on prior seasons to evaluate later ones). I went back and forth on this, since there’s so little data that the results carry a lot of uncertainty, and leakage (what temporal validation protects against) probably isn’t a huge deal here. Doing temporal validation shrinks my data even more. But returning players and strategy evolution made me think it was still better to do.
However, outside of validation, I used LOSO (leave-one-season-out) to train the model. That applies to the cross-season analyses above, as well as the models behind the live app. Using LOSO for the app means you can look at what the model thinks about Season 1 with a model trained on every season after it. That feels fine to me. If you’re looking at past seasons, I think you’re already carrying knowledge of future strategy, so LOSO roughly mimics what you’re doing in your head. If you’re looking at a currently airing season, LOSO is the same as a temporal approach anyway, since every other season is already in the past.
Results:
Across 521 episode predictions, the #1 pick is the winner 22.5% of the time against a 10.1% random baseline (that’s the 2x I mentioned above), and the model places the eventual winner about 1.5 spots higher in the ranking than chance would. Episodes within a season aren’t independent, so the confidence intervals come from a bootstrap that resamples whole seasons instead of individual episodes. The improvement over random survives that (95% CI: 0.8 to 2.3 spots).
A note on probabilities and bias:
On average, calibration for the model is ok: of everyone it said had a 15% chance of winning, about 15% win, give or take a couple of points at the extremes. However, if you group players by rank instead, it looks less good. The model’s #1 pick wins about 22% of the time, when they’re predicted to win ~14%. Within one probability bucket, the favorites do better than predicted, but the non-favorites do worse, so the two average out.
I initially tried fixing this with temperature scaling (a single dial that stretches all the probabilities). But it didn’t work here given the conditional structure of the problem. I think I could maybe calibrate the probabilities better with a different set of features that compare a player to their own cast, or a model that picks a winner from the whole cast at once instead of scoring everyone separately. Maybe that’ll be the next version. For now, just know the model is maybe underconfident on its own pick.

·
GitHub ·
LinkedIn ·
Contact ·

A machine learning model is proposed as a method to systematize the complex social strategy inherent in the game of Survivor, aiming to predict outcomes such as the eventual winner and subsequent eliminations. The game structure is characterized by social maneuvering, competition, challenges, tribal council votes, and a final jury decision, making it fundamentally a social strategy game. The model utilizes structured data sourced from repositories like survivoR, which includes voting history, challenge results, demographic information, and editorial metrics to train its predictions.

The model is structured into two primary components: one designed to predict which player is most likely to be eliminated in the next episode, and another focused on predicting the overall season winner. Both predictive models primarily employ logistic regression, although the author tested other methods like random forest and XGBoost, finding logistic regression to be the most effective due to data limitations. Feature selection involved identifying variables that significantly impact the outcomes, yielding different sets of essential features for each model, which suggests that the factors influencing winning versus surviving are distinct, likely reflecting the importance of jury appeal versus elimination dynamics.

The features selected for the overall win model included metrics such as the number of times a player was in danger, the rolling share of confessional statements, age (modeled using a curve), the number of previous seasons played, and whether the player possessed an advantage. The elimination model focused on metrics like the number of advantages held, the number of votes against the player in recent episodes, individual immunity win rates, and age. This divergence highlights a key insight: winning is not synonymous with surviving, as the factors that lead to a jury vote differ from those dictating elimination.

The performance of the model suggests a modest but meaningful improvement over random chance. On average, the model predicts the eventual winner approximately twice as well as a random selection, providing an improvement factor of about two times the baseline. This performance improvement is stable and observable after the initial episodes have provided sufficient data, with the predictive power holding consistently. Furthermore, the relative ranking produced by the model can be highly informative; the model’s top pick frequently wins more often than its predicted probability suggests, indicating that being the model’s favorite holds predictive value.

Cross-season analysis allows for examining the trajectory of players, using metrics such as the cumulative count of episodes where a player was the model’s top pick. This approach yields a "dominance score" by calculating the margin between a player’s frequency of being ranked number one and the next highest player's frequency, providing a measure of how cleanly a player secured victory across seasons. This analysis suggests that some winners, like Boston Rob in Season 22, exhibit a high degree of dominance, while others, like Parvati, demonstrate a lower score, which may reflect the difficulty of competing among a highly talented field.

The model also accurately reflects in-game events. For instance, when a player secured an advantage, the model appropriately adjusted their probability of elimination and winning based on subsequent events, such as receiving votes or securing immunity. Although the model may not capture subtle social chemistry or trust—elements that heavily influence jury decisions—it successfully correlates with observable narrative elements, such as the visibility of players and the post-game narratives, suggesting the model captures the societal perception of success within the show better than raw statistical probabilities alone. The overall conclusion is that while limitations exist regarding unquantifiable strategic and social variables, the model offers compelling, evidence-based insights that align closely with the narratives constructed by viewers.