구속은 8위

무기 자체보다 쓰는 법이 중요했다

by randahlia

같은 무기, 다른 결과


2편에서 68개 특성으로도 WAR를 예측하지 못했다. R² = 0.07. 사실상 랜덤 수준이었다. 데이터를 7배로 늘리고, 특성을 4배로 늘렸는데도 안 됐다. 뭘 놓친 걸까? 투구추적 데이터 분석만 이제 20년이 다되어간다. 나는 정말 이걸로 돈을 벌어먹고 살던 사람이 맞나.. 하는 자괴감마저 들었다.


128명의 투수 데이터를 다시 들여다봤다. 2편에서 말했던 것처럼, 클로드와 별도 세션을 열어 csv파일들을 직접 비교하기 시작했다. AI에게 분석을 맡기지 않고, 내가 직접 눈으로 보면서. 그러다 흥미로운 패턴을 발견했다. 비슷한 스펙인데 성적이 완전히 다른 투수들이 있었다.


폰세(2025)와 쿠에바스(2025)를 비교해봤다. 폰세는 직구 154km/h에 슬라이더 144km/h, 7개 구종을 구사하며 WAR 9.38을 기록했다. 쿠에바스는 직구 146km/h에 슬라이더 135km/h, 5개 구종으로 WAR -0.23이었다. 구속 차이가 8km/h. 이 정도면 성적 차이가 설명될까? 아니다. KBO에는 146km/h로도 잘 던지는 투수가 많다. 더 극단적인 예도 있었다. 후라도(2025)와 쿠에바스(2025)는 둘 다 직구 구속이 146km/h였다. 같은 구속인데 WAR 차이가 4.8이었다. 후라도 4.57, 쿠에바스 -0.23. 구속이 답이 아니었다.


주) 물론 쿠에바스는 다른 이유가 있었을 수도 있으나, 우리의 학습 데이터에 개인적 사정이나 부상에 의한 여파들은 기록되어 있지 않으므로, 아주 차갑지만 숫자로만 분석하는 접근법을 택했다.



투수 코치의 말, 그리고 데이터


2편 끝에서 실마리를 찾았다. 딥리서치로 발견한 4가지 지표—초구 스트라이크율, 투수유리카운트 비율, 2스트라이크 헛스윙률, 체이스율. 내가 "시퀀싱 피처"라고 이름 붙인 것들이다. 돌이켜보면 구단에서 일할 때 투수 코치가 늘 하던 말과 같았다. "초구를 잡아야 주도권을 가져간다." "2스트라이크 후가 승부다." 당시에는 경험론이라고 치부했다. 데이터로 증명할 수 없는, 감의 영역이라고. 하지만 제대로 된 지표로 측정하니 그게 핵심이었다.


"무엇을 가졌는가"가 아니라 "어떻게 사용하는가"를 측정해야 했다. 구속, 무브먼트, 구종. 이건 투수의 무기다. 하지만 야구는 무기만으로 이기는 게임이 아니다. 그 무기를 언제, 어떤 상황에서, 어떻게 쓰느냐가 중요하다. 이걸 데이터로 잡을 수 있을까?


클로드에게 물었다. "투구의 순서와 상황별 선택을 측정하는 지표가 있을까?" 클로드가 시퀀싱(Sequencing)이라는 개념을 알려줬다. 초구에 스트라이크를 던지는가? 유리한 카운트를 만드는가? 결정적 순간에 승부구가 통하는가? 이런 "투구 운용 능력"을 측정할 수 있는 지표들이 있었다. Baseball Savant에서 추출할 수 있는 데이터였다.



시퀀싱 피처의 구체화


4가지 지표의 정의를 명확히 해야 했다. 구단에서 리포트에 가끔 쓰던 지표들이었는데, 이렇게 체계적으로 정리해본 건 처음이었다.


첫 번째, 초구 스트라이크율(First Pitch Strike %). 초구가 스트라이크인 타석의 비율이다. 구단에서 일할 때도 이 항목은 굉장히 중요하게 여겼던 분이기도 하다.

두 번째, 투수유리카운트 비율(Pitcher Ahead %). 0-1, 0-2, 1-2 같은 투수에게 유리한 카운트가 전체에서 차지하는 비율이다.

세 번째, 2스트라이크 헛스윙률(Two-Strike Whiff %). 반드시 투수가 결정지어줘야 하는 카운트에서 투수가 타자를 압도하고 있는지를 파악해 볼수 있는 간접적 수치이다.

네 번째, 체이스율(Chase %). 존 밖 투구에 타자가 스윙한 비율이다.


이 지표들은 Baseball Savant의 메이저/마이너리그의 Raw Data에서도 계산할 수 있었고, 내가 가진 KBO 문자중계 데이터에서도 충분히 추출해 낼 수 있었다. 그렇게 v4 모델의 작업을 시작했다.



v4모델의 결과


