간단한 ELO 레이팅

ELO 점수

[우리말 겨루기]에서 문제의 난이도를 어떻게 측정할 수 있을까? 가장 먼저 드는 생각은 “참가자들이 많이 틀리면 어려웠던 문제였던 거 아닐까?” 다. 얼추 맞는 얘기 같다. 그런데 더 생각을 해봐야 하는 부분은, 누가 틀렸느냐 하는 문제이다. 예컨대 달인이 3번 틀린 문제와 4등이 3번 틀린 문제가, 단지 오답이 3회였다고 해서 똑같이 어려웠던 문제일까? 아마 달인이 3번 틀린 문제가 더 어려운 문제였을 것이다. 이렇듯 문제의 난이도를 측정하는 일과 참가자의 실력을 측정하는 일은 밀접하게 연관되어 있다.

이런 관계를 일종의 작은 “시합”으로 보고, 체스 등에 사용되는 ELO 점수를 이용하여 문제의 난이도와 사람의 실력을 측정할 수 있다. ELO 점수는 실력에 대한 예상치로, 시합 결과에 맞춰 조정한다. ELO 점수의 핵심 아이디어는 예상치 못한 결과가 있으면 실력을 더 많이 조정한다는 것이다. 이미 이길 가능성이 높았다면 이긴 쪽이나 진 쪽이나 실력 예상치를 크게 바꾸지 않지만, 못하는 것처럼 보였던 사람이 이긴다면 실력 예상이 잘못된 것이라 보고 예상을 크게 바꾼다.

여러 “시합”을 통해 특정 참가자나 문제의 ELO 점수가 높은 것으로 드러나면, 참가자가 실력이 높거나, 문제가 어렵다고 생각하면 된다. 자세한 내용은 위키피디아를 참고하면 좋다.

퀴즈쇼에는 어떻게 적용할 수 있는가?

[우리말 겨루기]에 이런 알고리즘을 어떻게 적용할 수 있을까? 다양한 방법이 있겠지만, 이 글에서는 “시합” 하나가 참가자가 답을 말하려고 할 때마다 발생한다고 생각했다. 시도를 통해 참가자가 문제를 맞히면 참가자가 시합을 이긴 것이고, 참가자가 틀리면 시합에 진 것으로 간주한다.

ELO 점수는 다른 정보가 하나도 없을 때, 두 참가자의 실력이 같다고 가정한다. 그런데 퀴즈쇼는 ‘문제’와 ‘참가자’라는 구별된 두 진영이 있고, 두 진영의 ‘실력’이 다를 수 있다. 예를 들어 참가자들이 일반적으로 문제를 쉽게 푼다면, 참가자들의 ‘실력’이 문제의 ‘실력’에 비해 높은 것이다. 이런 상황이 실제 데이터에서 나타나는지를 확인해보자.

2015년 7월부터 2019년 12월까지 일반 참가자들이 참여한 회차에서 문제당 오답을 세었다. 문제의 ‘승률’은, 오차는 있겠으나 (오답)/(오답+문제 수)로 구할 수 있다. 보통 문제를 누군가는 맞히기 때문이다. 사람의 ‘승률’은 물론 1-(문제 승률)이다. 이런 방식으로 문제의 승률을 계산하면 42.8%라는 값이 나온다. 참가자의 ‘실력’이 문제의 ‘실력’보다 높은 것이다. 한편 이런 결과는 2018년부터 2019년 사이의 데이터로 구한 사람의 정답률 58%와 잘 일치한다 (100-58=42). 문제의 승률이 비교적 일정하다는 방증이다.

문제당 오답 수 히스토그램.

참가자와 사람의 같지 않은 승률은 문제와 참가자의 ‘실력’이 같지 않음을 보여주고, 따라서 처음 보는 문제나 참가자에 대해 다른 시작 ELO 점수를 부여해야 한다는 점을 시사한다. 일반적으로 ELO 점수는 1500점에서 시작하지만 두 집단의 실력이 다르므로, 문제의 시작 실력을 1475, 참가자의 시작 실력을 1525로 두면 위에서 계산한 것과 얼추 비슷한 문제 예상 승률이 나온다.

참가자 TOP 5

여기까지는 아무런 추가 정보가 없을 때 ELO 점수를 어떻게 부여해야 하는가에 대한 논의이다. 그러나 실제로 ‘경기’가 일어났으므로 이런 정보를 받은 이후에 어떤 참가자가 가장 실력이 높은지 계산할 수 있다. ELO 점수 업데이트 규칙에 따라 시도 하나를 경기로 보고, 시도 하나하나마다 문제와 참가자의 점수를 모두 업데이트했다. 순서는 앞 문제부터, ㄱ 위치 참가자부터 ㄹ 위치 참가자 순으로 업데이트했다1. 2016년 참가자부터 2019년 참가자를 대상으로 실력을 측정했고 다시 겨루기 회차나 연예인 특집 등등 특수한 회차는 제외했다. 모은 자료만으로 자물쇠 문제는 누가 틀렸는지 유추할 수 없어 분석에서 제외했다.

