SlideShare a Scribd company logo
1 of 24
Download to read offline
2019년 KBO
외국인 투수 스카우팅 대회
Statcast 데이터 중심의 구종 개수와
아웃 확률에 기반한 투수 평가
안성진(TNT)
진행 순서
• 접근 방법
• 해결 과정
• 코드 설명
• 대회 목적: 2018년까지 KBO에서 활약한 외국인 투수의 데이터를 바
탕으로, 2019년 새로 들어온 외국인 투수 중 2명 스카우트
접근 방법
• 대회 목적: 2018년까지 KBO에서 활약한 외국인 투수의 데이터를 바
탕으로, 2019년 새로 들어온 외국인 투수 중 2명 스카우트
• 해결 방법:
접근 방법
KBO에서 좋은
활약을 보인
그룹 선정
(Elite 그룹)
해당 그룹의
MLB에서의
특성 확인
19년도 투수 중
비슷한 특성을
지니고 있는
투수 스카우트
해결 과정 1 – 타겟 그룹 선정
KBO: 62명 MLB: 60명
Statcast: 60명
Target 그룹:
57명 마리몬,
벤덴헐크,
브리검
벨레스터
리즈,
카스티요
해결 과정 2 – 평가 시점 선정
…
해결 방법: KBO에서 좋은 활약을 보인 선수들의 MLB에서의 특성을 확인하고,
해당 특성과 비슷한 특성을 보이고 있는 19년 외국인 투수 스카우트
KBO에서의
첫번째 시즌?
KBO에서의
두번째 시즌?
KBO에서의
n번째 시즌?
해결 과정 2 – 평가 시점 선정
…
해결 방법: KBO에서 좋은 활약을 보인 선수들의 MLB에서의 특성을 확인하고,
해당 특성과 비슷한 특성을 보이고 있는 19년 외국인 투수 스카우트
KBO에서의
첫번째 시즌?
KBO에서의
두번째 시즌?
KBO에서의
n번째 시즌?
해결 과정 3 – “좋은 활약” 정의
해결 방법: KBO에서 좋은 활약을 보인 선수들의 MLB에서의 특성을 확인하고,
해당 특성과 비슷한 특성을 보이고 있는 19년 외국인 투수 스카우트
투수 A 투수 B
ERA: 2.45 ERA: 2.00
해결 과정 3 – “좋은 활약” 정의
해결 방법: KBO에서 좋은 활약을 보인 선수들의 MLB에서의 특성을 확인하고,
해당 특성과 비슷한 특성을 보이고 있는 19년 외국인 투수 스카우트
투수 A 투수 B
ERA: 2.45
TBF: 100
ERA: 2.00
TBF: 20
해결 과정 3 – “좋은 활약” 정의
Elite 그룹
해결 과정 4 – MLB에서의 특성 확인
HR? BB?
ERA? H?
해결 과정 4 – MLB에서의 특성 확인
HR? BB?
ERA? H?
구종의 개수
가설: MLB에서 많은 구종을 구사할 수록, KBO에서의 ERA가 낮을 것이다
해결 과정 5 – 19년 외국인 투수 스카우트
4개
3개
2개
4개
4개
4개
0.723
0.652
0.614
구종 개수 구종 개수 아웃 확률
내림차순
정렬
아웃 확률이란?
X ~ NB(k, p)X ~ B(n, p)
n: 시행 횟수
p: 해당 사건이 발생할 확률
X: n번의 시행 횟수 내에서,
해당 사건이 발생한 한 건수
동전 던지기에서
20번 동전을 던졌을 때 나온 앞면의 수
= X ~ B(20, 0.5) (0 ≤ X ≤ 20)
동전 던지기에서
20번의 앞면이 나오기 위해서 동전을
던진 횟수
= X ~ NB(20, 0.5) (20 ≤ X)
이항분포 음이항분포
k: 성공 횟수
p: 해당 사건이 발생할 확률
X: 해당 사건이 k번 발생하기 까지
시행한 횟수
아웃 확률이란?
X ~ NB(3, p)
X: 3번의 아웃이 성공하기
위해 상대한 타자의 수
x = 3
x = 4
x = 5
x = 6
2명 아웃 1명 아웃
p: 주어진 데이터를 통해 추정
“Modeling Pitcher Performance and the Distribution of Runs per Inning in Major
League Baseball”(1996)
출처:
아웃 확률이란?
해결 과정 총 정리
Target
그룹
선정
KBO
1st 시즌
성적 확인
Elite
그룹
선정
MLB
구종
vs
ERA
가설
+
아웃 확률
1 2 3 4 5
KBO 첫 번째
시즌에서
‘좋은 활약’을 보인
투수 선정
(엘리트 투수)
MLB 구종
증가할수록
KBO 첫 번째
시즌 ERA 감소
(인사이트 확인)
데이터
기반
인사이트
형성
2011~2018년 데이터로 학습 2019년 데이터에 적용
인사이트
+
아웃 확률
1 2 3 4
별첨 #1
별첨 #2 코드 설명 – dplyr::group_by()
니퍼트
니퍼트
니퍼트
레일리
레일리
니퍼트
니퍼트
니퍼트
레일리
레일리
2011
2012
2013
2015
2016
2011
2012
2013
2015
2016
min(year) -> 2011 min(year) -> 니퍼트: 2011
레일리: 2015
group_by()
적용
별첨 #3 코드 설명 – 스트라이크 존
별첨 #4 코드 설명 – fun_inningResults()
events: 해당 타석의 결과
타석(타자) 별로 오직 한 개의 값
PseudoCode:
1. 데이터셋 아래에서 부터 위로 순회
1-1. row 방문 할 때마다 batterCount 증가
1-2. out을 만나면 out stack에서 pop
1-3. out stack이 empty면 inningCount증가
I_N 기록
batterCount를 batterCountTemp에 기록
out stack 초기화 (full 상태)
2. 순회가 끝나고 out stack이 비어 있지 않다면 out
stack에 남아 있는 out 개수만큼 batterCount를 증가
시키고 I_N 기록
3. I_N 리스트의 정보를 한줄로 표현하여 반환
out
out
out
out
run
run batterCount = 6
batterCountTemp = 3
out stack = 2
6-3+2 = 5명
중도교체
I_3
I_5
batterCount – batterCountTemp + out stack
I_3&2 I_4&0 I_5&0 I_6&2 I_7&0 I_8&1 I_9&0
PseudoCode:
1. “ “ 기준으로 분리
2. “&” 기준으로 분리
3. 행렬로 변환
4. 결과물 반환
I_3 I_4 I_5 I_6 I_7 I_8 I_9
na na na na na na na
I_3 2
I_4 0
I_5 0
I_6 2
I_7 0
I_8 1
I_9 0
I_3 I_4 I_5 I_6 I_7 I_8 I_9
2 0 0 2 0 1 0
별첨 #5 코드 설명 – fun_makeInningDataset()