새 피처들을 추가하고 모델을 다시 학습시켰다. 클로드와 함께 코드를 수정하고, 교차 검증을 시행했다. 결과가 나왔다.

v4 모델, 68개 특성. Cross-Validation R² = 0.07


사실상 랜덤 수준이었다. 이대로는 세상에 내놓기 힘들었다.(물론 그때도 이미 '나노바나나'라는 이름으로 인포그래픽을 만들어 SNS에서 반응을 테스트 중이었다)



상호작용 피처의 발견


개별 지표를 모델에 추가해봤지만, 개선 폭이 크지 않았다. 뭔가 더 필요했다. 며칠간 고민하다가 아이디어가 떠올랐다. AI센터에서 동적 기록검색 시스템을 기획할 때 배운 방법이다. 개별 특성보다 특성 간의 조합이 더 강력한 예측력을 가질 때가 있다.


클로드에게 제안했다. "두 지표를 결합해서 상호작용 피처를 만들어보자." 첫 번째로 만든 건 Stuff × Command였다. 헛스윙 유도율(SwStr%)과 직구 존율(FB Zone%)의 상호작용 항(interaction term)이다.좋은 구위(Stuff)와 좋은 제구(Command)를 동시에 갖춘 투수를 잡아내는 지표다. 둘 중 하나만 좋으면 점수가 낮다. 빠른 공을 던지지만 제구가 나쁜 투수, 제구는 좋지만 위력이 없는 투수. 둘 다 걸러진다.


두 번째로 만든 건 공격성 점수(Aggression Score)였다. 초구 스트라이크율과 체이스율을 곱했다. 의미는 "초구 스트라이크로 몰아붙이고, 타자가 혹할 만한 공을 던지는" 공격적 투구 스타일을 측정하는 것이다. 구단에서 일할 때 이런 투수는 정말 최고였다. 이닝을 많이 먹어주는, 소위 '계산이 서는 투수'였다. 계속해서 수정해 나가다 보니, 어느새 v4에서 v5, v5.1까지 와버렸다. 버전의 명명에 큰 의미는 없지만, 방법론에 있어 모델에 큰 수정이 필요하다면 버전을 완전히 올리는 형태를 띄도록 했다.



극적인 개선


v5.1의 결과를 기다렸다. v4의 쓴맛을 본 이후라, 큰 기대는 없었다.


v5.1 모델, 26개 최적화 피처. Cross-Validation R² = 0.36


개선율 +414%.


예측력이 5배 이상 뛰었다. 더 흥미로운 건 피처 개수였다. 68개에서 26개로 줄였는데 성능이 올랐다. 과적합(overfitting)을 줄이고 핵심만 남긴 결과다. 본사 AI연구실의 박사님들이 하시던 말이 떠올랐다. "많이 아는 것보다 중요한 걸 아는 게 낫다." 데이터 분석에서도 마찬가지였다.


WAR/FIP를 예측함에 있어 0.8 같은 R²값을 기대하기는 힘들다. 0.4~0.5정도면 충분히 유의미하다고 판단했었고(실제 Streamer, ZiPS, PECOTA 같은 모델의 예측력도 이 이상을 넘지 않는다), 내 모델의 블랙박스가 궁금해졌다.


클로드에게 물었다. "어떤 피처가 가장 중요해?" 피처 중요도 분석 결과가 나왔다.



구속은 8위였다


피처 중요도 Top 10을 확인했다. 1위는 stuff_command_interaction, 12.3%. 내가 만든 상호작용 피처였다. 2위는 aggression_score, 11.1%. 역시 상호작용 피처. 3위는 pitcher_ahead_pct, 10.2%. 시퀀싱 피처였다.


그리고 직구의 구속(fb_velo_mean)은 8위, 5.8%에 불과했다.


솔직히 충격이었다. 9년간 야구 데이터를 봐왔는데, 구속이 이렇게 중요하지 않을 줄은 몰랐다. 스카우트들이 "저 투수 직구가 150은 찍힌다"고 흥분하던 장면이 떠올랐다. 물론 구속이 중요하지 않다는 건 아니다. 8위니까. 하지만 1위부터 3위까지를 차지한 건 모두 시퀀싱/상호작용 피처였다. "어떻게 던지느냐"가 "얼마나 빠르냐"보다 훨씬 중요하다는게, 내가 만든 모델이 말해주는 결과였다.


이건 야구를 아는 사람에게는 어쩌면 당연한 이야기다. "초구가 중요하다"는 건 모든 투수 코치가 하는 말이다. 하지만 기존 예측 모델들은 이걸 측정하지 않았다. 구속, 무브먼트, 구종 같은 "물리적 특성"만 봤다. 정작 중요한 "운용 능력"은 빠져 있었다. 데이터로 증명된 셈이다. 구속 150km/h에 시퀀싱이 나쁘면 평범한 투수. 구속 145km/h에 시퀀싱이 좋으면 좋은 투수.