업데이트 결과 2016년부터 2019년에 걸쳐 가장 뛰어난 참가자 다섯은:

높이와 점수는 비례하지 않는다.

왕관을 씌운 참가자들은 달인 등극에 성공했다. 조성재 참가자는 다른 참가자들이 못 맞힌 문제를 맞혀서 방송 내 최종 점수는 1700점으로 대단히 높은 편은 아님에도 불구하고 높은 ELO 점수를 획득했다. 김지연 참가자는 미래의 달인이자 그 당시에도 실력이 있었던 유용재 참가자를 눌렀기에 점수가 높았다. 2. 정정임 참가자는 최종 점수가 2250점으로 상당히 높았다. 이처럼 ELO 점수가 달인 외에도 실력자들을 발굴하는 데 쓰일 수 있다.

ELO 점수와 방송상 점수가 차이가 있긴 하지만 상관관계가 아주 높기는 하다:

시간에 따른 실력 변화

다른 한편으로, 시간에 따라 재참가한 참가자의 실력이 변하는지를 확인해봤다. 2016년에서 2019년에 걸쳐 같은 이름이 2번 등장한 경우3를 찾아 ELO 점수에 따른 실력 변화를 측정했다. 다시 말하지만, 다시 겨루기 회차는 분석에 없어서 다시 등장한 많은 경우가 다뤄지지 않는다.

재참가한 이름이 있는 경우는 31개 있었다. 이들이 데이터에서 처음 출연했을 때와 다시 출연했을 때의 실력 변화를 살펴보면:

실력이 올라간 사람도 있고, 도리어 다시 출연했을 때 더 못해진 사람도 있었다. 전체적으로 모두 올라간다거나 모두 내려가는 등의 일관적인 경향은 보이지 않는다. 변화 자체에 대한 히스토그램을 그려보면:

대체로 사람들의 실력이 바뀌지 않는 것처럼 보인다. 변화의 평균 역시 이런 관찰을 뒷받침하는데, 재출연한 이름의 평균 실력 변화는 11점으로, 사실상 없는 것이나 마찬가지다. 한편 재출연하는 사람들은 평균 참가자보다 실력이 아주 조금 높지만 노이즈일 가능성이 높다 (평균 참가자는 1536점4, 재출연 참가자는 1553점으로 17점 차이이다). 발전하지 않은 사람의 비율 (점수가 감소한 사람의 비율)은 31명 가운데 14명, 45%이다. ELO 점수가 50점 이상 바뀌지 않은 사람의 비율은 71%로, 많은 사람이 별다른 실력의 변화 없이 참가하는 것으로 보인다.

분석의 한계

  • ‘시도’ 하나를 시합 하나로 상정한 것이 문제일 수 있다. 정말 어려운 문제는 아예 답이 떠오르지 않을 수도 있다. 아무도 답을 말하지 못했다가 초성까지 열려서 참가자가 드디어 답을 말하는 경우에, 해당 참가자는 정말 어려운 문제를 맞힌 것이겠지만 ELO 점수상으로는 평범하게 문제를 맞힌 것으로 친다. 데이터셋에 무응답에 대한 정보는 없어서, 무응답을 고려할 수가 없었다. 한편 동시다발적으로 여러 참가자가 답이 떠올랐을 수도 있지만 한 참가자만 점수를 얻어가는 경우도 많은데, 이런 경우 역시 늦게 떠올린 참가자에게 점수를 줄 수는 없었다. 뛰어난 참가자 다섯을 보면 모두 실력자이니 지금 계산한 ELO 점수가 아주 틀린 것은 아니겠지만, 점수와 실력의 체감과는 거리가 있을 수 있다.
  • 2017년 초와 2016년 회차들은 문제 숫자가 2020년 지금처럼 30개가 아니고 28개이거나 25개인데, 코드를 돌릴 때는 에러가 안 났지만 제대로 처리가 된 건지는 의문이다. 비슷한 맥락에서 이런 결과를 뽑는 데 쓰이는 코드가 적지 않기 때문에 코드에 문제가 있을 가능성이 있다. 혹은 데이터에 오타가 있을 수도 있다.
  • 앞서도 얘기했지만 ELO 점수를 업데이트하는 데 쓰는 순서가 결과에 영향을 상당히 줄 수 있다. 그런데 순서 문제는 정말 어떻게 해야 할지 모르겠다…
  • 문제와 사람의 시합으로 봤는데 [우리말 겨루기]의 본질은 사람 간의 시합이지 문제와의 시합이 아니다. 그래서 글에서처럼 계산한 ELO 점수로 사람 사이에 이길 확률을 계산해서는 안 된다. ELO를 사람 간에 쓰면 승률 예상이 됐을 수도 있겠지만, 그렇게 하기에는 시합 데이터도 문제 데이터보다 별로 없거니와 일단 우승한 사람들의 ELO는 동일할 것이기 때문에 안 했다. 실시간 이길 확률에 대한 건 다른 글에서 다룰 계획이다.