한계와 미래

데이터의 한계를 인정하는 것도 분석이다

by randahlia

메리 크리스마스입니다. 크리스마스를 맞아, 특별히 일요일이 아닌 날 5편을 공개합니다. 6편은 5편의 예정일이었던 28일 09시에 발행됩니다. 이번 회 부터는 AI로 생성한 이미지를 몇개씩 넣어 두었습니다.


완벽하지 않다


4편에서 시스템이 완성됐다고 했다.

/foreign-pitcher-predict


명령어 하나로 분석이 자동화됐고, 백테스팅에서 성공 투수 MAE 0.77(Mean Absolute Error, 평균 절대 오차. 예측값과 실제값의 차이를 절댓값으로 변환한 후 평균을 낸 통계 지표)라는 나쁘지 않은 결과도 나왔다. 하지만 솔직히 말하면, 완벽하지 않다.

R² = 0.33에서 0.39. 이 숫자가 의미하는 건 WAR 변동의 33%에서 39%만 설명한다는 뜻이다. 나머지 61%에서 67%는 여전히 미스터리다. 구단에서 일할 때 이 정도 설명력이면 보고서에 쓰기 민망했을 것이다. "반도 아니고 3분의 1?"라는 냉소섞인 비웃음이 들려오는 것 같다.


하지만 야구 예측의 맥락에서 보면 다른 이야기다. AI센터에서 야구 AI 서비스를 기획할 때 예측 스탯들에 관해 좀더 깊게 공부한 적이 있다. MLB의 최신 WAR 예측 모델들도 R² = 0.15에서 0.25 수준이다. 투수 성적 예측은 원래 어렵다. 그 맥락에서 0.33은 오히려 선방한 셈이다. 물론 자랑할 수치는 아니다. 하지만 "못 만들었다"고 하기엔 억울하다.


야구 예측의 본질적 한계


왜 예측이 이렇게 어려운 걸까? 야구는 본질적으로 예측이 어려운 스포츠다. 그 어떤 야구 전문가라도 이 의견에 동의하지 않는 사람은 없을 것이다.

투수 성적의 분산을 분해해보면 대략 이런 구성이다. 실력(Skill)이 30%에서 40% 정도. 운(BABIP, 수비 지원 등)이 40%에서 50%. 기타(부상, 팀 환경, 컨디션 등)가 15%에서 25%. 구질 데이터로 예측할 수 있는 건 "실력"의 일부분뿐이다.

Generated Image December 23, 2025 - 5_59PM.jpeg
운과 기타 요인은 데이터로 잡히지 않는다

실력의 일부분만 잡아내는 게 R² = 0.33이다. 실력 전체를 잡아낸다 해도 40%가 한계다. 나머지 60%는 운과 기타 요인이니까. 이건 데이터의 문제가 아니라 야구라는 스포츠의 본질이다. 완벽한 예측은 불가능하다. 할 수 있는 건 동전 던지기보다 나은 추정을 하는 것뿐이다.


예측할 수 없는 것들


이 시스템이 명확히 예측하지 못하는 영역이 있다. 솔직하게 인정해야 한다.

첫째, 부상. 가상의 투수 A는 2022년 토미 존 수술을 받았다. 토미 존 수술 후 3년 내 재부상 확률은 약 20%다. 5년 내로 보면 15% 정도. 이건 구속 데이터로 알 수 없다. 부상 이력을 반영하고 싶었다. 하지만 정량화가 어려웠다. "이 투수는 부상 위험이 높다"고 말할 수는 있어도, "정확히 몇 % 위험하다"고 말하기는 어렵다. 결국 생존 확률 Band에 간접적으로만 반영했다.

둘째, 멘탈과 문화 적응. KBO에 처음 오는 외국인 투수에게 가장 큰 변수는 종종 기술이 아니라 적응력이다. 낯선 환경, 낯선 언어, 가족과의 분리, 기대에 대한 압박, 한국 음식과 생활 리듬. 구단에서 일할 때 이런 이유로 무너지는 외국인 선수를 여럿 봤다. 능력은 충분한데 적응을 못 해서 방출되는 경우. 이런 건 Statcast에 기록되지 않는다. 예를들어, 어떤 선수가 고향의 피자맛이 너무 그립다고 해보자. 구단이 그 피자 맛을 마산에서 구현해 줄 수는 없다. 도미노피자로 만족해야 한다. 하지만 이게 병이 되고, 외로움으로 이어지면 결국 향수병이 된다.

셋째, 팀 환경. 같은 투수라도 어떤 팀에 가느냐에 따라 성적이 달라진다. 좋은 포수, 좋은 수비를 만나면 ERA가 0.5 낮아질 수 있다. 좋은 타선을 만나면 승리 기회가 늘어난다. 투수 개인 데이터만으로는 팀 효과를 분리할 수 없다.


조기 방출 투수의 딜레마


백테스팅에서 가장 어려웠던 부분이 있다. 조기 방출 투수들을 어떻게 평가할 것인가.