More Related Content

More from DACON AI 데이콘

K-Fashion 경진대회 2등 수상자 솔루션
K-Fashion 경진대회 2등 수상자 솔루션K-Fashion 경진대회 2등 수상자 솔루션
K-Fashion 경진대회 2등 수상자 솔루션DACON AI 데이콘
 
K-Fashion 경진대회 3등 수상자 솔루션
K-Fashion 경진대회 3등 수상자 솔루션K-Fashion 경진대회 3등 수상자 솔루션
K-Fashion 경진대회 3등 수상자 솔루션DACON AI 데이콘
 
아리랑 위성영상 AI 객체 검출 경진대회 2등 수상자 솔루션
아리랑 위성영상 AI 객체 검출 경진대회 2등 수상자 솔루션아리랑 위성영상 AI 객체 검출 경진대회 2등 수상자 솔루션
아리랑 위성영상 AI 객체 검출 경진대회 2등 수상자 솔루션DACON AI 데이콘
 
아리랑 위성영상 AI 객체 검출 경진대회 1등 수상자 솔루션
아리랑 위성영상 AI 객체 검출 경진대회 1등 수상자 솔루션아리랑 위성영상 AI 객체 검출 경진대회 1등 수상자 솔루션
아리랑 위성영상 AI 객체 검출 경진대회 1등 수상자 솔루션DACON AI 데이콘
 
