38
축축축축 축축축축 축축축 축축 축축축축축축 축축축축 축축축 축축축축 축축 축축축축 By 축축축 축축

2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Embed Size (px)

Citation preview

Page 1: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

축구계의 머니볼을 꿈꾸다

영국 프리미어리그 데이터를 활용한경기결과 예측 프로젝트

By 와일드 카드

Page 2: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

목 차

01 프로젝트 개요Chapter

02데이터 개요 및 SEMMA 프로세스Chapter

03 기대 효과 및 향후 목표Chapter

Page 3: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Chapter. 1

프로젝트 목표 수행 과제 및 프로젝트 일정 상황 분석

Page 4: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

프로젝트 배경

1) 축구 산업의 중요성 ( 및 경제 효과 )

2015 년 1750 원 환율 기준 , 2014/2015 시즌 기준

• EPL 이 영국정부에 낸 세금 £ 2.4 bn, 영국 GDP 에 £ 3.4 bn 기여 ( 약 5 조 9500억원 ) • EPL 경기로 인해 영국 내 10 만 3354 개의 일자리 창출

Page 5: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

프로젝트 배경

2) 기존 서비스 현황

• 시즌 별 , 경기 별 정보가 분리되어 있어 통합된 정보 및 시각화 자료의 부족• 데이터를 기반으로 한 예측 서비스의 부족

출처 : 축구 정보 제공 어플리케이션 , Forza

출처 : :www.premierleague.com

Page 6: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

프로젝트 배경

3) 활용방안 및 기대효과

데이터 마이닝을 활용하여 축구 산업 및 유관 산업의 활성화

머니볼 프로젝트“ ”축구 감독 및 선수 축구 팬 축구 전문 웹 사이트

• 통합적인 데이터를 기반으로 축구 경기를 예측하는 즐거움을 선사

• 축구 전문 웹 사이트에 서비스 제공으로 유관산업의 활성화를 기대

• 실제 구단에게 필요한 전력 분석 서비스로 발전 가능

• 데이터를 기반한 자료를 활용하여 작전 수립 , 훈련 계획을 수립

• 단순한 정보 조회를 넘어 승부를 예측하는 서비스 경험

Page 7: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

프로젝트 목표

인기 스포츠 중 하나인 축구에 빅데이터 분석 기법을 적용하여 과거 경기 데이터에 대한 분석 및 예측 서비스를 제공하는 웹 어플리케이션 개발 및 예측 모델 구축

• 축구 데이터를 통합하고 분석한 결과를 시각적으로 제공

2008~2016 년 EPL 경기 및 선수 정보

Data• 빅데이터 분석 기법을 사용하여 예측 모델을 구축하고 결과를 예측

• 축구 사업 발전을 위한 대안 제시 및 한국 상황에 적용

1 차 프로젝트 : 선수 , 팀별 능력치 비교 / 시각화

2 차 프로젝트 : 승부 예측( 승 / 무 / 패 )

다양한 분석 알고리즘을 활용하여 경기에 영향을 미치는 변수를 파악하여 경기결과 예측 이를 통하여 축구 관계자 및 축구 팬에게 유의미한 축구 정보를 제공하고 축구산업의 발전 도모

Page 8: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

단계별 수행 과제 및 일정

10/04 ~ 10/18 10/18 ~ 10/21 10/22 ~ 10/23 10/24

데이터 획득

데이터 탐색 및 전처리

모델링모델 개선 및

평가

최종 점검 및테스트

Page 9: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Chapter. 2

데이터 개요 및 변수 설명 Sampling Exploring Modify Modeling Assessment

Page 10: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

데이터 개요 및 변수 설명

데이터 셋

유럽 축구 리그 경기 기록 , 선수 정보 등을 나타내는 정형 Data Set

2008 9 월 ~ 2016 4 월

390MB

16 개 테이블

유럽 11 개국의 축구 리그 데이터

Country

League

Match Match Result

Season Rank Goal Cross Corner

Player Player Stats

Team Possesion Card ShotOn

ShotOff

Foul Commit

RAW DATA

데이터 셋 개요

Page 11: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

데이터 개요 및 변수 설명

경기의 승 , 무 , 패를 예측하는 것이 분석의 목적이므로 각 경기의 스코어 결과를 “win”, “draw”, “lose” 삼항 형식으로 종속변수를 변환

win37%

draw26%

lose37%

<Target><HOME_TEAM_GOAL & AWAY_TEAM_GOAL>

타겟 변수 정의

Page 12: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

데이터 개요 및 변수 설명

ERD 구성

Page 13: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Sampling

Page 14: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

