마진 스탯의 역사와 RPM의 탄생 및 올바른 해석
2014년 4월, Real Plus Minus 스탯이 처음 세상에 나왔습니다.
처음 RPM을 만들어낸 사람은 Steve Ilardi의 도움을 받은 Jeremians Engelmann이지만, 이 아이디어 자체를 그가 처음 제안한 것은 아닙니다. RPM이 세상에 나오기 십여년 전부터 "outside the boxscore"를 보기 위한 시도가 있어왔고, RPM은 그 중 가장 최근 버전이라고 볼 수 있습니다.
박스스코어에는 온코트 마진이 적혀있죠, 하지만 이것만 가지고 선수를 평가하는 경우는 없습니다.
왜냐하면 선수가 아무리 잘해도 상대편이 더 잘하거나, 혹은 같은 편이 너무 못했을 경우, 또한 자신을 대체하여 나오는 선수의 퍼포먼스 등 다양한 상황들이 종합적으로 마진에 영향을 미치기 때문입니다.
얽히고 섥힌 상황이 맞물려 단순한 숫자, 마진으로 표시되는데, 다행히도 수학과 통계적 기법을 통해 이러한 복잡한상호작용에서 한 선수의 효과를 뽑아낼 수 있습니다.
82games.com에서는 02-03 시즌부터 선수가 온코트일때의 마진과 더불어 오프코트일 때의 마진 사이의 차이를 고려하는 넷 레이팅 스탯을 처음 NBA에 도입하여 제공하였습니다. 하지만 이는 여전히 unadjusted 플러스/마이너스 레이팅이었습니다. 이는 단순히 그 팀의 "대체 선수"대비 마진이었지 같이 뛰는 선수, 그리고 상대하는 선수 영향이 고려되지 않은 스탯이었습니다. 클런치나 가비지도 고려되지 않았죠.
1. Adjusted Plus Minus (APM)
그래서 만들어진게 Adjusted plus/minus (APM) 입니다.
2004년 North Carolina 대학의 경제학 교수인 Dan T. Rosenbaum교수가 개발했습니다.
간단히 식의 원리를 살펴보면,
마진은 한 observation 단위로 계산됩니다.
여기서 observation이란 교체가 일어나지 않은 특정 단위시간입니다.
한 경기를 여러개의 observation으로 쪼개고, 그 observation 동안의 마진 합이 경기의 마진이 되는 거죠.
당시 02-03, 03-04 2시즌을 합쳐서 APM을 구했고, 그 기간동안 도합 6만번 이상의 observation이 있었습니다.
이 상태에서 아래와 같은 회귀분석을 하게 되는데요,
MARGIN = b0 + b1X1 + b2X2 + . . . + bKXK + e,
where MARGIN = 100 * (home team points per possession – away team points per possession)
X1 = 1 if player 1 is playing at home, = -1 if player 1 is playing away, = 0 if player 1 is not playing
XK = 1 if player K is playing at home, = -1 if player K is playing away, = 0 if player K is not playing
e = i.i.d. error term
b0 measures the average home court advantage across all teams
b1 measures the difference between player 1 and the reference players, holding the other players constant
bK measures the difference between player K and the reference players, holding the other players constant
간단히 설명하자면
마진이란 100*(홈팀의 포제션당 득점 - 원정팀의 포제션당 득점)이며
이는
"beta0 (선수와 무관한 모든팀의 홈코트 어드벤티지)
+ beta1 (선수1이 뛸때의 레퍼런스 선수와의 차이)*X1 (선수가 뛰는지 여부; 홈이면 1, 어웨이면 -1, 안뛰면 0) + beta2*X2 + ... + betaK * Xk (이 과정을 K명의 선수에게 반복)
+ 오차"
로 표현될 수 있다는 것입니다.
여기서 레퍼런스 선수란 당시 02-03, 03-04 시즌 합쳐 250분 이내로 뛴 모든 선수를 말합니다. 대체선수가 되겠죠. (250분 이하 출전 선수를 레퍼런스로 두는 것 자체도 지적받기도 합니다)
이렇게 각각의 observation동안의 마진 수치는 선수 개개인의 공헌으로 쪼개지게 됩니다.
재미있는 점은 이때 Rosenbaum은 1-3쿼터까지는 10점차 이내일땐 풀 가중치를 주고, 20점차 이상이 나면 가중치를 0을 줍니다. 의미가 없는 수치란 거죠, 10-20점차 사이일때는 그 사이의 가중치를 주게되고요.
그러다가 4쿼터가 되면 가중치를 주는 기준이 바뀌어서 4쿼터 초반에서 끝으로 갈수록 10점, 20점 기준이 각각 3점 6점으로 낮아지게 됩니다. 즉, 경기 막판에는 10점차라고 해도 6점 이상이므로 0의 가중치를 받아 점수를 받지 못하는 거죠.
우리는 2시즌간의 모든 경기에 해당하는 6만개의 observation에 대한 마진 수치를 전부 알고 있기 때문에, 회귀분석을 통해 위 수식의 epsilon (=error,오차)를 가장 적게 만드는, 다시 말해 가장 적은 오차로 마진값을 가장 잘 설명할 수 있는 beta 값을 찾아낼 수 있습니다.
이렇게 구해지는 beta값이 바로 선수 개인의 pure adjusted plus/minus (PAPM)입니다.
하지만 이렇게 구한 스탯은 실제 체감하고 인정되는 선수평가와 상당한 괴리감이 있었습니다,
당시 PAPM 1위는 월등한 수치로 케빈 가넷이었고 03-04 MVP로 모두가 인정하는 선수였지만, 2등은 시즌 평균 3.4득점 1리바의 시애틀 가드 Richie Frahm이었습니다. 물론 이선수가 출전시간 469분에 그친 아웃라이어였다고 넘어가더라도 3등 또한 당시 준수한 롤플레이어에 그쳤던 네네였고요. 그외에도 설명하기 어려운 선수들이 많았습니다. 괴리감이 너무 컸던 거죠.
밑에 Pure Adj. +/-항목을 보시죠
(당시 실제 선수 평가와 큰 괴리가 있죠?)
그래서 Rosenbaum은 여기에 하나의 주관을 통한 보정을 넣게 됩니다.
개인적으로는 꽤 강한 주관이라고 생각하는데요.
Rosenbaum는 주관적으로 선택한 14개의 박스스코어 기반 항목을 변수로 두고, 회귀분석을 통해 PAPM을 가장 잘 설명하는 각 항목의 계수를 추정하여, 박스스탯 기반으로 재구성하는 것이죠.
그 과정은 아래와 같습니다.
Y = b0 + b1X1 + b2X2 + . . . + b13X14 + e, where
Y is the pure adjusted plus minus statistic (the bs from the first regression)
X1 through X14 are game statistics described
처음 PAPM을 구할때와 동일한 회귀분석입니다.
Y는 마진만을 통해 계산한 순수 (pure) APM이고, 이것을 14개의 특정 박스스코어 스탯 항목의 coefficient를 곱한 합이 PAPM를 설명한다고 가정합니다,
여기에 사용한 14개의 항목과 회귀분석을 통해 구한 beta값은 아래 표와 같습니다.
제게 제일 먼저 눈에 띄는 것은 40분당 포인트, 어시스트, 리바운드의 기하평균이었네요, 득점, 어시, 리바 각각의 항목 합보다도 높은 positive coefficient 수치를 보입니다. 이 항목을 추가적으로 선택한 것이 Rosenbaum에게는 마진을 설명하는 좋은 기준일 것이라는 주관이 포함된 것이죠.
그외 어시스트라든지 수비리바가 그 자체론 negative value인 것도 눈에 띕니다. 파울은 통계적 의미는 없지만 많이 한다고 나쁜 것이 아닌 것으로 나오기도 하고요. 경기당 출전시간도 고려한 점도 꽤 cute합니다. 이것만 가지고도 각 항목이 마진에 있어서 어떤 의미가 있는지 생각해보는 것도 어느정도 의미가 있긴 합니다.
여튼 이렇게 예상과 다른 선수들을 제거하기 위해 PAPM을 재구성하여 나온 02-04시즌 Statistical Plus/Minus 순위는 아래와 같습니다.
(납득하기 어려웠던 선수들이 이과정에서 조금 제외되었습니다)
Rosenbaum은 마지막으로 이 두 개의 APM 스탯을 적당히 버무려서 overall APM을 구합니다.
OVERALL = a * PURE + (1 – a) * STATS,
where OVERALL is the overall plus/minus rating
PURE is the pure adjusted plus/minus rating. STATS is the statistical plus/minus rating.
a is the share of the overall rating due to the pure rating (it is chosen to minimize the standard error of the overall rating with the restriction that it fall between 10% and 90%, note that this will result in the pure rating counting less when it is especially noisy)
pure는 위에서 본 PAPM, STATS은 Statistical APM이죠.
재밌는 것은 이 alpha 값이 매 선수마다 다르게 책정됩니다. 선정 기준은 각 선수의 standard overall rating의 에러를 가장 줄이는 값인지 여부입니다.
위 모든 과정이 끝난 02-03, 03-4의 overall APM은 밑과 같습니다.
(정확히는 03-04가 02-03보다 2배의 가중치를 가지도록 되어있긴합니다.)
실제 세간의 평가와 비교했을때 많이 그럴듯해졌죠?
2. Regularized APM (RAPM)
APM은 분명 기존의 on/off 마진을 크게 발전시켰지만, 여전히 그 수치들은 많은 괴리감을 보이는 경우가 있었습니다. 그래서 APM을 지속적으로 발전시키기 위한 노력이 계속 되었는데요.
2010년, Joseph Sill은 Regularized APM이란 방식을 고안했습니다.
이는 기존의 회귀분석의 단점을 극복하고자 단순 선형회귀분석 대신 ridge regression (능형 or 능선 회귀 분석; a.k.a regularization)을 적용하는 방법이었죠.
선형 회귀 분석을 할때 항상 문제를 일으키는 것 중에 하나가 overfitting이라고 하는 것입니다.
밑에 그래프에 보이는 저 점들을 가장 잘 설명해주는 라인(regression curve)을 하나 잡는다고 합시다. 그 과정이 바로 회귀분석이라고 할 수 있는데요.
세 가지 예시 중 뭐가 가장 적절해 보이시나요?
첫번째는 너무 대충 그은 느낌이고, 3번째는 라인 자체는 그래프에 있는 모든 점을 완벽에 가깝게 설명하지만, 저 모델에 저 점들이 대충 보이는 추세를 따르는 새로운 데이터를 추가했을때, 전반적인 추세 내에 존재할때조차도 과장된 오차를 가져오는 경우가 많이 생깁니다.
반면 2번째 그림은 항상 적당한 수준의 예측 정확도를 유지하게 되죠.
ridge regression을 위한 이런 오버피팅의 문제를 계산식에서 파라미터들의 magnitude를 제한함으로서 해결하고자 합니다.
조금 쉽게 예시를 들면,
위에서 봤던
Y = b0 + b1X1 + b2X2 + . . . + b13X14 + e,
요런 식에서 beta 값들, parameter의 값들이 너무 커지면.. 특정 몇몇 선수들, 특히 높은 beta 값을 가진 스탯들에 편중된 스탯을 찍는 선수들은 가치가 왜곡되어버리는 거죠. (이 예시는 SAPM의 경우이지만 PAPM의 회귀분석에도 동일하게 적용됩니다, 몇몇 선수의 가치를 왜곡시켜 마진을 설명하게 되죠)
그래서 이런 beta 값들의 합이 일정 수치가 넘치 못하도록 하여, 넘으면 페널티를 주는 그런 방식을 사용합니다. 모델 complexity를 줄여서 결과의 variance을 감소시키는 것이죠.
이때 패널티 팩터 (lamda)를 얼마로 줄것인가도 또한 중요한데요,
이걸 정하기 위해 K-fold cross-validation을 진행합니다.
이는 우리가 가진 데이터 셋을 K개로 나눠서 이거 하나 없애보고 저거 하나 없애보고 해서 비슷한 추세의 약간 다른 데이터셋처럼 만들어 테스트 샘플처럼 사용하는 것입니다. 말그대로 교차검증(cross-validation)하는 것이죠, 이때 가장 큰 out-of-sample 정확도를 보이는 페널티 팩터가 선택됩니다.
너무 복잡하다고 느끼시면,
그냥 튀는 값을 줄이기 위해 좀더 보수적인 방향으로 발전시켰다.. 라고 보시면 됩니다^_^
3. Real Plus Minus (expected RAPM)
드디어 등장한 Real plus minus입니다. 여기까지 오는게 참 힘드네요.
이것은 말씀드린 대로 Jeremians Engelmann이 만든 expected RAPM (xRAPM)의 최신 버전입니다.
원래 Jeremians이 http://stats-for-the-nba.appspot.com/ 라는 사이트에서 제공했는데 ESPN에서 RPM을 제공하면서 부터는 운영하지 않는 것 같습니다. (RPM은 정확한 formula를 제공하지 않아 식에 대한 설명이 불충분한 점 양해 부탁드립니다)
xRAPM의 특징은 이름에서도 알 수 있다시피, "expectation"이라는 목적으로 만들어진 스탯입니다.
그래서 "현재"의 퍼포먼스를 평가하는 스탯으로 쓰기에는 놀랍게도 부적합합니다.
(아예 평가를 못하는 것은 아니니, 조금 완화하여 단점을 가지고 있다라고 표현하는게 나을수도 있겠네요)
왜냐하면 xRAPM, RPM은 선수의 신장에 따른 평균적인 커리어 트렌드(!!)를 고려하기 때문입니다.
그러다보니 일반적인 기대치보다 더 빨리 터진 선수의 시즌들을 저평가하게 되거나 나이가 들어서 만개한 대기만성형 선수의 스탯도 저평가하게 되죠.
일례로 13-14 소포모어 시즌 놀라운 성장을 보여준 AD는 박스스코어 기반 스탯인 PER과 WS/48에서 각각 4위, 7위를 기록하며 올스타 시즌을 보냈만, 20-21살의 평균적인 커리어 트렌드를 접목시켰을 때 플루크일 가능성이 고려되어 상대적으로 저평가되었고 당시 RPM 수치 리그 98위를 기록합니다.
(참고로 이 예시는 참고한 칼럼에서 든 것이지 AD 팬인 제가 고른게 아닙니다.)
또한 RPM은 선수의 포지션을 고려하는데요,
예시로 13-14 시즌 로이 히버트의 DRPM은 3.52였고, 폴조지는 2.61이었습니다. 만약 여기까지만 본다면 그냥 단순히 히버트가 더 나은 수비수라고 여기기 쉽겠죠. 하지만 리그 센터들이 평균 DRPM은 1.78입니다. 반면 스몰포워드는 0.04이죠.
즉, 상대적으로 자기 포지션에서 얼마나 뛰어난 수비수인지를 보면 히버트는 +1.74의 레이팅 차이이지만, 폴조지는 +2.57에 달합니다. 우리가 만약 포지션을 "고려한다면", 그때는 누가 더 좋은 수비수인지에 대한 해석이 달라질 수 있죠.
또한 RPM은 미래에 대한 예측력을 높이기 위해 Bayesian Theorem을 적용했습니다.
단어는 낯설어 보이지만 사실 Bayesian Theorem은 우리가 잘 아는 조건부 확률입니다.
선행 사건 (prior probability) 에 의해 뒤에 사건이 일어날 확률 (posterior probability), 즉 미래 퍼포먼스에 대한 예측치가 영향을 받습니다.
Prior prabability는 지금까지 선수가 쌓은 성적을 기반으로 하기 때문에, 지금까지 꾸준히 좋은 성적을 내온 선수라면 지금 당장의 짧은 기간 성적이 좋지 않아도 상대적으로 더 좋은 RPM 수치, 미래 퍼포먼스 예측치를 얻게 됩니다.
RPM이란 스탯이 현재 이순간을 평가하기 보단 과거를 기반으로 미래 퍼포먼스 "예측"하는 것에 촛점이 맞춰져있다는 것을 다시 한번 알 수 있죠.
개인적으로 느끼기엔 RAPM에서 RPM으로 넘어오면서 현재의 평가보다 미래예측으로 조금은 편중 된 것이 아닌가라는 생각도 들긴 했습니다. 실제 한편에선 이런 보정이 있기전인 RAPM을 더 신뢰하는 사람들도 있다고 하더군요.
참고로 RAPM은 여기서 볼수 있습니다. https://basketball-analytics.gitlab.io/rapm-data/season/2017-18/regular-season/
다만 보시면 약간의 괴리감에 충격을 받으실수도 있습니다. 순수한 마진 스탯이 이런 느낌인가 싶지요.
일례로 17-18시즌 MVP 1-3위가 전부 탑10에도 들어가지 않습니다
(하든 13위, 르브론 63위, AD 34위 즈루 9위!!!)
사실 어떤 스탯이든 장단점은 있고 정답은 없습니다.
중요한건 스탯의 목적과 약점을 이해하고 적절하게 사용, 해석할 수 있느냐겠죠,
저도 이글을 준비하면서 마진 스탯에 대해 많이 공부할 수 있었습니다.
특히 RPM 스탯에 대한 전반적인 이해가 깊어지게 됐었네요. 보시는 분들에게도 도움이 되는 글이었으면 합니다.
레퍼런스
1. http://www.82games.com/comm30.htm
2. http://www.sloansportsconference.com/wp-content/uploads/2015/09/joeSillSloanSportsPaperWithLogo.pdf
3. https://medium.com/greyatom/what-is-underfitting-and-overfitting-in-machine-learning-and-how-to-deal-with-it-6803a989c76
4. https://squared2020.com/2017/09/18/deep-dive-on-regularized-adjusted-plus-minus-i-introductory-example/
5. https://books.google.co.kr/books?id=_ZcnDwAAQBAJ&pg=PT254&lpg=PT254&dq=joe+sill+nba&source=bl&ots=Kk7-4VTbwd&sig=mV-t-TiWU6J-tzvb32EL68CUsrA&hl=ko&sa=X&ved=2ahUKEwjZpNfVp7DeAhUKVrwKHV7dBOoQ6AEwEnoECAkQAQ#v=onepage&q=joe%20sill%20nba&f=false
6. http://godismyjudgeok.com/DStats/2011/nba-stats/a-review-of-adjusted-plusminus-and-stabilization/
7. https://georgetownsportsanalysis.wordpress.com/2013/11/03/visualizing-nba-analytics-through-the-past-decades-superstars/
8. https://cornerthreehoops.wordpress.com/2014/04/17/explaining-espns-real-plus-minus/#fn1
9. http://www.espn.com/nba/story/_/id/10740818/introducing-real-plus-minus
좋은 글 감사히 잘 읽었습니다