Xp
NBA       
Xp
  
KBL       
Xp
  
Mania Community. Your Favorite.
Maniazine
BPM Ver 2.0에 대한 설명
 
19
  1206
2020-03-02 21:44:24

레퍼런스에서 쉽게 확인할 수 있었던 2차 스탯 BPM. 2020년 2월에 레퍼런스가 BPM의 공식을 변경한, BPM Ver 2를 제시했습니다. 한 4년쯤 전에 매니아진에 BPM에 대해 간단히 설명한 글이 있었는데, 공식이 변경되었으니 다시 한번 BPM에 대해 설명하는 글을 써보려 합니다. 사실 레퍼런스 설명의 번역글에 가까우니 영어가 편하신 분들은 그쪽에서 읽는 게 더 좋으실 수도 있겠습니다. 

 

 | https://www.basketball-reference.com/…

 

1. BPM이란?

BPM은 박스 스코어 기반의, 마진을 예측하는 유형의 스탯입니다. 즉 Play-By-Play 유형의 스탯이나 트래킹 스탯은 BPM의 산정에 고려되지 않으며, 전통적인 박스 스코어 스탯과 포지션, 팀의 퍼포먼스 등을 고려하여 정해지게 됩니다. BPM은 비율 스탯으로 출전 시간은 고려하지 않으며, 리그 평균을 0으로 잡고 해당 선수가 100 포제션당 몇 점을 추가적으로 기여했는지 알려 주게 됩니다. 즉 BPM이 5인 선수가 있다면, 리그 평균의 선수가 있을 때보다 해당 선수가 코트 위에 있을 때 그 팀은 100 포제션당 5점을 더 벌 것이다.. 정도로 생각해 볼 수 있습니다.

 

레퍼런스는 BPM 수치에 따라 해당 선수의 급이 어느 정도인지 제시하고 있는데, 그는 다음과 같습니다.

 

+10.0 - 조던, 르브론의 피크 시즌 급으로 올타임급 시즌

+8.0 - 노비츠키, 샼의 피크 시즌 급으로 MVP급 시즌

+6.0 - ALL-NBA급 시즌

+4.0 - 올스타 후보급 선수

+2.0 - 좋은 스타팅 선수

+0.0 - 괜찮은 스타팅 선수나 좋은 식스맨

-2.0 - 대체 선수 레벨이 되는 스탯으로, 리그 벤치급 선수

-2.0 아래에는 벤치 끝자락에 있는 선수들이 위치

 

BPM에 따른 선수의 급은 대략 위와 같고, 이제 BPM이 계산되는 순서를 알아보겠습니다. 

 

시작 단계에서는, 팀의 모든 선수가 동일하게 기여했다고 가정하고 시작하게 됩니다. 그래서 팀의 스탯에 따라서 선수들이 위치하게 되고, 이제 여기에 득점, 리바운드, 어시스트 등의 박스 스코어 스탯이 반영되어 변동이 있게 됩니다. 

 

여기서 BPM 1.0과 차이점이 있는데, BPM 2.0에서는 선수들의 기여를 포지션, 선수의 유형에 따라 다르게 분배하고 있습니다. 센터의 블락보다는 가드의 블락이 더 가중치가 높고, USG가 낮은 선수는 수비에서 받는 압박이 적기 때문에 더 효율적으로 득점해야 USG가 높은 선수의 득점만한 가치를 갖게 됩니다. 또한 수비 리바운드와 같은 스탯은, 어떤 개인이 잡는지보다는 팀의 산물로 간주되어 한 개인에게 부여되기보다는 팀 전체가 그 기여를 나눠 갖는 식으로 되고, 이것이 BPM 1.0과의 큰 차이 중 하나입니다. 

 

즉 BPM은 팀의 기록와 박스 스코어에만 의존하기 때문에 , 요즘 나오고 있는 PIPM, RPM 등의 마진 등을 포함한 스탯과는 본질적으로 다릅니다. 특히 수비의 경우 그 차이가 심한데, 공격에서는 스크린 등의 일부 영역을 제외하고서는 박스 스코어에도 대부분의 정보가 남게 되지만 수비에서의 포지셔닝, 커뮤니케이션 등의 많은 부분이 박스 스코어에는 담겨 있지 않고, BPM은 해당 정보를 반영하지 못합니다. 

 

