baseball data with r (@tech ver.) 공개본

76
Baseball Data with R

Upload: -

Post on 23-Jan-2018

2.472 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Baseball data with r (@tech ver.) 공개본

Baseball Data with R

김 경 민

Page 2: Baseball data with r (@tech ver.) 공개본

Customer Clustering, Recommendation

DS 개발팀

DMP 개발자

Page 3: Baseball data with r (@tech ver.) 공개본
Page 4: Baseball data with r (@tech ver.) 공개본

야구는 기록의 스포츠

Page 5: Baseball data with r (@tech ver.) 공개본
Page 6: Baseball data with r (@tech ver.) 공개본

타율, 타점, 다승, 홈런 ...

Page 7: Baseball data with r (@tech ver.) 공개본
Page 8: Baseball data with r (@tech ver.) 공개본
Page 9: Baseball data with r (@tech ver.) 공개본

성적은 Money 순일까?

Page 10: Baseball data with r (@tech ver.) 공개본
Page 11: Baseball data with r (@tech ver.) 공개본

기록을 계속 신뢰해도 되는가?

Page 12: Baseball data with r (@tech ver.) 공개본

타율, 타점, 승수 ...

Page 13: Baseball data with r (@tech ver.) 공개본

기록이 가치를 제대로 나타내는가?

Page 14: Baseball data with r (@tech ver.) 공개본
Page 15: Baseball data with r (@tech ver.) 공개본

야구의 목적은?

Page 16: Baseball data with r (@tech ver.) 공개본

높은 타율? 많은 홈런?

Page 17: Baseball data with r (@tech ver.) 공개본
Page 18: Baseball data with r (@tech ver.) 공개본
Page 19: Baseball data with r (@tech ver.) 공개본

이기기 위해서는?

Page 20: Baseball data with r (@tech ver.) 공개본
Page 21: Baseball data with r (@tech ver.) 공개본

좋은 선수란?

Page 22: Baseball data with r (@tech ver.) 공개본

팀의 승리에 기여하는 선수

Page 23: Baseball data with r (@tech ver.) 공개본

득점을 하고 실점을 하지 않는 선수

Page 24: Baseball data with r (@tech ver.) 공개본

모든 플레이는 점수와 관련하여 평가해야 한다.

Page 25: Baseball data with r (@tech ver.) 공개본

야구는 이벤트의 집합

Page 26: Baseball data with r (@tech ver.) 공개본

득점에 도움이 되느냐

Page 27: Baseball data with r (@tech ver.) 공개본

어떻게 이벤트의 가치를 평가할 것인가?

Page 28: Baseball data with r (@tech ver.) 공개본

Before State → Event → After State

Page 29: Baseball data with r (@tech ver.) 공개본

야구에서의 상태(State)란?

Page 30: Baseball data with r (@tech ver.) 공개본

무사 만루에서 점수를 못내다니.. 이런 XX..

Page 31: Baseball data with r (@tech ver.) 공개본

State의 기대득점을 알 수 있다면?

Page 32: Baseball data with r (@tech ver.) 공개본

Event Value = After State - Before State

Page 33: Baseball data with r (@tech ver.) 공개본

상태(State)의 가치

Page 34: Baseball data with r (@tech ver.) 공개본
Page 35: Baseball data with r (@tech ver.) 공개본

득점 기대치(Run Expectancy)

Page 36: Baseball data with r (@tech ver.) 공개본

이벤트의 가치(Run Value)

Page 37: Baseball data with r (@tech ver.) 공개본

RV = After RE - Before RE

Page 38: Baseball data with r (@tech ver.) 공개본

홈런의 가치

Before : 0 아웃에 주자없는 상황 (0.555)

Event : 홈런 (+1)

After : 0 아웃에 주자없는 상황 (0.555)

홈런의 가치 = (1 + 0.555) - 0.555 = 1

Page 39: Baseball data with r (@tech ver.) 공개본

홈런의 가치

2 아웃에 주자 1,3루 상황 (0.538)

홈런 (+3)

2 아웃에 주자없는 상황 (0.117)

홈런의 가치 = (3 + 0.117) - 0.538 = 2.579

Page 40: Baseball data with r (@tech ver.) 공개본

이벤트 별 가치

이벤트 점수

홈런 1.397

안타 0.475

3루타 1.070

아웃 - 0.299

Page 41: Baseball data with r (@tech ver.) 공개본

Runs Above Replacement = (RV)(득점 기여도)

Page 42: Baseball data with r (@tech ver.) 공개본

득점과 승리 사이의 관계?

Page 43: Baseball data with r (@tech ver.) 공개본
Page 44: Baseball data with r (@tech ver.) 공개본