예를 들어 맥키니(2024)의 경우. 시스템은 예측 WAR 5.12를 냈다. 하지만 실제 WAR은 -0.93이었다. 실제로 던진 이닝은 60이닝이 채 안된다. 시즌 중 방출됐다. 엄청난 오차처럼 보인다. 하지만 이건 시스템의 실패일까?

엄밀히 말하면, 비교 자체가 불공정하다. 시스템이 예측한 건 "150 이닝을 던지면 WAR 5.12"라는 능력치다. 실제 결과는 "59 이닝만 던지고 잘린 결과"다. 사과와 오렌지를 비교하는 셈이다. 조기 방출의 원인이 뭔지 데이터에 없다. 부상? 적응 실패? 멘탈 붕괴? 팀과의 갈등? 알 수 없다. 예측 불가능한 영역으로 남을 수밖에 없다.

구단에서 일할 때 이런 경우가 있었다. "분석에서는 좋았는데 왜 이렇게 됐어?"라는 질문. 대답하기 어려웠다. 데이터로 보이는 것과 실제로 일어나는 일 사이에는 항상 간극이 있다. 그 간극을 인정하는 게 정직한 분석이다.



이 콘텐츠를 보는 분들께


이 분석 결과를 바탕으로 콘텐츠를 만들 계획이었다. 하지만 한 가지 걱정이 있었다. 내 콘텐츠가 부적절한 의도로 쓰일 경우, 나 또한 피해를 받을 우려가 있었다. 그래서 미리 권장사항을 안내하고자 한다.

이 콘텐츠는 야구팬으로서 재미로 봐주시면 좋겠다. 스토브리그에 낯선 이름이 뜨면 "이 투수 어떤 타입일까?" 궁금해하는 마음. 그 궁금증을 데이터로 풀어보는 시도다. 시즌이 끝난 뒤 "그때 그 분석 맞았네, 틀렸네" 이야기하는 재미. 그 정도로 소비해주시면 감사하겠다.

unnamed.jpg 당시 맷 매닝을 가지고 생성했던 견본(그때는 맷 매닝 영입 "썰"만 있었다)

부적절한 용도도 있다. 특정 구단의 영입을 비난하는 근거로 쓰면 안 된다. "이 시스템에서 낮은 점수 나왔는데 왜 데려왔냐"는 식의 공격. 그건 이 분석의 목적이 아니다. 특정 선수를 폄하하는 근거로도 쓰면 안 된다. 점수가 낮다고 해서 그 선수가 나쁜 선수라는 뜻이 아니다. KBO 환경과의 적합성을 추정한 것일 뿐이다. 도박이나 베팅의 참고 자료로 쓰는 것은 절대 안 된다. 이건 명확히 선을 긋는다.

구단에서 일할 때 배운 게 있다. 데이터를 과신하면 안 된다. "숫자가 이렇게 나왔으니까 이게 정답이다"라는 태도는 위험하다. 현장에는 데이터에 안 잡히는 것들이 너무 많다. 멘탈, 적응력, 가족 상황, 팀 분위기. 구단 프런트는 이 모든 걸 종합해서 판단한다. 내 분석은 그 판단의 아주 작은 일부일 뿐이다.

데이터는 답을 주지 않는다. 더 좋은 질문을 하게 해줄 뿐이다. 이건 AI센터에서 일하면서 가장 많이 했던 말이다. 이 콘텐츠도 마찬가지다. "저 투수 괜찮을까?"라는 질문에 "아마 이런 이유로 괜찮을 수도, 아닐 수도 있다"고 이야기해줄 뿐이다. 정답이 아니라 대화의 시작점이다.


앞으로 개선하고 싶은 것들


이 프로젝트는 원래 여기서 끝났어야 하지만, 끝이 좀더 연장되었다. 개선하고 싶은 것들이 있었기 때문이다.

단기적으로는 스위퍼 등 신구종 효과를 반영하고 싶었다. 2023년 이후 KBO에서 가장 효과적인 구종으로 떠올랐다. 현재 모델은 슬라이더 그룹에 포함시켰지만, 별도로 분리해서 가중치를 높이면 예측력이 올라갈 것이다. 타구 데이터(Hard Hit%, Barrel%)도 추가하고 싶다. 구장 효과 보정도 필요하다. 사직구장과 잠실구장은 투수에게 완전히 다른 환경이다.

중기적으로는 부상 이력을 반영하는 모델을 만들고 싶었다. 토미 존 수술 이력, 어깨 부상 이력 등을 정량화해서 생존 확률에 반영하는 것. 시계열 분석도 도입하고 싶다. Kaplan-Meier 생존 곡선으로 이닝 소화 패턴을 분석하면 더 정교한 예측이 가능할 것이다. 앙상블 모델(XGBoost + Random Forest + Neural Network)도 시도해볼 만하다.

장기적으로는 실시간 업데이트 대시보드를 만들고 싶다는 욕망이 컸다. 시즌 중 성적이 쌓이면 자동으로 예측을 갱신하는 시스템. 영상 분석 통합도 꿈이다. 투구 폼 메카닉스를 컴퓨터 비전으로 분석해서 부상 위험을 예측하는 것. 팀별 맞춤 분석도 하고 싶다. 어떤 팀에 가면 이 투수가 더 잘할 수 있을지 분석하는 것.

