미국 리얼리티 쇼 '서바이버(Survivor)'의 방송 데이터를 활용해 로지스틱 회귀 기반 머신러닝 모델을 구축한 사례입니다. 두 개의 모델이 각각 다음 회차 탈락자와 시즌 우승자를 예측하며, '위험에 처한 횟수', '인터뷰(고백) 비중', '나이', '이점(어드밴티지) 보유 여부' 등의 특성이 우승 확률에 영향을 주는 것으로 나타났습니다.
번역된 본문
새 시즌의 서바이버가 다음 주에 방영됩니다. 서바이버를 보면서 가장 즐거운 것은 프로그램의 전략에 대해 토론하는 것입니다. 이번 시즌은 누가 우승했어야 했을까? 눈에 띄지 않게 플레이하는 것이 좋은가, 아니면 큰 수를 두는 것이 우승으로 이어지는가? 역대 최고의 플레이어는 누구인가? 시리? 토니? 보스턴 롭? 이런 질문에 답하는 데 도움이 되는 머신러닝 모델을 만들면 재미있을 것 같았습니다. 서바이버에서 실제 생활 속 낯선 사람들이 외딴 곳에 표류합니다. 참가자들은 캠프 생활을 관리하고, '면역(immunity)'을 걸고 챌린지에서 경쟁하고, 이점(어드밴티지)을 찾아다니며, 3일마다 '부족 평의회(tribal council)'에서 서로를 투표로 탈락시킵니다. 마지막 2~3명만 남으면, 탈락한 참가자들(이제 '배심원'이라 불림)이 우승자를 투표로 선출합니다. 우승자는 100만 달러와 '최후의 생존자(Sole Survivor)'라는 타이틀을 가져갑니다. 결국 이것은 사회적 전략 게임입니다. 복잡하고 뒤엉켜 있어서 수학적 모델로 다루기 어려운 영역처럼 느껴집니다. 하지만 우리가 쇼를 보고 토론할 때, 우리는 암묵적으로 우승에 필요한 것에 대한 마음속 모델을 만들고 있는 것입니다. 머신러닝 모델은 이러한 이론들을 체계화하고 검증하는 하나의 방법일 뿐입니다. 그리고 어쩌면, 바라건대, 누가 '최후의 생존자' 타이틀을 가져갈지 의미 있는 예측을 제공할 수도 있습니다(저처럼 베팅 시장 유출 정보를 무시하는 타입이라면 말이죠). 저는 시즌 50을 보면서 이 모델을 사용하는 것을 정말 좋아했고, 모델이 초반에 몇 가지 흥미로운 흐름을 찾아냈습니다. 그 통찰 중 일부를 여기서 공유하겠습니다. 이 모델은 회차별로 누가 우승할 가능성이 가장 높고, 누가 다음에 집으로 돌아갈 가능성이 가장 높은지 예측합니다. 모델 결과를 여기서 직접 만져볼 수 있습니다. 웹사이트는 기본적으로 최신 시즌을 로드하지만, 이전 시즌도 탐색할 수 있습니다. 상단 행은 시즌 전체에 걸친 우승 및 탈락 확률을 보여줍니다. 그 아래에는 누가 가장 자주 1위로 랭킹되었는지에 대한 누적 그래프가 있는데, 이것이 진짜 우승 후보를 보는 더 깔끔한 방법입니다. '플레이어 분석' 섹션에서는 플레이어를 선택하여 어떤 특성이 그들의 확률을 올리거나 내리는지 이해할 수 있습니다. 이 모든 것에 대해서는 아래에서 더 설명합니다. (모든 세세한 머신러닝 내용을 원한다면, 끝에 노트 섹션이 있습니다.) 주의: 서바이버 TV 쇼의 스포일러가 포함되어 있습니다! 모델 구축하기 데이터는 survivoR GitHub 저장소에서 가져왔는데, 여기에는 투표 기록, 챌린지 결과, 이점, 인구통계, 편집 지표 등 잘 정리된 방대한 서바이버 데이터가 있습니다. 저는 두 개의 별도 모델을 학습시켰습니다. 하나는 다음 회차에 누가 탈락할지 예측하고, 다른 하나는 시즌 전체에서 누가 우승할지 예측합니다. 데이터가 많지 않습니다(특히 우승 모델은 미국 서바이버 역사상 우승자가 50명뿐이므로), 따라서 모든 결과를 회의적으로 받아들여야 합니다. 두 모델 모두 로지스틱 회귀(logistic regression)를 사용합니다. 더 정교한 모델도 시도했지만 성능이 더 나빴습니다(원하면 방법론 노트에 자세히 있습니다). 여러 후보 특성(feature)을 만들고 모델이 중요한 것을 선택하게 했습니다. 우승 모델에 남은 특성들은 다음과 같습니다: 위험에 처한 횟수(해당 인물이 표를 받은 부족 평의회 수) N(남아 있는 플레이어 수에 대한 통제 변수. 모두에게 동일하므로 대시보드에는 표시되지 않지만 모델이 사용합니다) 인터뷰(고백) 비중(최근 3회차 동안의 인터뷰 비율. 이것은 다른 특성보다 편집진의 스토리텔링에 관한 것입니다) 나이(직선보다 곡선으로 가장 잘 작동했으며, 모델에 선형 항과 제곱 항이 모두 포함됩니다. 즉, 30세 정도일 때 우승 가능성이 가장 높고, 훨씬 나이가 많거나 어리면 확률이 낮아집니다) 이전 시즌 출연 횟수 이점 보유 여부(예/아니오) 탈락 모델의 특성은 약간 다릅니다: N(마찬가지로 남아 있는 플레이어 수에 대한 통제 변수) 보유한 이점 수(예/아니오가 아니라 개수) 받은 표(최근 3회차) 개인 면역 승률 나이(역시 곡선이지만, 우승 모델보다 효과가 약함) 여기서 흥미로운 결과가 나왔습니다: 두 모델이 서로 다른 특성을 유지했다는 것은, 우승하는 것과 생존하는 것은 같은 것이 아니라는 의미입니다.
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 . 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. 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 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. Why was the model so down on Cirie? Cirie is a beloved fan favorite, and I think a lot of people were thrilled