SAMPLING – 데이터 통합

MATCH MATCHRESULT

SHOTON

SHOTOFF

CORNER

POSSESS

BETTING

STAT

+

GOAL_R

HONER

WIN 3|5

FOMATION

LOSE_GOAL

RECORD

FINAL

F_NOR

데이터 출처 :Kaggle Soccer databaseFootball LivescoresFootball BettingBAT365SOFIFA

Page 15: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modeling 을 위해 Data 를 Training 90%, Test 10% 로 분할

SAMPLING – 데이터 분할

Sampling Data Partitioning Data

분석용

Data100%

(nrow=59

92)

Training

Data90%

Test Data10%

Training Data 90%,Test Data 10% 로

(nrow=600)

(nrow=5392)

Page 16: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Exploring

Page 17: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Exploring - 연속형 데이터 탐색

CORNERKICK, SHOTON, SHOTOFF, PHYSICAL, PASSING, SHOTING, TECHNIC, DEFENCE 등

경기결과에 따른 CONERKICK 분포의 차이가 크지 않아 보임

CORNERKICK

경기결과에 따른 SHOTON 분포의 차이가 크지 않아 보임 SHOTON

분포함수와 Box-Plot 으로 경기결과 (REULT_NUM) 에 영향을 주는 변수 확인

Page 18: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Exploring - 연속형 데이터 탐색CORNERKICK, SHOTON , SHOTOFF, PHYSICAL, PASSING, SHOTING, TECHNIC, DEFENCE 등

P-value 가 0.05 보다 작으므로 귀무 가설 (H0: 코너킥은 승무패에 영향을 주지 않는다 .) 기각

-> 코너킥이 승무패에 영향을 준다

그래프상으로는 차이가 없지만 , 보다 정확히 확인해보기 위해서 검정 실시

ANOVA 검정 결과

Page 19: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Exploring - 범주형 데이터 탐색Team_api_id, Other_api_id, Formation 등

경기 결과에 따른 Formation 의 상위 빈도수의 차이가 크지 않아 보임Formation

경기결과 ( 승 , 무 , 패 ) 에 따른 Formation 의 빈도수 확인

Win Draw Lose

4-4-2 4-4-2 4-4-2

4-2-3-1 4-2-3-14-2-3-1

Page 20: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Exploring - 범주형 데이터 탐색Team_api_id, Other_api_id, Formation 등

P-value 가 0.05 보다 작으므로 귀무가설 (H0: 승무패와 Formation 은 독립이다 .) 기각-> 경기 결과와 Formation 은 서로 영향을 준다 .

그래프상으로는 차이가 없지만 , 보다 정확히 확인해보기 위해서 카이제곱 검정 실시

카이제곱 검정 결과

Page 21: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modify

Page 22: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modify – 결측치 처리

경기 기록 , 배당률 등에서 약간의 결측치가 발생하였으며 보다 정확한 분석을 위해 데이터를 제공한 해당 사이트에 직접 방문하여 결측치를 처리하였음

해당 경기를 찾아결측치 처리

Page 23: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modify – 변수 전처리

HEADING_ACCURACY

DRIBBLING

BALL_CONTROL

AGGRESSION

POSITIONING

VISION

INTERCEPTIONS

MARKING

STANDING_TACKLE

SLIDING_TACKLE

FINISHING

VOLLEYS

CURVE

FREE_KICK_ACCURACY

SHOT_POWER

LONG_SHOTS

CROSSING

SHORT_PASSING

LONG_PASSING

ACCELERATION

SPRINT_SPEED

AGILITY

REACTIONS

BALANCE

JUMPING

STAMINA

STRENGTH

PHYSICAL PASSING SHOOTING TECHNIC DEFENCE

FIFA 에서 제공한 27 개의 선수 능력치 변수를 특성에 따라 5 가지로 그룹화하였으며 각각의 그룹을 평균하여 최종적으로 다음과 같은 5 가지의 선수 능력치 변수를 재생성

Page 24: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modify – 변수 생성

CORNERKICK

상대팀 별 최근 5 경기 코너킥 데이터를 평균

상대팀 별 최근 3 경기 코너킥 데이터를 평균

최근 5 경기 코너킥 데이터를 평균

코너킥 , 슈팅시도 , 유효 슈팅 , 크로스 개수 등의 경기 기록 변수들은 해당 경기가 종료되지 않으면 알 수 없으므로 미래 경기 예측을 위해 최근 경기 기록과 상대팀에 따른 경기 기록을 활용하여 새로운 변수 생성

코너킥 데이터를 활용한 새로운 변수 생성 예시