팀 데이터 가져오기- Data Frame은 RDB의 테이블과 비슷- 팀 데이터 : 팀의 연도별 기록 (경기수, 승리 횟수, 패배 횟수, 순위)

Page 45: Baseball data with r (@tech ver.) 공개본

필요한 데이터 추출- subset으로 조건에 맞는 데이터를 검색- ‘[ ]’를 사용하여 원하는 row와 column을 정의

Page 46: Baseball data with r (@tech ver.) 공개본

득실점 차이와 승률 구하기- $ : column에 접근- with : data에 대한 expression을 수행

Page 47: Baseball data with r (@tech ver.) 공개본

득실점 차이와 승률의 관계> plot(myteams$RD, myteams$Wpct, xlab="run differential", ylab="winning percentage")

Page 48: Baseball data with r (@tech ver.) 공개본

선형 회귀 (Linear Regression)- 경향을 설명할 수 있는 직선 그래프 얻기

Page 49: Baseball data with r (@tech ver.) 공개본

득실점 차이와 승률의 관계Wpct = 0.499992 + 0.000623 * RD (직선 그래프 함수)> abline(a=coef(linfit)[1], b=coef(linfit)[2], lwd=2)

Page 50: Baseball data with r (@tech ver.) 공개본

추정값에 대한 오차 확인

Page 51: Baseball data with r (@tech ver.) 공개본

오차 분포 확인> plot(myteams$RD, myteams$linResiduals, xlab="run differential", ylab="residual")

Page 52: Baseball data with r (@tech ver.) 공개본

평균 오차이정도 오차 수준이면 나쁘지 않은 듯

Page 53: Baseball data with r (@tech ver.) 공개본

선형회귀 결과를 정말 믿을 수 있을까가정)1년(162 경기)에득점 : 1620점실점 : 810점

득실점 차이 : 810점

0.499992 + 0.000623 * 810 = 1.004622

승률 : 100.4622 % (?!?!?)

Page 54: Baseball data with r (@tech ver.) 공개본

피타고라스 정리를 통한 추정

Page 55: Baseball data with r (@tech ver.) 공개본

피타고라스 방정식은?가정)1년(162 games)에득점 : 1620점실점 : 810점

득실점 차이 : 810점

승률 : 약 80%

Page 56: Baseball data with r (@tech ver.) 공개본

1승 = ?득점

Page 57: Baseball data with r (@tech ver.) 공개본

1승을 위해서 필요한 득점은?

Page 58: Baseball data with r (@tech ver.) 공개본

1승을 위해서 필요한 점수는?

Page 59: Baseball data with r (@tech ver.) 공개본

1점 낼때마다, 얼마나 승리에 가까워질까?

Page 60: Baseball data with r (@tech ver.) 공개본

1승을 위해 필요한 점수는?

Page 61: Baseball data with r (@tech ver.) 공개본

가정) 3점 ~ 6점 나는 경기

Page 62: Baseball data with r (@tech ver.) 공개본

1승을 위해 필요한 점수

Page 63: Baseball data with r (@tech ver.) 공개본

1승을 위해 필요한 점수

Page 64: Baseball data with r (@tech ver.) 공개본

1승 = 10득점

1년에 90승을 거두기 위해서 필요한 점수는 900점

Page 65: Baseball data with r (@tech ver.) 공개본

Runs Above Replacement = (RV)(득점 기여도)

Page 66: Baseball data with r (@tech ver.) 공개본

Wins Above Replacement = RAR / 10(승리 기여도)

Page 67: Baseball data with r (@tech ver.) 공개본

세이버메트릭스

Page 68: Baseball data with r (@tech ver.) 공개본

야구계의 데이터 사이언티스트

세이버메트리션

Page 69: Baseball data with r (@tech ver.) 공개본
Page 70: Baseball data with r (@tech ver.) 공개본

야구를

Page 71: Baseball data with r (@tech ver.) 공개본

진실을 찾아내려는 노력

Page 72: Baseball data with r (@tech ver.) 공개본
Page 73: Baseball data with r (@tech ver.) 공개본

Shin-Soo Choo Carlos Gonzalez

타율 .276 .271

홈런 22 40

타점 82 97<출처 : Fangraphs

2015년 성적

Page 74: Baseball data with r (@tech ver.) 공개본

Shin-Soo Choo Carlos Gonzalez

WAR 3.5 2.4

Value $ 28M $ 18M

Salary $ 14M $ 17M

출처 : Fangraphs

>

2015년 가치

Page 75: Baseball data with r (@tech ver.) 공개본

보이는 것이 전부가 아니다.

Page 76: Baseball data with r (@tech ver.) 공개본

Thank You