진동데이터 활용 충돌체 탐지 AI 경진대회 2등
진동데이터 활용 충돌체 탐지 AI 경진대회 2등진동데이터 활용 충돌체 탐지 AI 경진대회 2등
진동데이터 활용 충돌체 탐지 AI 경진대회 2등DACON AI 데이콘
 
진동데이터 활용 충돌체 탐지 AI 경진대회 1등
진동데이터 활용 충돌체 탐지 AI 경진대회 1등진동데이터 활용 충돌체 탐지 AI 경진대회 1등
진동데이터 활용 충돌체 탐지 AI 경진대회 1등DACON AI 데이콘
 
포스트 코로나 데이터 시각화 경진대회 - 대상
포스트 코로나 데이터 시각화 경진대회 - 대상포스트 코로나 데이터 시각화 경진대회 - 대상
포스트 코로나 데이터 시각화 경진대회 - 대상DACON AI 데이콘
 
포스트 코로나 데이터 시각화 경진대회 - 최우수상
포스트 코로나 데이터 시각화 경진대회 - 최우수상포스트 코로나 데이터 시각화 경진대회 - 최우수상
포스트 코로나 데이터 시각화 경진대회 - 최우수상DACON AI 데이콘
 
포스트 코로나 데이터 시각화 경진대회 - 우수상
포스트 코로나 데이터 시각화 경진대회 - 우수상포스트 코로나 데이터 시각화 경진대회 - 우수상
포스트 코로나 데이터 시각화 경진대회 - 우수상DACON AI 데이콘
 
포스트 코로나 데이터 시각화 경진대회 - 장려상2
포스트 코로나 데이터 시각화 경진대회 - 장려상2포스트 코로나 데이터 시각화 경진대회 - 장려상2
포스트 코로나 데이터 시각화 경진대회 - 장려상2DACON AI 데이콘
 
포스트 코로나 데이터 시각화 경진대회 - 장려상
포스트 코로나 데이터 시각화 경진대회 - 장려상포스트 코로나 데이터 시각화 경진대회 - 장려상
포스트 코로나 데이터 시각화 경진대회 - 장려상DACON AI 데이콘
 
생체 광학 데이터 분석 AI 경진대회 10위 수상작
생체 광학 데이터 분석 AI 경진대회 10위 수상작생체 광학 데이터 분석 AI 경진대회 10위 수상작
생체 광학 데이터 분석 AI 경진대회 10위 수상작DACON AI 데이콘
 
생체 광학 데이터 분석 AI 경진대회 9위 수상작
생체 광학 데이터 분석 AI 경진대회 9위 수상작생체 광학 데이터 분석 AI 경진대회 9위 수상작
생체 광학 데이터 분석 AI 경진대회 9위 수상작DACON AI 데이콘
 
생체 광학 데이터 분석 AI 경진대회 8위 수상작
생체 광학 데이터 분석 AI 경진대회 8위 수상작생체 광학 데이터 분석 AI 경진대회 8위 수상작
생체 광학 데이터 분석 AI 경진대회 8위 수상작DACON AI 데이콘
 
생체 광학 데이터 분석 AI 경진대회 7위 수상작
생체 광학 데이터 분석 AI 경진대회 7위 수상작생체 광학 데이터 분석 AI 경진대회 7위 수상작
생체 광학 데이터 분석 AI 경진대회 7위 수상작DACON AI 데이콘
 
생체 광학 데이터 분석 AI 경진대회 6위 수상작
생체 광학 데이터 분석 AI 경진대회 6위 수상작생체 광학 데이터 분석 AI 경진대회 6위 수상작
생체 광학 데이터 분석 AI 경진대회 6위 수상작DACON AI 데이콘
 
생체 광학 데이터 분석 AI 경진대회 5위 수상작
생체 광학 데이터 분석 AI 경진대회 5위 수상작생체 광학 데이터 분석 AI 경진대회 5위 수상작
생체 광학 데이터 분석 AI 경진대회 5위 수상작DACON AI 데이콘
 
생체 광학 데이터 분석 AI 경진대회 4위 수상작
생체 광학 데이터 분석 AI 경진대회 4위 수상작생체 광학 데이터 분석 AI 경진대회 4위 수상작
생체 광학 데이터 분석 AI 경진대회 4위 수상작DACON AI 데이콘
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작DACON AI 데이콘
 