Page 25: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modify - 정규화

그래프

Normalize 함수를 활용해 데이터를 정규화하고 모델링을 위한 최종 테이블 구축하여 분석의 타당성을 높임

정규화 전 정규화 후

Page 26: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modify – 마스터 테이블 구축

열이름 열 설명 비고LAST5 골성공률 MEAN 최근 5 경기 골 성공률 평균

B365W 배팅사이트 승리 배당률  B365D 배팅사이트 무승부 배당률  B365L 배팅사이트 패배 배당률  

LAST5CORNERKICKMEAN 최근 5 경기 코너킥 개수 평균  LAST5_N 최근 5 경기 경기결과 승 =1, 패 =-1, 무 =0

RECENT_SHOT_ON 최근 5 경기 슈팅시도 1 평균  RECENT_SHOT_OFF 최근 5 경기 슈팅시도 2 평균  RECENT_SHOT_TRY 최근 5 경기 골성공률 평균  

RECENT_EACH_SHOT_ON3 최근 상대방과의 3 경기 슈팅시도 1 평균  RECENT_EACH_SHOT_ON5 최근 상대방과의 5 경기 슈팅시도 1 평균  RECENT_EACH_SHOT_OFF3 최근 상대방과의 3 경기 슈팅시도 2 평균  RECENT_EACH_SHOT_OFF5 최근 상대방과의 5 경기 슈팅시도 2 평균  RECENT_EACH_SHOT_TRY3 최근 상대방과의 3 경기 슈팅시도 평균  RECENT_EACH_SHOT_TRY5 최근 상대방과의 5 경기 슈팅시도 평균  

RECENT_EACH_GOAL3 최근 상대방과의 3 경기 골성공률 평균  RECENT_EACH_GOAL5 최근 상대방과의 5 경기 골성공률 평균  

CONOTHER3 최근 상대방과의 3 경기 코너킥 개수 평균  CONOTHER5 최근 상대방과의 5 경기 코너킥 개수 평균  POS3OTHERS 최근 상대방과의 3 경기 점유율 평균  

HONER 우승 경험  WIN_GOAL_3 최근 3 경기 득점수 전체 경기 기준

전처리의 결과로 분석에 이용할 최종 마스터 테이블 생성 (44 개 변수 / NROW = 5992)

Page 27: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

열이름 열 설명 비고WIN_GOAL_5 최근 5 경기 득점수  LOSE_GOAL_3 최근 3 경기 실점수  LOSE_GOAL_5 최근 5 경기 실점수  

WIN_2 2 연승 여부 2 일 때 연승WIN_3 3 연승 여부 3 일 때 연승

RECENT_EACH_3 상대방과의 전적 , 3 경기 기준 승 =1, 패 =-1, 무 =0RECENT_EACH_5 상대방과의 전적 , 3 경기 기준 승 =1, 패 =-1, 무 =0

PHYSICAL 선수 능력치 ( 육체적 능력 )  PASSING 선수 능력치 ( 패싱 )  SHOTING 선수능력치 ( 슈팅 )  TECHNIC 선수능력치 ( 기술 )  DEFENCE 선수능력치 ( 수비 )  

last5PHYSICALmean 최근 선수 능력치 ( 육체적 능력 )  last5PASSINGmean 최근 선수 능력치 ( 패싱 )  last5SHOTINGmean 최근 선수능력치 ( 슈팅 )  last5TECHNICmean 최근 선수능력치 ( 기술 )  last5DEFENCEmean 최근 선수능력치 ( 수비 )  

HA 홈팀 / 어웨이팀 여부 범주형 변수TEAM_API_ID 팀 ID 범주형 변수OTHER_API_ID 상대방 팀의 ID 범주형 변수RESULT_NUM 경기결과 변수 승 =1, 패 =-1, 무 =0FORMATION 포메이션 범주형 변수

Modify – 마스터 테이블 구축

Page 28: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modeling

Page 29: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modeling – 승부 예측 모델 구축 프로세스

Modeling Data 구축

데이터 탐색데이터 전처리

랜덤 포레스트

예측 모델 모

모델선택

Test Set적용

랜덤 포레스트SVM

다항 로지스틱 회귀인공신경망

Validation Data 에 적용해 오분류율이 가장 낮은

모델을 최종 모델로 선정

Test set 에 적용하여 모델의 정확도 확인

( 정분류율 )

SVM다항 로지스틱

회귀

인공신경망

10 Folds Cross Validation

Page 30: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

분산의 값이 0 에 가까운 변수를 제거

카이제곱 검정으로 독립성

여부 확인

