한국어
    • 한국어
    • ENGLISH
    • 日本語
    • 中文-繁體

    2019.04.03 Data Science

    야구 데이터 분석 #19 피타고리언 기대 승률 Part 3

    세이버메트릭스를 기반으로 야구 경기를 더 재미있게 관람할 수 있도록 도와드리는 ‘야구 데이터 분석’!

    이번 글에서는 지난 연재들에서 설명드린 승률 예측 식에 KBO리그 데이터를 직접 대입해 계산하여 그 결과값을 살펴보도록 하겠습니다.


    오늘은 피타고리언 기대 승률의 세 번째 이야기가 되겠습니다.

    앞의 두 연재에서, 득점과 실점으로 승률을 예측하는 식들을 살펴 보았는데요. 이런 형태의 식들이었지요. (RS = 팀 득점, RA = 팀 실점)

    빌 제임스의 오리지널 피타고리언 기대 승률 식은 x = 2 였고요. 베이스볼 레퍼런스 사이트가 사용하는 개량 버전은 x = 1.83으로 되어 있지요.

    x값이 고정이 아니고 득점과 실점의 규모에 따라 변하는 식들도 있었지요. 클레이 대번포트의 Pythagenport 식은 x값에 자연로그를 포함하고 있고요.

    데이비드 스비스(David Smyth)와 필명 ‘U.S. Patriot’의 Pythagenpat 식은 x값을 이렇게 구합니다.

    메이저리그 데이터를 가지고 계산했을 때에는 승률 예측의 정확도에서 Pythagenpat이 아주 근소하게 Pythagenport를 앞서는 것으로 나오고, 두 식 모두 x값을 고정시켰을 때보다 더 결과가 좋게 나옵니다. KBO에서는 어떨까요?

    KBO리그 원년이었던 1982년에는 팀이 여섯 개에 불과했지만, 점점 늘어나서 이제 10개 팀이 경쟁을 하고 있지요. 1982년부터 2018년까지 총 293개의 팀-시즌이 있었습니다.

    이들의 득점, 실점을 위의 식들에 대입하여 기대 승률 및 기대 승수를 구하고, 이를 실제 시즌 결과와 비교했는데요. KBO리그는 시즌마다 경기 수가 다르고(1982년에는 팀당 80경기였답니다. ^^), 무승부가 존재하여 승률 계산에 다소 애매한 부분이 있습니다. 그래서 다음과 같이 계산을 했습니다.

    1) 승률을 KBO리그 계산 방법대로 다음과 같이 구합니다.

    무승부는 분자와 분모에서 모두 빠집니다. 예를 들어, 1986년 MBC 청룡은 59승 8무 41패를 기록했습니다. 위와 같이 승률을 계산하면 0.590이 나옵니다.

    2) 144경기 시즌을 가정하여 승리 수를 계산합니다. 위에서 계산한 승률에 144를 곱하면 되지요. 1986년 MBC 청룡의 144경기 기준 승리 수는 85.0승이 됩니다.

    3) 위의 네 가지 기대 승률 공식에 득점과 실점을 넣어서 기대 승률을 얻고, 여기에 144를 곱해서 기대 승수를 얻습니다. 1986년 MBC 청룡은 434점을 득점하고, 361점을 실점했습니다. 각각의 기대 승률 공식에 대입하면 다음과 같습니다.

    이에 실제 MBC 청룡이 144경기 시즌에 거두었을 85.0승과 비교해 보면, 이 경우에는 빌 제임스의 오리지널 식이 가장 근접한 결과를 냈고, Pythagenport 식이 가장 차이가 많이 나는 것을 알 수 있습니다.

    4) 예측한 값과 실제 값의 차이를 평가할 때 흔히 쓰는 방법으로 RMSE(Root Mean Square Error, 평균 제곱근 오차)라는 것이 있습니다.

    예측 값과 실제 값의 차이(‘잔차’라고 합니다.)의 제곱의 평균 값을 구하고 이의 제곱근을 계산하는 것입니다. RMSE가 작을수록 모델의 예측 능력이 높다고 할 수 있습니다. KBO리그 37시즌의 모든 팀-시즌에 대해 위의 네 식의 RMSE는 다음과 같습니다.

    이렇게 해서 미세한 차이로 (4) > (3) > (2) > (1) 순으로 예측력이 높은 것으로 나옵니다. 메이저리그에서의 결과와 정확히 일치하는 순서입니다. 신기하지요? ^^

    Post Script

    1) x값을 고정시키는 경우, 위에서는 2와 1.83을 사용했습니다만, 1.85 ~ 1.87을 대입하면 RMSE가 4.145까지 조금 더 줄어듭니다. 그래도 3번이나 4번 식을 능가하지는 못합니다.

    2) 4번 식에서 승수를 0.287 대신 0.28을 대입하면 4.127로 약간 더 결과를 개선시킬 수 있습니다.

    3) 2016 시즌 NC 다이노스는 83승 3무 58패를 기록하여 정규시즌 2위를 차지하였습니다. 무승부를 빼고 승률을 계산하여 144경기 기준으로 환산하면 승수는 84.8로 약 85승입니다.

    위의 네 가지 식으로 기대 승수를 계산하면 앞에서부터 차례로 87.4승, 86.1승, 87.2승, 87.3승입니다. 이 예에서는 x=1.83일 때가 더 실제에 근접하는데요. 승수로 환산하면 결국 거기서 거기라는 것이 포인트입니다.

    세이버메트릭스를 연구하는 입장에서는 소수점 단위의 정확도가 의미 있습니다만, 야구와 야구 스탯을 즐기시는 팬 여러분께서는, 가장 간단한 빌 제임스의 오리지널 계산식을 사용하셔도 무방할 것 같습니다. ^^


    임선남

    대기업 사무직 직원으로 살다가
    엔씨소프트 데이터정보센터(DIC)를 거쳐
    현재 NC다이노스 데이터팀 팀장으로 재직 중입니다.
    스스로 야구 덕후라고 생각해 본 적이 없습니다.
    그냥 야구를 좋아하고 데이터를 좋아하다보니
    자연스럽게 야구 데이터가 업이 된 것이 아닌가 합니다.
    세이버메트릭스는 야구를 합리적, 객관적으로
    잘 이해하기 위한 노력으로 이러한 이해가
    야구를 더 재미있게 해 줄 수 있다고 믿습니다.

    대기업 사무직 직원으로 살다가
    엔씨소프트 데이터정보센터(DIC)를 거쳐
    현재 NC다이노스 데이터팀 팀장으로 재직 중입니다.
    스스로 야구 덕후라고 생각해 본 적이 없습니다.
    그냥 야구를 좋아하고 데이터를 좋아하다보니
    자연스럽게 야구 데이터가 업이 된 것이 아닌가 합니다.
    세이버메트릭스는 야구를 합리적, 객관적으로
    잘 이해하기 위한 노력으로 이러한 이해가
    야구를 더 재미있게 해 줄 수 있다고 믿습니다.