상세 컨텐츠

본문 제목

2. 피타고리안 기대 승률의 적용과 기대 승률 조정

야구-칼럼/KBO 포스트시즌 진출 확률

by 야구고물상 2022. 2. 5. 01:51

본문

반응형

그렇다면 왜 피타고리안 기대 승률일까요? 제가 전에 말씀드렸듯이 확률 계산을 위해 다른 많은 방식들이 있습니다. 팬그래프, 레퍼런스, 파이브서티에잇 다 다른 방식이죠. 제가 생각하기에 가장 좋은 방법은 팬그래프처럼 팀 프로젝션을 진행한 후에 그 기록을 바탕으로 시뮬레이션하는 겁니다. 문제는 KBO 입장에서 프로젝션을 하기는 좀 힘든 면이 있다는 것입니다. 아직까지 제대로 된 연구가 된 적이 없고 때문에 이를 적용하기 위해서는 긴 시간이 필요할 것이기 때문이죠. 또한, 프로젝션을 하면 시즌 시작 전 모든 팀들의 포스트시즌 진출 확률은 공평하다는 저의 믿음에도 반하는 결과가 필연적일 수밖에 없습니다. 그렇기 때문에 다른 방식을 생각해야 했습니다. 결국 돌고 돌아 피타고리안 기대 승률입니다. 장점은 우선 쉽습니다. 그리고 믿을만합니다. 여러 루트를 통해 피타고리안 기대 승률은 검증된 방식입니다. 그렇기에 계산의 재료로 피타고리안 기대 승률을 쓰는 건 나쁘지 않은 방식이라고 생각합니다.

피타고리안 기대 승률의 지수

그렇다면 피타고리안 기대 승률을 구하기 위한 지수를 구할 필요가 있을 겁니다. 지수를 구하는 방법은 여러 가지가 있습니다. 가장 기본적인 2를 쓰는 방법부터 1.83을 쓰는 방식(BR), 로그 식을 쓰는 방식, $c=(RS+RA)^{c1}, c_{1}=0.27 \sim 0.29$ 등 정말 여러 가지 있습니다. 어떤 지수를 쓰는 게 효과적일까요? 저는 득실점의 비율을 x 축에, 실제 승률을 y축으로 놓고 커브 피팅을 해 보기로 했습니다.

Figure 1. KBO 리그 피타고리안 기대 승률을 위한 지수. 1982~2020시즌 모든 KBO 팀들에 대해 실점/득점을 x축에, 각 팀들의 승률을 y축에 놓고 커브 피팅을 한 결과입니다. 지수가 ~1.83일 때 $r^{2} \sim 0.897$, $RMSE \sim 0.028$로 계산됐습니다.

 

Fig. 1을 보시면 아시겠지만 c=1.83 가량을 쓰는 게 좋음을 알 수 있습니다. 위에 이미 이야기했듯이 더 복잡한 방법도 있지만, 그 방법들을 똑같은 방식으로 그래프를 그려 봤을 때 이 지수를 쓸 때보다 나은 점이 있어 보이지 않았습니다. 그렇기에 저는 1.83을 피타고리안 기대 승률 계산할 때 사용하는 지수로 이용하기로 하였습니다.

기대 승률 조정

왜 조정을 하는 걸까요? 잘 생각해 봅시다. 팀의 승률은 상대 승률의 가중 합으로 구할 수 있습니다. 그렇다면 이제 네 팀이 리그를 이루고 있다고 가정해 봅시다. A라는 팀의 승률이 0.550이라면 나머지 팀들의 평균 승률은 어떻게 될까요? 0.483입니다. 그렇다면 0.550인 팀이 0.483인 팀과 경기를 한다면 기대 승률은? 0.550이 넘어가겠죠. 어? 분명 0.550 팀은 평균 0.483인 팀들과 경기해서 0.550이라는 승률을 기록했을 텐데, 우리가 원하는 결과가 나오지 않는군요. 이는 위에서 말한 0.550이란 승률이 0.500인 팀과 경기한 결과가 아니기 때문입니다. 상대팀은 0.500이 아닐 확률이 훨씬 높습니다. 그러니 기대 승률을 조정해야 팀의 승률을 제대로 구할 수 있다는 걸 알 수 있습니다.