즉 제작자들은 BPM은 선수의 전반적인 영향력이나 공격력을 평가하기에는 좋은 지표이지만, 수비의 평가에서는 보조적으로 사용하는 것을 권하고 있습니다. 

 

 2. 시즌별 BPM

 

1985-2020 시즌까지는 게임당 Value를 합해서 시즌의 BPM을 산출하고, 스케쥴의 강도 등을 더 잘 반영하고 있습니다.

1974-1984 시즌까지는 시즌 단위의 값으로 BPM을 산출하고, 1974-1977 시즌은 턴오버 값을 회귀분석을 통해 추정하여 사용하고 있습니다. 

1954-1974 시즌에 대해서는 Simplified BPM이 곧 공개될 예정이라고 합니다. 

 

3. 시즌 단위 BPM의 계산

 

BPM의 계산에는 100포제션당으로 환산된 선수의 박스 스코어 기록, 그리고 100포제션당으로 환산된 Team Rating이 필요합니다. 그리고 선수의 포지션 정보가 필요한데, 대부분의 선수에서 이 포지션은 박스 스코어 데이터를 통해 추정됩니다.

 

계산 과정은 다음과 같습니다. 

 

 1) 시즌의 데이터를 이용해서 선수의 포지션, 공격에서의 역할을 추정

 2) 선수의 포지션, 역할에 따라서 각 스탯이 갖게 될 상수값을 계산

 3) 해당 팀의 조정된 슛 시도 당 득점을 구하고, 회귀분석으로 구해진 Baseline 값과 비교

 4) 각 선수의 득점에, 조정된 슛 시도당 특정 상수값을 더해 팀 전체의 슈팅으로 보정

 5) 선수별로 RawBPM을 계산

 6) 선수의 RawBPM을 팀에서의 출전시간 배분을 고려해 합한 뒤 팀의 실제 Adjusted Efficiency와 비교

 7) 팀 상수를 선수의 RawBPM에 더해, 팀의 Adjusted Efficiency와 선수들의 RawBPM 합이 같아지도록 조정

 8) 선수의 RawBPM + 팀 상수로 최종 BPM을 계산

 

이 때 선수의 포지션, 역할에 따라서 각 스탯이 갖는 상수값이, 회귀분석을 통해 정해지게 됩니다. 이때 회귀분석은 RAPM을 기반으로 이루어졌는데, 단순 RAPM이 아닌 5년 단위로 이루어진 총 20년의 RAPM값에 베이지안 추론을 적용하여 만들었다고 합니다. 해당 상수값은 아래와 같습니다. 

 

 위에 보이듯 각 값별로 상수값이 정해지는데, 턴오버와 3점슛, 파울 등은 어떤 포지션이든 같은 상수를 가지나, 어시스트, 스틸, 블락 등은 가드의 것과 센터의 것이 다른 상수값을 가집니다. 가드의 공격 리바운드나 스틸, 블락에는 높은 가치를, 어시스트나 수비 리바운드에는 상대적으로 낮은 가치를 부여하고, 해당 선수의 포지션 Estimate 값이 3.0이라면 저 두 값의 정 가운데 있는 값이 해당 선수의 상수로 적용되는 식으로 스탯이 계산됩니다. 

 

그리고 포지션과 공격에서의 역할에 따라, 자체적으로 상수 또한 보정됩니다.

 

 

 

공격에서의 롤의 경우, Creator에 가까울수록 박스 스코어에 많은 스탯이 기록되고 Receiver에 가까울수록 그렇지 않기 때문에, 크리에이터에게는 -, 리시버에는 +가 부여되어 그를 보정하게 됩니다. 포지션의 경우 3.0 이상으로는 일괄적으로 0의 값이, 1.0, 즉 포인트가드는 -0.818이 부여되고 그 사이의 선수들은 선형적으로 상수값을 받습니다. 이는 가드 포지션의 선수들의 수비적인 기여가 상대적으로 3번 포지션 이상의 선수들보다 낮기 때문에 부여됩니다. 

 

