상세 컨텐츠

본문 제목

2023 시즌 두산베어스 경기 데이터 분석

데이터 분석

by jii 2023. 11. 21. 02:24

본문

두산베어스는 정규시즌 5위, 최종 5위로 2023 시즌을 마무리했다.
 
새로 감독이 부임하고 코치진 개편 등으로 많은 변화들을 주었던 시즌인 만큼 팬들의 기대도 컸고,
나 역시 2022 시즌 결과에 많은 실망을 했었기 때문에 이번년도 개막이 더 기대가 되었다.
 
이번 시즌 경기들을 보며 인상깊었던 경기들과 궁금했던 점들을 분석해보려 한다.


<1. 승리 경기 추이>

 이 부분은 간단한 단순 궁금증!
 
1) 날짜, 팀, 승패 여부 데이터를 가져온다.(엑셀에 저장, csv로 변환)

데이터 출처ㅣ KBO 기록실
 
2) 코드

승패 여부 0,1로 저장

 
3) 결과

4) 코드
Analysis2 - Colaboratory (google.com)

 

Analysis2

Colaboratory notebook

colab.research.google.com


<2. 이번 시즌 매 경기의 MVP 선정 기준>

허슬 플레이어를 선정할 수 있는 식을 고안해내기 !
 
승리한 경기 후에는 그날 경기에서 활약한 선수가 허슬플레이어로 선정된다. 그렇다면 단순히 홈런을 쳐서, 팀의 승리에 기여해서 라는 이유로 MVP를 선정할 수 있을까? 지난 해에 대외활동 내부 공모전에서 진행했던 KBO 한국시리즈 MVP 예측 프로젝트와 유사한 주제이다.
 
1) 첫번째 데이터 수집
허슬플레이어 기록을 찾을 수 있는 경기는 홈경기&승리 경기였다. 구단 유튜브에서 허슬 플레이어 시상식 영상만 찾아가면서 그날 허슬플레이어를 찾느라 데이터 수집 자체가 좀 힘들긴 했다...

 
한 경기에 출전하는 투수는 많지 않아서, 타자 기록만 놓고 보려 한다. 
 
2) 아이디어(중요)
특정 스탯을 기준으로 clustering을 했을때 동일 범주 내에 허슬플레이어의 대부분이 포함되어 있다면, 그 특정 스탯mvp선정 식으로 활용할 수 있지 않을까??
 
3) 두번째 데이터 수집
그렇다면 필요한 두번째 데이터는 해당 경기에 출전한 모든 타자들의 데이터이다. 이 데이터 역시 kbo 기록실에서 가져왔고, 수집 과정이 쉽지는 않았다. 이런 데이터가 따로 제공이 되어있었다면 좀 더 수월했을 것 같다.

 
위와 같이 그날 mvp는 n번째 key라는 데이터로 저장했다. 추후 mvp 선수들을 구분하기 위함이다. 
 
4) 분석 진행
데이터 분석 동아리에서 이번에 진행하고 있는 프로젝트의 내용도 군집화 알고리즘이라 익숙한 내용들이 몇몇 보였다. 군집화 알고리즘에는 여러가지가 있는데, 그중에서 K-means 알고리즘을 선택했다.

 

데이터를 읽어온다. encoding='cp949'는 필수!

 

스탯들의 이름을 변경한다. 결측치 처리는 0으로, 필요없는 데이터인 날짜는 drop해준다.

 

가중치를 구할 때 유용할 것 같아 변수들간 상관관계에서 뭔가 얻어보려고 했는데, 대부분의 상관계수가 0.5 미만이라 의미가 없을 것 같아 사용하지는 않았다.

 

본격적으로 K-means를 적용해본다.

 

두가지 feature을 새로 생성했다. 

 

첫번째, 아무래도 mvp는 점수를 내는데 얼마나 기여했는지가 중요하다 보니 득점과 타점에 주목했다. 그래서 타석당 평균 득점/평균을 더해 새로운 feature, new를 만들었다. 

 

두번째는 SLG이다. SLG는 장타율로, mvp와는 직접적 연관이 없어 보이지만 이를 feature로 선정해 군집화 했을때 가장 좋은 결과가 나와서 두번째 feature로 정했다.