좀더 쉽게 말하자면, 여기서 말하는 '시퀀싱'은 요즘 유행하는 '피칭 디자인'과는 전혀 다른 개념이다. 초구에 스트라이크를 넣을 줄 알고, 2스트라이크에서 과감하게 승부할줄 아는 능력을 측정하는 지표다. 소위 말하는 '새가슴 투수'를 걸러내는 지표에 가까운거다. 숱한 유망주들이 이 '새가슴 투수'의 오명을 벗지 못하고 역사 속으로 사라졌었다.



투수 타입 분류 시스템


시퀀싱 피처(feature)와 함께, 투수를 타입별로 분류하는 시스템도 만들었다. 이건 구단에서 일할 때부터 하고 싶었던 작업이다. 모든 투수를 같은 기준으로 비교하는 건 무의미하다. 삼진을 많이 잡는 투수와 땅볼을 유도하는 투수를 직접 비교할 수 없다. 스타일이 다르니까. 예를들어 폰세와 후라도는 전혀 다른 타입이다. 폰세는 완전한 파워피처, 후라도는 공격적인 피네스 피처에 가깝다.


클로드와 함께 6가지 타입을 정의했다.

삼진 마스터: K% 22% 이상인 투수다. KBO 외국인 투수의 24%가 이 타입이다.

파워 직구형 : 직구 비율 54% 이상이면서 구속 148km/h 이상인 투수. 6%에 불과하다.

변화구 장인 : 슬라이더+커브 비율이 42% 이상인 투수, 전체의 14%.

제구형 투수 : 존 공략률 49% 이상이면서 볼넷 비율 6% 미만인 투수, 7%.

그라운드볼 유도형 : GB/FB 비율 1.47 이상인 투수, 17%.

밸런스형 : 그 외의 분류되지 않은 선수들. 32%.


먼저 선수를 6개중 어느 하나의 타입으로 분류되게끔 하고, 그 타입 내에서 비슷한 투수를 찾고 성적을 예측하게끔 프로세스를 수정했다. 그러니까 애초에 후라도 형태로 분류된다면 유사도에 폰세가 나올일이 없게 한 것이다. 이제 Matt Manning을 다시 분석해봤다. 타입: 삼진 마스터(K% 22.5%). 유사 투수: 알드레드, 반즈, 하트. 같은 삼진 마스터 타입 안에서 매칭됐다. 후라도는 목록에 없었다. 드디어 "평균 152km/h 의 직구를 던지는 후라도"같은 황당한 결과가 해결됐다.



9년간의 경험이 데이터로 증명되다


이 결과를 보면서 묘한 감정이 들었다. 현장의 인사이트들이 데이터로 다시한번 증명된 순간이었다.

"초구가 중요하다."
"2스트라이크 후가 승부다."
"타자를 몰아붙여야 한다."

현장 스탭들이 늘 하던 말이었다. 당시에는 경험론이라고 생각했다. 숫자로 증명할 수 없는 감의 영역이라고. 하지만 제대로 된 지표로 측정하니 데이터로도 보였다.


AI센터에서 야구 AI 서비스를 기획할 때 이런 작업을 하고 싶었지만, 항상 우선순위에서 밀렸다. 리소스가 부족했기 때문에. 하지만 지금은 다르다. 나 혼자서 연구하고 개발하지만 언제든 도와줄 클로드라는 동료가 생겼다. 하고 싶은 연구를 마음대로 할 수 있다. 대단한 것은 아니지만, 하나 하나 완성되어가는 경험. 이것이 내가 바라던 게 아닐까 하는 생각이 들었다.


---



### 다음 편 예고



예측 모델이 완성됐다. R² = 0.36. 완벽하지는 않지만, 0.07보다는 훨씬 낫다. 이제 이걸 실제로 사용할 수 있는 시스템으로 만들 차례다.


목표는 세 가지였다. 첫째, 베이스볼 서번트에서 가져온 외국인 후보선수의 CSV 파일 하나를 올리면 자동 분석. 둘째, 유사 투수, WAR 예측, 생존 확률까지 원클릭. 셋째, 리포트 자동 생성. 구단에 있을 때 이런 시스템을 만들고 싶었다. 분석 요청이 들어오면 며칠씩 걸리던 작업을 몇 분 만에 끝내는 시스템. 이제 만들 수 있다.


37개의 스크립트가 있었다. 프로젝트를 진행하면서 만든 온갖 분석 코드들이다. 이걸 5개로 정리하고, 클로드 코드의 슬래시 명령어로 통합하는 작업이 남았다. `/foreign-pitcher-predict`라는 명령어 하나로 모든 분석을 자동화하는 시스템. 다음 편에서 그 이야기를 한다.


**[4편: 시스템 완성 - `/foreign-pitcher-predict`의 탄생에서 계속]**



이전 02화첫 번째 실패