이제 위의 스탯별 상수값, 그리고 포지션과 공격에서의 역할을 바탕으로 해당 선수의 RawBPM을 구하게 됩니다. 

 

 

레퍼런스에는 17시즌 르브론이 예시로 들어가 있습니다. 르브론의 포지션은 박스 스코어 스탯에 의한 추정으로 SG와 SF 사이, 2.3번으로 책정되었고 공격에서의 역할은 1.0, 크리에이터로 책정되어 위의 상수값들을 적용받았습니다. 100 포제션당 스탯을 왼쪽의 상수와 곱하여 18.7이라는 값을 얻고, 여기에 포지션 보정값 (3-2.3)*(-0.818/2)=-0.3, 그리고 공격에서의 역할에 대한 보정값 (3.0-1.0)*(-2.774/2)= -2.8 을 더해 15.6이라는 RawBPM을 얻습니다. 

 

이제 이렇게 선수별로 RawBPM을 구했으면, 거기에 Team Adjustment를 해 주어야 선수의 BPM을 구할 수 있습니다. 이는 어떻게 보면 간단한 과정으로, 선수들의 RawBPM에 출전시간의 점유율을 곱해서 모두 합한 뒤, 해당 수치와 팀의 Rating간의 차이를 구한 뒤 해당 값을 Team Adjustment로 잡아, 모든 선수들의 RawBPM에서 빼 주면 됩니다. 

 

그런데 단순하게 팀의 성적으로 구한 것이 아니고, 선수들이 리드하고 있을 때 보다 리드당하고 있을 때 더 좋은 플레이를 보인다는 이론에 따라서 1점의 리드 당, 100포제션당 0.35점 만큼을 나쁘게 플레이한다는 보정값을 부여하여 계산하게 됩니다. 17시즌 CLE는 평균적으로 1.4점을 리드하고 있었고, 그 1.4점 리드는 -0.48점으로 환산되며, 그 절반은 상대팀에게 부여되기 때문에 나머지 0.24점은 클리블랜드가 리드한 점수에 따라 선수들이 플레이가 나빠진 것으로 판단하여, Team Rating에 더해주게 됩니다. 이를 통해 실제 17시즌 클리블랜드의 Net Rating 3.0을 3.24로 바꿔서, 이 Adjusted Net Rating을 기반으로 위의 Team Adjustment를 구하게 됩니다. 

 

결론적으로 위의 값들로 구해진 17시즌 CLE의 Team Adjustment는 -8.0이 되고, 르브론의 BPM은 15.6-8.0 = 7.6이 됩니다. 여전히 좋은 기록이지만 전성기에 비해서는 낮아진 모습입니다. 

 

4. OBPM / DBPM의 구분 

 

위와 같이 BPM을 구했다면, OBPM, DBPM으로 구분해 볼 수 있습니다. 단순히 OBPM의 경우 위와 같은 과정을 거치나 그 상수값만 다르게 적용되고, DBPM은 BPM-OBPM으로 간단하게 구해집니다. 

 

OBPM에 대한 스탯별 상수값은 아래와 같습니다. 

 

 

방식은 BPM와 같으나, 그 상수값에만 차이가 있습니다. 3PM의 상수값이 오히려 BPM보다 높은 것은 3점 성공은 공격적으로는 매우 큰 기여이고, 수비적으로는 오히려 약간 부정적인 방향으로 작용한다는 것을 시사합니다. 어시스트의 경우 가드는 BPM과 OBPM의 상수값이 비슷하나 빅맨에서는 OBPM의 값이 낮고, 이는 빅맨의 어시스트는 오히려 수비 스킬과 관련되어 있음을 시사합니다. 공격 리바운드는 OBPM의 상수값이 BPM보다 높고, 가드의 블락은 OBPM 상수가 매우 높습니다. 

 

 

 

공격의 Role과 포지션에 따라서 상수가 부여되는 것은 OBPM에서 동일한데, 공격에서의 롤에 따른 상수값은 크게 감소해 있습니다. 이는 공격에서의 활약은 대부분 박스 스코어에서도 보인다는 것을 말합니다. 

 

5. 경기 단위에서의 BPM

 