More from DACON AI 데이콘 (20)

K-Fashion 경진대회 2등 수상자 솔루션
K-Fashion 경진대회 2등 수상자 솔루션K-Fashion 경진대회 2등 수상자 솔루션
K-Fashion 경진대회 2등 수상자 솔루션
 
K-Fashion 경진대회 3등 수상자 솔루션
K-Fashion 경진대회 3등 수상자 솔루션K-Fashion 경진대회 3등 수상자 솔루션
K-Fashion 경진대회 3등 수상자 솔루션
 
아리랑 위성영상 AI 객체 검출 경진대회 2등 수상자 솔루션
아리랑 위성영상 AI 객체 검출 경진대회 2등 수상자 솔루션아리랑 위성영상 AI 객체 검출 경진대회 2등 수상자 솔루션
아리랑 위성영상 AI 객체 검출 경진대회 2등 수상자 솔루션
 
아리랑 위성영상 AI 객체 검출 경진대회 1등 수상자 솔루션
아리랑 위성영상 AI 객체 검출 경진대회 1등 수상자 솔루션아리랑 위성영상 AI 객체 검출 경진대회 1등 수상자 솔루션
아리랑 위성영상 AI 객체 검출 경진대회 1등 수상자 솔루션
 
진동데이터 활용 충돌체 탐지 AI 경진대회 2등
진동데이터 활용 충돌체 탐지 AI 경진대회 2등진동데이터 활용 충돌체 탐지 AI 경진대회 2등
진동데이터 활용 충돌체 탐지 AI 경진대회 2등
 
진동데이터 활용 충돌체 탐지 AI 경진대회 1등
진동데이터 활용 충돌체 탐지 AI 경진대회 1등진동데이터 활용 충돌체 탐지 AI 경진대회 1등
진동데이터 활용 충돌체 탐지 AI 경진대회 1등
 
20200923
2020092320200923
20200923
 
포스트 코로나 데이터 시각화 경진대회 - 대상
포스트 코로나 데이터 시각화 경진대회 - 대상포스트 코로나 데이터 시각화 경진대회 - 대상
포스트 코로나 데이터 시각화 경진대회 - 대상
 
포스트 코로나 데이터 시각화 경진대회 - 최우수상
포스트 코로나 데이터 시각화 경진대회 - 최우수상포스트 코로나 데이터 시각화 경진대회 - 최우수상
포스트 코로나 데이터 시각화 경진대회 - 최우수상
 
포스트 코로나 데이터 시각화 경진대회 - 우수상
포스트 코로나 데이터 시각화 경진대회 - 우수상포스트 코로나 데이터 시각화 경진대회 - 우수상
포스트 코로나 데이터 시각화 경진대회 - 우수상
 
포스트 코로나 데이터 시각화 경진대회 - 장려상2
포스트 코로나 데이터 시각화 경진대회 - 장려상2포스트 코로나 데이터 시각화 경진대회 - 장려상2
포스트 코로나 데이터 시각화 경진대회 - 장려상2
 
포스트 코로나 데이터 시각화 경진대회 - 장려상
포스트 코로나 데이터 시각화 경진대회 - 장려상포스트 코로나 데이터 시각화 경진대회 - 장려상
포스트 코로나 데이터 시각화 경진대회 - 장려상
 
생체 광학 데이터 분석 AI 경진대회 10위 수상작
생체 광학 데이터 분석 AI 경진대회 10위 수상작생체 광학 데이터 분석 AI 경진대회 10위 수상작
생체 광학 데이터 분석 AI 경진대회 10위 수상작
 
생체 광학 데이터 분석 AI 경진대회 9위 수상작
생체 광학 데이터 분석 AI 경진대회 9위 수상작생체 광학 데이터 분석 AI 경진대회 9위 수상작
생체 광학 데이터 분석 AI 경진대회 9위 수상작
 
생체 광학 데이터 분석 AI 경진대회 8위 수상작
생체 광학 데이터 분석 AI 경진대회 8위 수상작생체 광학 데이터 분석 AI 경진대회 8위 수상작
생체 광학 데이터 분석 AI 경진대회 8위 수상작
 
