완전히 다른 접근

새로운 예측 모델의 탄생

by randahlia

폐허 위에 다시 쌓다

변환 계수가 무너지고, SwStr% 역설을 발견하고, 커브볼과 직구 스핀의 비밀까지 파헤쳤다. 조각들이 모이기 시작했다. 하지만 아직 하나의 시스템으로 통합되지 않았다. v6.0은 단순했다. "MLB 성적 × 계수 = KBO 예측". 공식 하나면 됐다. 하지만 그게 틀렸으니 완전히 다른 접근이 필요했다. 클로드와 함께 새로운 프레임워크를 설계했다. 기존의 "성적 변환"이 아니라 "프로파일 매칭"으로 방향을 틀었다. MLB에서의 성적이 아니라, MLB에서 보여준 특성들이 KBO 환경에 얼마나 맞는지를 평가하는 것이다.


v7.0 : 유사 사례 기반

첫번째 새 모델의 핵심 아이디어는 간단했다.

새 투수의 프로파일 → 과거 KBO 외인 투수 중 비슷한 프로파일 찾기 → 그들의 실제 WAR 참고

넷플릭스가 "이 영화를 좋아하셨다면 이 영화도 좋아하실 거에요" 라고 추천하는 알고리즘과 비슷하다. 비슷한 특성의 과거 사례를 찾아서 참고하는 방식인 것이다.

유사도 계산에 쓸 핵심 feature들을 정했다.

직구가 가라앉는 정도(투심성인가, 포심성인가)

전체 헛스윙율(파워피처인가, 운영능력형 투수인가)

직구의 회전수

커브볼 헛스윙률

싱커(투심) 사용비율

직구 수직무브먼트

이 6개 지표로 KNN(K-nearest Neighbors) 알고리즘 모델을 설계했다. 새 투수와 가장 비슷한 5명의 과거 투수를 찾고, 그들의 WAR 가중 평균(유사도 매칭 레이팅 기반)을 예측값으로 활용하기로 했다.

Generated Image January 10, 2026 - 10_58AM.jpeg


Leave-One-Out 교차검증 결과 :

상관계수 : r = 0.45

RMSE : 1.7

오차 1.5 이내 : 60%

나쁘지 않았다. 하지만 충분하다고는 할 수 없었다. 60%라는 것은 40%는 크게 틀릴수 밖에 없다는 뜻이기도 하기 때문이다.


스위퍼의 발견

v7.0을 검증하면서 2025시즌 데이터를 들여다 보았다. 그러다 눈에 띄는 패턴을 발견했다.

2025시즌 WAR 상위 5명(자체계산)

네일(6.14) : 스위퍼 270개

잭로그(6.09) : 스위퍼 197개

치리노스(5.90) : 스위퍼 304개

와이스(5.71) : 스위퍼 326개

올러(5.38) : 스위퍼 115개


* 주 : 2025년 11~12월 자체 데이터로 WAR계산을 시행 중이었고, 그당시 데이터 기준으로 위 선수들이 WAR 상위권이었다.(약 2달여의 시간동안 이 외국인 예측시스템과 함께, WAR 시뮬레이터와 한국형 PECOTA(시즌 성적예측 시스템)를 같이 개발중이었다.)


다섯명 전부 스위퍼를 쓸 줄 알고, 비중이 상당했다. 스위퍼는 슬라이더도, 커브도 아닌, '굉장히 많이 휘는' 변화구의 일종이다. 슬라이더보다는 느리고, 커브보다는 빠른 편이지만 궤적이 대부분 (우투수가 우타자에게 던졌을 때) 바깥쪽으로 매우 심하게 휘어져 나가는 경향이 있어 타자들이 헛스윙하기 쉽다. 2023년 페디 이후로 KBO에서도 각광받기 시작한 구종으로, 장착할 수 있다면 상당한 이점을 가질 수 있는 좋은 무기엿다. 그래서 스위퍼 보유자의 성공률에 대한 분석을 해 보았다.

스위퍼 사용자 분류

스위퍼 고사용자 : 성공률 83%, 평균 5.14 WAR

스위파 미사용자 : 성공률 55%, 평균 3.21 WAR

스위퍼를 쓰지 않는다고 못하는 것은 아닌데, 스위퍼의 장착 여부는 성공에 매우 큰 차이를 주고 있는 것이 확실해 보였다. 여기서 좀더 파고 들어가 보았다. 스위퍼는 어느 코스에서 가장 효과적이었을까.


스위퍼 투구위치에 따른 헛스윙률