위와 같이 기본적으로 시즌 단위에서의 BPM을 어떻게 구하는지는 확인했고, 1985시즌부터는 이를 경기 단위로 진행할 수 있습니다. 포지션과 공격적 역할의 추정은 여전히 시즌 단위이나, Regression과 팀 단위 보정은 경기 단위로 이루어집니다. 

 

경기 단위로 뛴 선수들의 시즌 BPM을 구하고, 그를 경기에서 가져간 포제션의 비중에 따라 합해서 양 팀의 Season-Level BPM을 구합니다. 그리고 이를 게임에서의 리드에 의해 보정된 득실차와 더하게 됩니다. 예를 들어 플레이오프에서 두 팀이 만났을 때 Season-Level BPM이 10이고, 한 팀이 평균 5점의 리드로 12점차 승리를 거뒀다면 양 팀의 해당 경기에서의 Team Rating은 다음과 같이 구해집니다. 

 

승리팀: +10 +12/2 +(0.35/2)*5 = +16.9 points

패배팀: +10 -12/2 -(0.35/2)*5 = +3.1 points 

 

그래서 위와 같이 단일 경기 레벨의 BPM을 구할 수 있게 되고, 만일 해당 경기에 뛴 선수가 시즌에서 450분 이하로, 적게 출장해 BPM이 Outlier값을 갖을 위험이 있다면, 선수의 Projected BPM을 구해 보정하게 됩니다. 그 과정은 다음과 같습니다. 

 

1) 선수의 출전 시간 / (출전경기수+4) 를 통해 Regressed MPG를 계산

2) -4.75+0.175*ReMPG 로 Estimated BPM을 계산

3) (450-출전시간) / 3으로 위의 Estimated BPM에 곱해질 가중치를 계산

4) 선수의 Season Level BPM에는 출전시간을 가중치로, Estimated BPM에는 (450-출전시간) / 3 을 가중치로 삼아 두 값의 가중평균을 구하여 Estimated BPM으로 적용

 

그래서 위의 과정들을 거쳐 경기 단위의 BPM을 구할 수 있게 되고, 시즌 단위의 BPM보다 조금 더 정교한 값을 얻을 수 있습니다. 

 

6. BPM 2.0의 결과

 

변경된 BPM 2.0으로 구해진, BPM Top 15는 다음과 같습니다. 

 

 

상위권은 르브론과 조던이 돋보이고, 원래 +15.6으로 1위였던 웨스트브룩은 많이 정상적인 값으로 떨어졌습니다. BPM 1.0이 더 나은 설명력을 위해 도입했던 항목이 웨스트브룩이라는 아웃라이어를 만나 15.6이라는 기묘한 값을 냈었는데, 그것이 사라진 것을 확인할 수 있습니다. 

 

7. BPM 1.0에서의 문제점

 

2014년의 BPM 1.0은 전반적으로 좋은 결과를 냈으나, 몇 가지 문제점이 있었습니다. BPM 2.0은 이런 문제를 고려하여 수정되었습니다. 

 

1) Non-Linear Term이 있었음 (TRB% * AST%와 같은) 이는 더 나은 Fit을 제공하기 위함이었으나 웨스트브룩 같은 아웃라이어를 해결하기 더 어렵게 했습니다. 

2) RAPM값을 Long Term으로 사용하여, 커리어 내내 Elite Level을 유지한 선수가 별로 없었기 때문에 Outlier로 작용할 만한 값이 없었습니다. 

3) 회귀분석에 MPG를 반영하였는데, 이는 코치들이 좋은 선수를 경기장에 오래 둘 것이라는 것을 감안한 것이었고 실제로 더 좋은 Fit을 제공하였으나 박스 스코어에 제공되는 다른 스탯들과 중복되어, 실제 하나의 스탯이 갖는 가치를 해석하기 더 어렵게 했습니다. 

 

8. VORP

 