원래 장타율의 계산식은 다음과 같다. 

((H - "2B" - "3B" - HR) + 2*"2B" + 3*"3B" + 4*HR+0.0)/AB
(1루타 + 2*2루타 + 3*3루타 + 4*홈런) / 타수
(*1루타 계산 주의!)

2,3루타 수를 따로 기록하는게 번거로워서 안타 개수에 가중치 6을 곱하고 홈런에는 원래대로 4를 곱했다.

 

 

군집화 결과이다.

 

key 선수들의 cluster만 출력해보면,

결과적으로 mvp 선수 37명 중 25명이 '0' 군집에 속하게 된다.

결국 new/SLG를 기준으로 mvp를 구하면

최종 예측도는 67.57%이다.

 

5)코드

Analysis3.ipynb - Colaboratory (google.com)

 

Analysis3.ipynb

Colaboratory notebook

colab.research.google.com


<3. 11연승, 구단 역대 최고 기록>

 구단 최초 11연승이라는 대기록에 어떠한 경기적인 요인들이 영향을 미쳤을까??

출처: 두산베어스 공식 인스타그램

 7/1~7/25 간 11경기를 살펴보았다.

보통 야구 경기의 승패를 결정하는 요인은 4가지이다. (타격, 투수, 수비, 상황)

그리고 이를 활용해 승리 요인을 분석하는 것을WFA(Wins-Factor Analysis)라고 한다.

 

먼저, 객관적인 전력으로 설명 가능한 것이전력요인, 그 외의 것이상황요인이다.

전력 요인에는득점요인실점요인이 있다.

득점요인은 주로타격요인으로, 실점요인은 주로투수요인수비요인으로 설명된다.

(*득점요인에는 주루요인도 존재하지만, 미치는 영향이 크지 않아 제외하고 타격요인으로만 설명한다.)

 

결론적으로 WFA는 상황요인+득점요인+투수요인+수비요인이다.

 

1) 데이터 수집

데이터가 좀 복잡해서 엑셀로 분석했다.

(*경기 취소로 생긴 결측치 처리는 평균으로)

 

2) 전력요인

경기수*(득점^2/(득점^2+실점^2))-0.500*경기수

=4.24

 

3) 상황요인

경기수*(승수/(승수+패수))-0.500*경기수-[전력요인승리]

=1.26

 

4) 득점요인(공격)

(*리그 평균 팀실점은 49.85)

(*리그 평균 팀득점은 49.14)

공격기여기대승수 0.622396 투수/수비기여기대승수 0.820297 Off_win -4.8776 Def_win -4.6797

 

++투수/수비 요인도 구해보고 싶었으나 계산에 필요한 몇몇 복잡한 스탯들의 기록이 제공되어있지 않았다.

 


*WPA 내용 참고

[승패]를 결정하는 4가지 요인: 타격,투수,수비,상황 - WFA(Win-Factor Analysis) (baseball-in-play.com)

 

[승패]를 결정하는 4가지 요인: 타격,투수,수비,상황 - WFA(Win-Factor Analysis)

올 시즌 KBO리그는 6월22일 기준 672경기를 치뤘고 이는 전체 경기 중 47%에 해당합니다. 이 시점에서 7위 SK는 32승32패1무로 정확히 5할 승률을 맞추고 있고 1위 NC와는 로 정확히 SK는 6경기 뒤져 있습

baseball-in-play.com


CONCLUSION

응원하는 팀의 경기를 분석하는 것은 역시 큰 흥미를 주는 것 같다.
분석 결과가 좀 더 유의미한 주제들에 대해 더 생각해봐야겠다.
그리고 이번 한국시리즈를 보면서 최종 우승팀인 LG의 경기 역시 분석해보고 싶었기에, 꼭 시도해봐야겠다.
내년 더 나은 모습의 두산베어스를 기대하며!!

 
(*개인적인 취미로 한 분석이기 때문에 부정확하거나 오류인 부분들이 존재할 수 있음)
 

관련글 더보기

댓글 영역