그렇다면 상대 승률은 어떻게 계산할까요? 세이버적 관점에서 보통 각 팀별 상대전적을 예상하기 위해서 가장 널리 사용되는 방법은 log5입니다. 이 방법은 A 팀과 B 팀이 있고 각 팀의 승리 확률이 $W_{a}$, $W_{b}$일 때 A 팀이 B 팀을 이길 확률을 다음과 같이 구합니다. $$W_{a, b} = \frac {W_{a}(1-W_{b})}{W_{a}(1-W_{b})+W_{b}(1-W_{a})}$$

더보기

왜 이 식이 나오게 될까요? $W_{a}$와 $W_{b}$를 가정할 경우, A가 이기고 B가 지는 경우라면 $W_{a}(1-W_{b})$가 될 것이고, 처음에는 A와 B의 승부가 나지 않지만 이후 A가 이길 확률은 $[(1-W_{a})(1-W_{b})+W_{a} W_{b}]W_{a}(1-W_{b})$가 될 것입니다. 그리고 이후 쭉쭉 나가서 $[(1-W_{a})(1-W_{b})+W_{a} W_{b}]^{n} W_{a}(1-W_{b})...$이 될 것입니다. 고등학교 수학 I에서 배운 등비수열을 활용해 보면 $W_{a, b}=\frac {W_{a}(1-W_{b})}{1-[(1-W_{a})(1-W_{b})+W_{a} W_{b}]}=\frac {W_{a}(1-W_{b})}{W_{a}(1-W_{b})+W_{b}(1-W_{a})}$임을 알 수 있죠.

그러니 이제 위 식들의 (상대팀은 총 9 팀입니다.) 가중 평균을 구하면 그게 각 팀의 피타고리안 기대 승률이 되어야 할 겁니다. 그렇다면 아래 식을 만족해야 합니다.

$\sum {W_{a, b} G_{a, b}=W_{pyt}}$

여기에서 $G_{a, b}$는 A와 B 팀 간 상대 경기 수를 뜻합니다. KBO 리그는 열 팀으로 이루어져 있으니 우리가 얻고자 하는 $W_{pyt}$는 10개입니다. 그렇지만 $W_{a, b}$는 선형 식이 아니죠. 우리는 이제 비선형 10차 연립방정식을 풀어야 합니다! 안타깝게도, 저는 수학에 밝지 않아서 이 해를 못 구하겠습니다. (이 해를 구하는 방법이 있을지는 모르겠습니다만, 저는 배워본 적이 없네요. 아마 없을 것 같긴 한데..) 다행히 이 식을 1차 연립 방정식으로 우회하는 방법이 있긴 합니다. (아래 수식 참조) 그렇지만 각각 45개의 상대 승률 $W_{a, b}$들을 알아야 정확한 해를 구할 수 있는데 ($W_{a, b}=1-W_{b, a}$), 우리가 세울 수 있는 방정식은 현재 10개뿐이기 때문에 각각의 $W_{a, b}$들을 구할 수 없습니다. 그래서 제가 아는 대수학 수준에서 정확한 $W_{a}$ 해를 구하는 건 이미 틀려먹었습니다.

$$\left(\begin {matrix} 0.5 & W_{1,2} & \cdots & W_{1,10} \\ 1-W_{1,2} & 0.5 & \cdots & W_{2,10}\\ \vdots & \vdots &\ddots & \vdots \\ 1-W_{1,10} & 1-W_{2,10} & \cdots & 0.5 \end {matrix}\right)\left(\begin {matrix} 0 & G_{1,2} & \cdots & G_{1,10} \\ G_{1,2} & 0 & \cdots & G_{2,10}\\ \vdots & \vdots &\ddots & \vdots \\ G_{1,10} & G_{2,10} & \cdots & 0 \end {matrix}\right)=\left(\begin {matrix} W_{1} \\ W_{2}\\ \vdots \\ W_{10} \end {matrix}\right)$$