랜덤 포레스트 모델을

사용한 변수중요도 평가

단계적 변수 선택법(Stepwise)

방법론 별로 각각의 모델에 적용

Modeling – 변수 선택

방법 1.

방법 2.

적용 결과0 에 가까운 분산값이

없으므로 제외

적용 결과상관계수의 높고 낮음의기준이 모호하므로 제외

x 와 y 의 피어슨 상관계수를 활용해

높은 변수 선택

x 와 y 가 모두 범주형 변수일때가능한 방법이므로 제외

방법 3.

변수 개수40 개 선택

방법 4.

방법 5.

변수 개수14 개 선택

Page 31: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modeling – 모델 검증 방법 소개

RESULT TEAM_API_ID OTHER_API_ID · · · · · · PHYSICAL PASSING SHOTING

Draw 10260 10261 · · · · · · 75 86 79

Draw 10261 10260 · · · · · · 85 67 65

Lose 8688 8655 · · · · · · 69 76 71···

······ · · · · · · ···

······

Win 8472 8456 · · · · · · 68 66 61

10%10%

10%

10회

TrainingData

TestData

10 Folds Cross Validation : 데이터를 다수의 조각으로 나누어 훈련과 검증을 반복하는 기법

Group 1 Group 2 Group 10

Validation

Page 32: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Modeling – 모델링 결과

변수선택 전

(y 포함 44개 )

55.9% 52.5% 51.0% 50.8%

단계적변수

선택법54.5% 53.4% 52.7% 53.0%

랜덤포레스트 모델 활용

55.8% 52.8% 51.1% 50.3%

변수 선택 이전의 랜덤 포레스트 모델을최종 모델로 선정

랜덤포레스트 SVM 로지스틱 인공신경망

55.9

52.5

51 50.8

54.5

53.4

52.753

55.8

52.8

51.1

50.3

모델별 정분류율

변수선택 이전 단계적 변수선택 랜덤포레스트 활용

Page 33: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Assessment

Page 34: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

33.3%

Assessment – 최종 모델 적용 ( 랜덤 포레스트 )

57.7%

lose draw win

lose 162 61 52 draw 10 26 12 win 50 69 158

Test 데이터 셋에 모델을 적용한 결과

정분류율이 57.7% 의예측율을 보임

< + 24.4%p

Page 35: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Assessment - 분석 과정 요약

Training (90%)Test (10%)

1 단계 : 데이터 분할

10 Folds Cross Validation&

변수 선택법 5 가지 이용

2 단계 : 모델 설계

Random Forest, SVM,

NN, Multinominal Logistic Regression

3 단계 : 모델 비교

Random Forest 선정

4 단계 : 최종 모델 선택

최종 예측57.7%

( 정분류율 )

원본 145 개의 변수

변수 선택 98 개 변수

최종 43 개 변수

Normalization

마스터 테이블 생성

승 무 패

71%

17%

73%

승 , 무 , 패 예측율

Page 36: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

Chapter. 3

Page 37: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

기대 효과

경기 결과 예측에유의미한 변수를 제공하여감독의 전술 및 전력 보강

방안으로 활용

축구 팬들에게는경기 결과를 예측해보며축구의 재미를 높이는

방안으로 활용

구단에게 구단 웹 사이트 내 경기결과 예측 기능을 추가하는 방안을 제안해

방문율을 높일 수 있도록 함

예측 서비스를 통해 감독 , 선수 , 구단 , 팬 등 축구 관계자들에게 유용한 정보 제공

Page 38: 2차프로젝트 프리미어리그 데이터를 활용한 경기결과 예측 서비스

향후 목표 – Wildcard 팀의 포부

축구 경기를 예측하는 기능을 추가한 웹 애플리케이션을 구축하고 국내 스포츠 리그에 적용 방안 모색

“ 프로젝트 목표 달성을 위한 축구 데이터 분석 , 시각화 , 예측 서비스 앱

구현”

기존 앱의 시각화 및 분석 기능 보완

실시간 예측 서비스 기능 구현

자바 라이브러리 혹은 파이썬을 사용하여 예상 선발 라인업 , 팀 선택 등의 변수를 입력 받아 실시간으로 승부를 예측해 주는 서비스 구현

“KBO, K 리그 , KBL 등의 국내 스포츠에도 적용하여 경기 결과 예측

모델 제시”

데이터 요청 제안

< 국내 스포츠 리그에 적용 >

데이터를 활용한 승부 예측 모델 구축

과거 경기 포메이션선수 별 경기 기록경기 지표 통계 분석 등

국내 스포츠 리그에 대한 관심 유도