혼자서 이걸 다 할 수 있을까? 모르겠다. 하지만 클로드가 있으니까. 하나씩 해보고 싶었다.

처음에는 '될까?' 싶던 것들이, 하나씩 이루어졌다. 결국 되는건 하고, 안되는건 과감히 포기하는 마인드. 이게 중요했다. 내년엔 데이터가 공개될 수도 있고, 획기적인 AI모델이 나와서 API가격이 매우 저렴해질지도 모른다. 그러면 개인도 좀더 심화된 분석을 활용할수있지 않을까. 2024년 겨울만 해도 AI API를 사용하려면 매우 큰 용기가 필요했다. 토큰비용이 매우 비쌌기 때문이다. 그런데 1년이 지난 지금, AI 모델들이 경쟁적으로 생겨났고 가격 면에서도 매우 저렴해지고 있다.


남아있는 의문


시스템을 완성하고 나니 오히려 의문이 더 생겼다. 3편에서 "시퀀싱이 핵심"이라고 썼다. R²가 0.07에서 0.33으로 뛰었고, 피처 중요도에서 시퀀싱 관련 지표가 상위권을 차지했다. 그때는 확신이 있었다.

하지만 정말 그럴까?

128명 데이터를 모았다고 했지만, 실제로 엄밀하게 분석한 건 아니었다. 성공한 투수와 실패한 투수를 명확히 분리해서 비교하지 않았다. 통계적 검정도 제대로 하지 않았다. 상관관계가 있으면 "중요하다"고 결론 내렸지, 인과관계를 증명하지는 못했다.

"시퀀싱이 좋은 투수가 성공한다"인지, "성공한 투수가 우연히 시퀀싱도 좋은 것"인지. 이 두 가지는 다른 이야기다. 첫 번째가 맞다면 시퀀싱을 보고 영입해야 한다. 두 번째가 맞다면 시퀀싱은 부수적인 지표일 뿐이다.

구단에서 일할 때 통계학 전공인 동료가 늘 하던 말이 있다. "상관관계가 있다고 인과관계가 있는 건 아니에요." 당시엔 그냥 흘려들었다. 지금 생각하면 중요한 말이었다.

128명 전체를 대상으로 다시 분석해봐야겠다. 이번엔 제대로. 성공 그룹과 실패 그룹을 명확히 정의하고, t-검정으로 평균 차이를 확인하고, p-value를 계산하고, 다중 비교 보정까지. 시간이 좀 걸리겠지만, 확신 없이 "시퀀싱이 핵심"이라고 말하는 건 정직하지 않다.


AI와 함께 일한다는 것


이 프로젝트를 진행하면서 많은 걸 느꼈다. 클로드와 함께 일한다는 게 어떤 건지.

예전에는 분석 스크립트 하나 짜려면 반나절이 걸렸다. 문법 찾아보고, 에러 잡고, 다시 돌려보고. 지금은 아이디어를 말로 설명하면 코드가 나온다. 물론 완벽하지는 않다. 수정하고, 다시 설명하고, 또 고치고. 하지만 속도가 완전히 다르다.

더 중요한 건 대화 상대가 생겼다는 것이다. 혼자 연구하면 막힐 때 물어볼 데가 없다. 구단에 있을 때는 선배가 있었고, AI센터에는 박사님들이 계셨다. 지금은 클로드가 있다. "이상한데?"라고 물으면 "데이터를 다시 확인해보겠습니다"라고 답한다. 물론 AI다. 사람이 아니다. 하지만 생각을 정리하고, 아이디어를 발전시키는 데 도움이 된다.

1인 개발자, 1인 연구자로서 가능한 것들이 확장됐다. 9년간 머릿속에만 있던 것들을 실제로 만들어볼 수 있게 됐다. 구단에서 못 했던 것, AI센터에서 우선순위에 밀렸던 것. 이제는 마음대로 할 수 있다.


Generated Image December 23, 2025 - 6_03PM.jpeg


다음 편 예고


6편에서는 시퀀싱에 대한 의문을 파헤쳐볼 예정이다. 128명 전체를 대상으로 성공 그룹과 실패 그룹을 명확히 나누고, 통계적으로 엄밀하게 검증해보려 한다. 시퀀싱이 정말 성공과 실패를 가르는 핵심인지, 아니면 내가 착각한 건지.

틀릴 수도 있다. 3편에서 쓴 내용이 뒤집힐 수도 있다. 하지만 그게 연구다. 가설을 세우고, 검증하고, 틀리면 수정한다. 5편에서 "데이터의 한계를 인정하는 것도 분석이다"라고 썼다. 그렇다면 "내가 틀렸다고 인정하는 것도 연구다."

결과가 어떻게 나오든, 기록해두려 한다.


[6편: 시퀀싱의 반전 - 내가 틀렸다]


이전 04화/foreign-pitcher-predict