공든 탑의 전면 재검토가 필요해졌다
7편 마지막에 말했다. 변환 계수가 찜찜하다고. v6.0 모델에서 쓰고 있던 공식이다.
이론적으로 그럴듯해 보였다. KBO는 MLB보다 투수 친화적인 환경이니까. 타자 수준이 낮으니 삼진을 더 많이 잡을 것이고, 볼넷도 조금 더 줄 것이다. 구단에서 일할 때도 비슷한 공식을 썼던 기억이 난다. 대략 8~10% 정도 좋아진다고 가정하고 시뮬레이션을 돌렸다.
문제는 이 공식을 제대로 검증해 본 적이 없다는 사실이었다.
"대충 맞겠지"
라는 가정 아래 쓰고 있었던 셈이다. 시스템이 어느 정도 궤도에 오르자 이 부분이 걸렸다.
클로드에게 말했다. "변환 계수가 실제로 맞는지 검증해보자. 실제 데이터로."
검증을 위해서는 같은 투수의 MLB 데이터와 KBO 데이터가 모두 필요했다. MLB에서 던지다가 KBO에 온 투수, 그 투수의 두 리그 성적을 비교하면 변환 계수가 맞는지 확인할 수 있다.
이건 클로드가 도와줄수 없었다. 중간에 없는 선수를 생성할 수도 있기 때문에, 혼자서2021년부터 2025년까지 KBO에서 뛴 외국인 투수 중 MLB/마이너리그 투구 데이터가 있는 투수를 찾았다. Baseball Savant에서 pitch-by-pitch 데이터를 수집하고, KBO 첫 시즌 데이터와 매칭했다.
페디, 네일, 잭로그, 폰트... 이름들이 하나씩 리스트에 올라왔다. 성공한 투수도 있고, 실패한 투수도 있다. 최종적으로 34명의 "Paired 데이터"가 완성됐다. 같은 투수의 미국 성적과 한국 성적을 나란히 놓고 비교할 수 있게 된 것이다.
그동안 '해줘'만 하다가 직접 뭔갈 하려니 귀찮았다. 내가 AI에 얼마나 의존하고 있었던가, 하는 부분에 대해 다시한번 생각해 보았다. 선수 이름 매칭부터 쉽지 않았다. MLB에서는 "Font"인데 KBO에서는 "폰트". 영문명과 한글명을 일일이 연결해야 했다. 게다가 KBO의 선수체계가 가지는 player ID와, MLB 선수체계가 가지는 player ID는 다르다. 이 부분을 맞춰줘야 햇다. 구종 분류도 맞춰야 했다. MLB의 "Sweeper"가 KBO에서는 "슬라이더"로 분류되기도 한다. 이런 디테일을 하나씩 정리하는 게 내 역할이었다.
예전엔 AI가 귀찮은 일을 다 해주고 인간이 창조적인 일을 하리라 생각했다. 아니다. 그 반대가 되었다. 잡일은 내가 하고 창의적 작업을 AI가 다 하고 있다.
34명 데이터가 완성되자 바로 회귀 분석을 돌렸다. MLB 삼진율로 KBO 삼진율을 예측하는 단순한 분석이었다. 공식이 맞다면 R²(결정계수)가 높게 나와야 한다. 0.5 이상이면 "꽤 괜찮다", 0.7 이상이면 "상당히 좋다"고 평가할 수 있다. 결과가 나왔다.
처음에는 버그인 줄 알았다. R²가 0.000이라고? 클로드에게 코드를 다시 확인해달라고 했다. "코드에 문제가 없습니다. 실제로 상관이 거의 없는 것 같습니다."
다른 지표들도 돌려봤다.
볼넷율(BB%) 변환 R² = 0.049 헛스윙율(SwStr%) 변환 R² = 0.073 체이스율 변환 R² = 0.001
전부 0에 가까웠다. MLB에서 삼진을 많이 잡았다고 해서 KBO에서도 많이 잡는 게 아니었다. 볼넷도, 헛스윙율도 마찬가지. 미국 성적이 한국 성적을 전혀 예측하지 못하고 있었다. 그러니까,
엉터리 모델도 그럴듯한 결과는 낼 수 있다
는 교훈.
멍하니 화면을 바라봤다. 9년 동안 당연하게 써왔던 공식이 완전히 틀렸다니. 구단에서 "이 투수는 MLB에서 K% 22%니까 KBO에서는 24% 정도 나올 겁니다"라고 리포트를 썼던 기억이 스쳐 지나갔다. 그게 다 근거 없는 추측이었던 거다.
그래도 하나는 살아있었다.
직구 구속 R² = 0.536 상관계수 = 0.732 (p < 0.0001)
구속만큼은 확실히 상관이 있었다. MLB에서 150km/h를 던지던 투수는 KBO에서도 대략 148km/h를 던졌다. 물론 약간의 감소가 있었지만, 예측 가능한 수준이었다.
그러니까 이런 그림이 그려졌다.
구속 빼고 전부 틀렸다. v6.0 변환 계수 모델은 그 자리에서 폐기할 수 밖에 없었다. 전면 재수정이 불가피해졌다.
한참을 고민했다. 왜 삼진율이 상관이 없을까? 클로드와 함께 가설을 세워봤다.
역할 변화 MLB에서 불펜 투수였던 사람이 KBO에서 선발로 전환하는 경우가 많다. 불펜은 12이닝만 전력 투구하지만, 선발은 56이닝을 던져야 한다. 페이스 배분이 완전히 다르다. 불펜 시절 SwStr% 15%였던 투수가 선발로 바뀌면 10%로 떨어질 수 있다.
적응 기간 첫 시즌은 적응 기간이다. 공인구가 다르고, 심판이 다르고, 타자들의 스타일이 다르다. MLB 성적은 그 환경에 최적화된 결과이고, KBO에서는 처음부터 다시 시작이다. 적응에 성공하는 투수와 실패하는 투수가 갈린다.
구질의 효과 차이 MLB에서 통했던 공이 KBO에서는 안 통할 수 있다. 반대로 MLB에서 별로였던 공이 KBO에서는 먹힐 수도 있다. 타자 수준의 차이가 아니라, 타자들이 익숙한 공과 익숙하지 않은 공의 차이일 수 있다.
어떤 가설이 맞는지는 더 파봐야 알겠지만, 한 가지는 확실했다. MLB 성적 × 계수 = KBO 예측이라는 접근법 자체가 틀렸다. 완전히 새로운 방법이 필요했다.
솔직히 좀 막막했다. 시스템의 핵심 가정이 무너진 거니까. 하지만 한편으로는 다행이라고 생각했다. 이 사실을 모르고 계속 썼다면? 잘못된 예측을 "과학적"이라고 포장하며 내놓았을 것이다. 검증을 해봐서 다행이었다.
클로드에게 말했다. "공식이 틀렸으면 다른 걸 찾아야지. MLB 성적이 KBO 성적을 예측 못 한다면, 뭘로 예측할 수 있을까?"
이 질문에 대한 답을 찾아가는 과정에서 놀라운 발견들이 이어졌다. 상식을 뒤엎는 역설들. MLB에서 삼진을 많이 잡는 투수가 왜 KBO에서 실패하는지, 그 비밀이 하나씩 드러나기 시작했다.
[9편: 삼진왕이 왜 실패했나 - SwStr% 역설의 발견]