VORP는 BPM의 누적값으로, 대체 선수 레벨에 비해 해당 선수가 얼마나 더 누적적으로 좋은 가치를 창출했는지 확인할 수 있습니다. 대체 선수 레벨은 이론적으로 미니멈, 또는 정상 로테에 포함되지 못하는 선수로 정해지는데, 논의를 거쳐 대체 선수 레벨로는 -2.0의 BPM이 정해졌습니다. 그러나 실제로는 -2.0보다 낮은 BPM을 기록하면서 로테이션에 포함되는 선수들도 있게 되는데, 그 이유로는 선수가 실제로 대체 선수 레벨 이하이거나, 단순한 불운, 또는 나쁜 유닛에서 뛰고 있거나, 성장을 위해 뛰고 있거나, 선수의 실제 기여를 BPM이 반영하지 못하고 있는 등의 이유가 있을 수 있겠습니다. 

 

OBPM과 DBPM에 대해 대체 선수 레벨을 구한다면 -1.7, -0.3이 되겠으나, 실제로는 포지션별로 DBPM 등은 크게 달라지기 때문에 수많은 PG들은 -0.3 이하의 DBPM을 갖게 되고, 그런 의미해서 OVORP, DVORP 등은 의미가 없어 계산하지 않습니다. 

 

VORP는 [BPM - (-2.0)] * (% of possessions played) * (team games/82) 의 단순한 식으로 계산이 되고, 여기에 2.7을 곱하면 해당 선수의 Wins over Replacement Level도 생각해 볼 수 있습니다. VORP Top 15 시즌은 아래와 같습니다. 조던이 르브론보다 경기당 조금 더 긴 시간을 뛰었고, 르브론의 단축시즌 등의 이유로 BPM에서보다는 조던이 조금 더 높이 위치합니다. 여전히 둘이 제일 많습니다. 

 

 

이상으로 BPM 2.0에 대해 레퍼런스가 쓴 글의 일부를 번역하다시피 해서 옮겨 보았습니다. 관심이 있던 분들께는 도움이 되길 바라며..

6
Comments
Updated at 2020-03-02 22:18:55

천재시군요.
대략 잘 봤습니다.
저는 문외한이지만 2.0이 더 전체적으로 퍼포먼스를 잘 설명하는 것 같습니다.

WR
2020-03-02 23:28:50

아웃라이어가 사라지는 것만 해도 일단 가시적으로 뭔가 좀더 좋아보이는 느낌은 있네요

2020-03-03 07:59:46

맞습니다.

저는 그 아웃라이어라고 칭했던의 수치가 그 선수의  다른 2차 스탯 그리고

유사한 퍼포먼스를 냈던 선수들의 수치와 너무 차이가 나서 이상하다고 느끼고 있었거든요.

막연히 리바(특히, 수비)와 어시에 너무 많은 가점을 주는 건 아닌가? 하고 생각했었습니다.

1
Updated at 2020-03-03 00:12:12

잘 봤습니다. 고생하셨네요. 포지션에 따라 coefficient에 차등을 준 것만 소개해볼까 생각했었는데 Da Funk님 덕분에 하지않아도 되겠습니다

WR
2
2020-03-02 23:29:04

넵 편히 쉬시고 다른 주제 칼럼 부탁드립니다

2020-03-03 22:47:56

 결국 마진을 기본스탯들의 (거의) 리니어 썸으로 표현한다는 이론은 유지한 채 포지션 분화를 준 거네요. 결국 변수는 많으니까 어찌되었든 리니어로 뭉뚱그려서 좋은 추론을 낼 수 있다... 처음에는 BPM 나왔을 때 신박했었는데 최근 나온 트래킹 기반 스탯들 보니 BPM이 참 선구자적 역할을 한 것 같으면서도 이제는 올드스쿨 스탯으로 분류 되어져야만 할 것 같습니다. 

23
2183
20-04-02
21
2767
20-04-01
2
1649
20-03-30
7
4170
20-03-29
10
4050
20-03-29
14
2956
20-03-28
16
2656
20-03-27
39
6004
20-03-23
11
2731
20-03-22
36
3812
20-03-19
27
2707
20-03-16
24
3803
20-03-15
8
1174
20-03-15
28
5153
20-03-14
128
12139
20-03-11
23
6125
20-03-11
18
4791
20-03-10
21
3950
20-03-09
12
1614
20-03-08
19
907
20-03-07
글쓰기
검색 대상
띄어쓰기 시 조건