그렇다면 수치 해석적 방법을 생각해야 합니다. 이때 생각한 게 shooting method입니다. 이 방법은 정말로 슈팅을 통해 해를 얻는 방법입니다. 좀 더 자세히 설명하자면 다음과 같습니다. 먼저 우리가 해를 구하기 원하는 식 eqn) 이 있다고 해 봅시다. 시작점 $x_{start}$를 줍니다. 다음은 eqn)의 $x_{start}$에서의 함숫값 $y_{now}$와 $x_{start}$에서의 기울기 $slope_{now}$를 이용하여 eqn)의 해 근삿값인 $x_{sol}$을 찾는 겁니다. 아래 설명을 보면 더 쉽게 이해할 수 있을 겁니다.

eqn): $y=2x+4$ (solution: $x_{sol}=-2$)
step 1) Let $x_{start}$ = -3.
$y_{now}$ = -2, $slope_{now}=2$, $dx = 1$ -> $x_{now}$ = -2
step 2) let $x_{now}$ = -2.
$y_{now}=0$, $slope_{now}=2$, $dx = 0$ -> $x_{sol} = -2$.

위 eqn)을 이렇게 푸는 건 바보 같은 일입니다만, shooting method는 위 예시보다 훨씬 어려운 방정식을 위와 같은 방법으로 풀게 됩니다. 그렇기에 위 예시를 보면 shooting method가 어떤 식으로 계산하는지 대략적으로 알 수 있을 것이라 생각합니다. Shooting method는 이런 식으로 계산을 거듭하며 식의 해를 구하는 방법입니다. 그렇다면 이 방법이 기대 승률 조정에서는 어떻게 사용될까요? 먼저 10개의 기대 승률 시작점들을 잡아줘야 합니다($W_{start}$). 각각이 위 예시에서의 $x_{start}$들이죠 그다음 모든 경우에 대해 위의 step들을 수행해야 합니다. 각각의 $W_{a, b}$들을 구한 후 이 식들의 가중평균의 합이 다시 $W_{now}$와 얼마나 가까워지는지를 비교해 가면서 계산해야 합니다. 이렇게 쉬운 방식으로도 만족할 만한 기대 승률의 조정이 가능합니다.

여기서 한 가지 주지해야 할 점이 있습니다. Shooting method는 정확한 해를 구하는 방법이 아닙니다. 방정식에 따라 아주 근사한 값을 얻을 수도 있고, 오리무중에 빠질 수도 있습니다. 애초에 Shooting method가 이런 류의 수치 해석 중 가장 쉽게 접할 수 있는 방법이기 때문에 좀 오차가 있는 편입니다. 그래서 시작점을 아주 잘 잡을 필요가 있습니다. 저의 경우 보정 전의 피타고리안 기대 승률로 잡았는데, 그럼에도 불구하고 이 해가 좀 나쁠 때가 있습니다. 어느 정도 시즌이 진행된 후 (~약 10경기 정도)라면 몰라도 시즌 초반에는 좀 불안정합니다. 그럼에도 이 방법을 쓰는 게 나쁘지는 않습니다. 시즌 초반이기 때문에 이후에 대한 예측력이 많이 약합니다. 그렇기 때문에 이 정도 초반에는 어느 팀이나 미래 기대 승률이 0.500에서 그리 차이가 나지 않기 때문에 결과 예측값에 큰 영향을 주지는 않습니다. 무엇보다 미래 기대 승률이 꽤 차이가 나기 시작할 때쯤에는 이미 shooting method로도 충분히 좋은 값을 얻을 수 있습니다. 그렇기에 shooting method를 쓰는 것도 나름 쉽고 괜찮은 방법이라고 생각하여 계산을 진행하기로 했습니다.

다음 편은 3. 홈/원정 경기 승률 조정입니다.

KBO PS Odds 바로가기

반응형

관련글 더보기

댓글 영역