2020 빅콘테스트 데이터분석 KBO 퓨처스리그 승률 예측 프로젝트

Date:     Updated:

카테고리:

태그:

2020 KBO 퓨처스리그 예측 모델 개발

시계열 분석을 이용한 팀별 승률, 타율 및 방어율 예측 (with ARIMA)

2020 빅콘테스트 데이터분석분야 KBO 퓨처스리그 NOVUS팀 분석 프로젝트입니다.
2020.09 ~ 2020.10, 약 2달간 프로젝트를 진행했습니다.

프로젝트 코드 보관소

참가 팀원

구경민, 고건우, 김차헌

  • 산업공학, 통계학, 정치외교학 학부 출신
  • 프로그래밍 언어, 회귀분석, 시계열에 관심 및 일정 수준의 이해에 기반하여 분석 진행
  • 데이터 분석 및 AI 동아리를 구성하여 학습 및 프로젝트 경험을 위해 출전

OVERVIEW

슬라이드1

분석 주안점

  • 객관적인 분석 (각 구단들의 축적된 정형 데이터만을 활용)
  • 구단 속성의 변화 (스토브리그와 구단 환경 변화로 발생한 데이터 활용)
  • 시계열 데이터 (매해 발생한 시계열 데이터 수집 및 ARIMA 모델 활용)

분석 프로세스 요약

슬라이드7 슬라이드8

데이터 전처리

  1. 이상치 / 결측값 파악
  • 시즌 및 시트별 투수[ER(자책점), WLS(승률) 칼럼]과 타자[HIT(안타수), AB(타수) 칼럼] 추출
  • is.null & boxplot을 이용하여 결측치 및 이상치를 확인
  1. 변수간의 관계 파악 / 파생변수 생성
  • 승률 = WLS 칼럼 추출 후 팀별 그룹화, 문자열형을 숫자열형으로 치환 이후 이동평균을 구함
  • 타율 = AB, HIT 칼럼 추출 후 팁별 그룹화, (AB / HIT)로 계산하여 타율 변수 생성 이후 이동평균 구함
  • 평균 자책점 = ER 칼럼 추출 후 팀별 그룹화 이후 이동평균 구함

모델링

  1. ARIMA 모델

슬라이드17

  1. 모델 적용
  • R tseries 패키지 auto.arima 이용하여 ARIMA 차수 산출
  • ARIMA 차수 (0,1,0)가 나온다면 정상성을 유지하기 위해 모델을 조정하여 가장 aic값이 작은 차수를 구하여 재적용

image

  • 산출된 ARIMA 차수를 python ARIMA 모델에 투입하여 최종 예측값 출력 및 시각화

image

  1. 모델 검증
  • 모델로 출력한 예측값과 검증 데이터와 비교했을 때 예측 결과가 실제값과 다르다는 것을 인지

image

  1. 모델 보완
  • 적은 데이터의 한계를 해결하기 위해 20 시즌 추가 데이터를 추가.
  • 기존 ARIMA 차수의 비정상성을 제거하기 위한 차분 작업 세밀화

image

  1. 분석 결과

슬라이드22

  1. 사후 평가

슬라이드23

사용 언어 및 라이브러리/모듈

R dplyr: 전처리를 위해 사용함. pracma: 수치데이터 전처리를 위해 사용함. forecast: 시계열 데이터 예측을 하기 위해 사용함.
TTR: 시계열 데이터 분석을 위해 사용함.
Tseries: 시계열 데이터 분석을 위해 사용함.

Python pandas: 데이터 프레임을 인식하고 전처리를 위해 사용함.
numpy: 누락값을 읽기 위해 사용함.
statsmodels: ARIMA모델을 사용하기 위해 사용함.
matplot: 시각화를 위해 사용함.

레퍼런스

  • “자기회귀이동평균(ARIMA) 모형”, 2020. 09.26 접속, Soft carpentry, https://statkclee.github.io/statistics/stat-time-series-arma.html
  • “ARIMA 총정리”, Challenge의 네이버 블로그, 2020.09.19 접속, 출처 https://blog.naver.com/nywoo19/221600142327
  • “KBO리그 기록 및 순위" NAVER SPORTS 야구 기록/순위, https://sports.news.naver.com/kbaseball/record/index.nhn?category=kbo
  • 제출자료 폰트: 나눔스퀘어, 네이버 한글한글 아름답게

Project 카테고리 내 다른 글 보러가기

댓글 남기기