Low Outside : 28.86%

Low Middle : 26.73%

Low Inside : 21.05%

Mid Outside : 10.31%

Mid Middle : 7.78%

Mid Inside : 13.62%


High Inside : 2.27%

낮은 존에서 헛스윙 유도율이 압도적으로 높았다. 스위퍼를 쓰되, 낮은 존을 잘 공략하는 투수가 최고의 조합임을 알 수 있었다. 지금까지의 모든 조사 내용, 발견내용들을 하나로 묶기로 했다. 6가지 요소를 점수화해서 합산하는 방법이었다. 기본 점수는 50점이며, 각 요소의 가점/감점을 더했다.


Factor 1 : SwStr%(±20점)

9~10% : +20점(최적구간)

9%미만 : +12점(개선의 여지가 있음)

11~12% : -5점(과도한 헛스윙률이 오히려 성적에 나쁜 영향)

12% + 효과적 커브볼 : 5점

12% + 비효과적 커브볼(또는 커브볼 없음) : -10점


Factor 2 : 커브볼 효과(±15점)

SwStr 14%이상 : +15점

SwStr 10~14% : +8점

SwStr 6% 미만 : -5점


Factor 3 : 스위퍼(±15점)

100개 이상 & SwStr 15% & Low 존 30% : +15점

100개 이상 & SwStr 10%이상 :+10점

스위퍼 보유 : +5점


Factor 4 : 직구 특성(±16점)

회전수 2100미만 : +8점(저스핀)

회전수 2400이상 : -5점(고스핀 영향 - 오히려 고스핀 포심 투수의 성적이 좋지 않음)

싱킹 성향 : +8점

싱커 비율 20%이상 : +5점

기타


Factor 5 : 슬라이더 의존성(-5점)


Factor 6 : 직구 제구력(±15점)


Generated Image January 10, 2026 - 11_01AM.jpeg


이러한 요소들을 더하고 빼서, 0~100점 사이의 통합 점수를 만들어 냈다.

34명의 데이터로 모델을 검증해 보니 아래와 같은 결과가 나왔다.

스크린샷 2026-01-10 10.47.46.png

실제로 75점이상인 선수들은 잭로그(25), 네일(25), 페디(23), 수아레즈(24), 치리노스(25) 등이었다.


실패 케이스에서의 교훈

모델이 틀린 케이스도 있었다. 그중 가장 아쉬운 것은 가라비토 케이스였다.

가라비토는 커브볼활용도 좋고, 좋은 스위퍼를 가지고 있고, 싱킹 패스트볼의 비율도 좋았다. 실제 영입점수는 67점으로 '높은 확률로 성공할 만한 투수'라고 봤다. 자체 계산 WAR 기준으로 1.62를 기록했다. 반시즌 기록 치고는 절대 나쁘지는 않다. 하지만 모델을 만드는 도중 재계약 불발 결과가 나왔다. 가라비토는 왜 재계약을 하지 못했을까.

가라비토 BB% : 12.6% vs 성공 투수 평균 BB% : 6.5%


결국 문제는 제구력이었다. 가라비토의 직구 제구력(존 안에 들어온 직구의 비율)을 보니 41.9%로 낮은 편이었다. 스트라이크존에 직구를 꽂지 못하니 카운트가 불리해지고, 볼넷이 늘어났다. 이러한 발견을 통해 마지막 팩터인 직구 제구력이 추가된 것이다. 이렇게 어느정도 콘텐츠로 만들 만한 수준의 예측 모델이 완성되었다.


자동화의 필요성

그런데, 매번 내가 선수 파일을 다운로드 받아서 코드를 실행하고, 결과 파일을 csv로 받고. 그리고 그 파일을 열어서 내가 해석하고, 이걸 다시 Gemini Nanabanana Pro3에 이미지 프롬프트를 만들어 콘텐츠로 만든다는게 꽤나 시간이 걸리는 일이었다. 이제 베이스볼 서번트에서 데이터를 다운로드 해 와서 모델 실행을 하면 결과 파일은 10초도 안되서 나온다. 그런데 그 이후에 콘텐츠를 만들어 올리는데 걸리는 시간이 온전히 한시간이 넘는 상황.

해결책이 필요했다. csv파일 하나를 폴더에 넣어두면 이미지 까지 한방에 생성되는 시스템. 그런게 필요했다.


Generated Image January 10, 2026 - 11_02AM.jpeg 대충 당시 필자의 모습


[10편 - 자동화된 미래]로 이어집니다.


이전 08화삼진왕이 왜 실패했나