생체 광학 데이터 분석 AI 경진대회 7위 수상작
생체 광학 데이터 분석 AI 경진대회 7위 수상작생체 광학 데이터 분석 AI 경진대회 7위 수상작
생체 광학 데이터 분석 AI 경진대회 7위 수상작
 
생체 광학 데이터 분석 AI 경진대회 6위 수상작
생체 광학 데이터 분석 AI 경진대회 6위 수상작생체 광학 데이터 분석 AI 경진대회 6위 수상작
생체 광학 데이터 분석 AI 경진대회 6위 수상작
 
생체 광학 데이터 분석 AI 경진대회 5위 수상작
생체 광학 데이터 분석 AI 경진대회 5위 수상작생체 광학 데이터 분석 AI 경진대회 5위 수상작
생체 광학 데이터 분석 AI 경진대회 5위 수상작
 
생체 광학 데이터 분석 AI 경진대회 4위 수상작
생체 광학 데이터 분석 AI 경진대회 4위 수상작생체 광학 데이터 분석 AI 경진대회 4위 수상작
생체 광학 데이터 분석 AI 경진대회 4위 수상작
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작
 

KBO 외국인 투수 스카우팅 대회 1등 수상작

  • 1. 2019년 KBO 외국인 투수 스카우팅 대회 Statcast 데이터 중심의 구종 개수와 아웃 확률에 기반한 투수 평가 안성진(TNT)
  • 2. 진행 순서 • 접근 방법 • 해결 과정 • 코드 설명
  • 3. • 대회 목적: 2018년까지 KBO에서 활약한 외국인 투수의 데이터를 바 탕으로, 2019년 새로 들어온 외국인 투수 중 2명 스카우트 접근 방법
  • 4. • 대회 목적: 2018년까지 KBO에서 활약한 외국인 투수의 데이터를 바 탕으로, 2019년 새로 들어온 외국인 투수 중 2명 스카우트 • 해결 방법: 접근 방법 KBO에서 좋은 활약을 보인 그룹 선정 (Elite 그룹) 해당 그룹의 MLB에서의 특성 확인 19년도 투수 중 비슷한 특성을 지니고 있는 투수 스카우트
  • 5. 해결 과정 1 – 타겟 그룹 선정 KBO: 62명 MLB: 60명 Statcast: 60명 Target 그룹: 57명 마리몬, 벤덴헐크, 브리검 벨레스터 리즈, 카스티요
  • 6. 해결 과정 2 – 평가 시점 선정 … 해결 방법: KBO에서 좋은 활약을 보인 선수들의 MLB에서의 특성을 확인하고, 해당 특성과 비슷한 특성을 보이고 있는 19년 외국인 투수 스카우트 KBO에서의 첫번째 시즌? KBO에서의 두번째 시즌? KBO에서의 n번째 시즌?
  • 7. 해결 과정 2 – 평가 시점 선정 … 해결 방법: KBO에서 좋은 활약을 보인 선수들의 MLB에서의 특성을 확인하고, 해당 특성과 비슷한 특성을 보이고 있는 19년 외국인 투수 스카우트 KBO에서의 첫번째 시즌? KBO에서의 두번째 시즌? KBO에서의 n번째 시즌?
  • 8. 해결 과정 3 – “좋은 활약” 정의 해결 방법: KBO에서 좋은 활약을 보인 선수들의 MLB에서의 특성을 확인하고, 해당 특성과 비슷한 특성을 보이고 있는 19년 외국인 투수 스카우트 투수 A 투수 B ERA: 2.45 ERA: 2.00
  • 9. 해결 과정 3 – “좋은 활약” 정의 해결 방법: KBO에서 좋은 활약을 보인 선수들의 MLB에서의 특성을 확인하고, 해당 특성과 비슷한 특성을 보이고 있는 19년 외국인 투수 스카우트 투수 A 투수 B ERA: 2.45 TBF: 100 ERA: 2.00 TBF: 20
  • 10. 해결 과정 3 – “좋은 활약” 정의 Elite 그룹
  • 11. 해결 과정 4 – MLB에서의 특성 확인 HR? BB? ERA? H?
  • 12. 해결 과정 4 – MLB에서의 특성 확인 HR? BB? ERA? H? 구종의 개수 가설: MLB에서 많은 구종을 구사할 수록, KBO에서의 ERA가 낮을 것이다
  • 13. 해결 과정 5 – 19년 외국인 투수 스카우트 4개 3개 2개 4개 4개 4개 0.723 0.652 0.614 구종 개수 구종 개수 아웃 확률 내림차순 정렬
  • 14. 아웃 확률이란? X ~ NB(k, p)X ~ B(n, p) n: 시행 횟수 p: 해당 사건이 발생할 확률 X: n번의 시행 횟수 내에서, 해당 사건이 발생한 한 건수 동전 던지기에서 20번 동전을 던졌을 때 나온 앞면의 수 = X ~ B(20, 0.5) (0 ≤ X ≤ 20) 동전 던지기에서 20번의 앞면이 나오기 위해서 동전을 던진 횟수 = X ~ NB(20, 0.5) (20 ≤ X) 이항분포 음이항분포 k: 성공 횟수 p: 해당 사건이 발생할 확률 X: 해당 사건이 k번 발생하기 까지 시행한 횟수
  • 15. 아웃 확률이란? X ~ NB(3, p) X: 3번의 아웃이 성공하기 위해 상대한 타자의 수 x = 3 x = 4 x = 5 x = 6 2명 아웃 1명 아웃 p: 주어진 데이터를 통해 추정
  • 16. “Modeling Pitcher Performance and the Distribution of Runs per Inning in Major League Baseball”(1996) 출처: 아웃 확률이란?
  • 17. 해결 과정 총 정리 Target 그룹 선정 KBO 1st 시즌 성적 확인 Elite 그룹 선정 MLB 구종 vs ERA 가설 + 아웃 확률 1 2 3 4 5
  • 18. KBO 첫 번째 시즌에서 ‘좋은 활약’을 보인 투수 선정 (엘리트 투수) MLB 구종 증가할수록 KBO 첫 번째 시즌 ERA 감소 (인사이트 확인) 데이터 기반 인사이트 형성 2011~2018년 데이터로 학습 2019년 데이터에 적용 인사이트 + 아웃 확률 1 2 3 4 별첨 #1
  • 19. 별첨 #2 코드 설명 – dplyr::group_by() 니퍼트 니퍼트 니퍼트 레일리 레일리 니퍼트 니퍼트 니퍼트 레일리 레일리 2011 2012 2013 2015 2016 2011 2012 2013 2015 2016 min(year) -> 2011 min(year) -> 니퍼트: 2011 레일리: 2015 group_by() 적용
  • 20. 별첨 #3 코드 설명 – 스트라이크 존
  • 21. 별첨 #4 코드 설명 – fun_inningResults() events: 해당 타석의 결과 타석(타자) 별로 오직 한 개의 값
  • 22. PseudoCode: 1. 데이터셋 아래에서 부터 위로 순회 1-1. row 방문 할 때마다 batterCount 증가 1-2. out을 만나면 out stack에서 pop 1-3. out stack이 empty면 inningCount증가 I_N 기록 batterCount를 batterCountTemp에 기록 out stack 초기화 (full 상태) 2. 순회가 끝나고 out stack이 비어 있지 않다면 out stack에 남아 있는 out 개수만큼 batterCount를 증가 시키고 I_N 기록 3. I_N 리스트의 정보를 한줄로 표현하여 반환
  • 23. out out out out run run batterCount = 6 batterCountTemp = 3 out stack = 2 6-3+2 = 5명 중도교체 I_3 I_5 batterCount – batterCountTemp + out stack
  • 24. I_3&2 I_4&0 I_5&0 I_6&2 I_7&0 I_8&1 I_9&0 PseudoCode: 1. “ “ 기준으로 분리 2. “&” 기준으로 분리 3. 행렬로 변환 4. 결과물 반환 I_3 I_4 I_5 I_6 I_7 I_8 I_9 na na na na na na na I_3 2 I_4 0 I_5 0 I_6 2 I_7 0 I_8 1 I_9 0 I_3 I_4 I_5 I_6 I_7 I_8 I_9 2 0 0 2 0 1 0 별첨 #5 코드 설명 – fun_makeInningDataset()