디트로이트 타이거즈_타릭 스쿠발(Tarik Skubal)_구종조합 알아보기

최재석최재석
5 min read

[0. 들어가며]

최근 데이터로 야구 분석하기를 조금씩 진행해보고 있다. 야구에 object detection도 붙여보고, pose estimation도 붙여보고 이것저것 찍먹은 해봤는데, 아무래도 개인이 구할 수 있는 영상 데이터에는 한계가 존재했다. 중계 영상의 경우 노이즈가 많기도 했고(관중, 광고판, 카메라 흔들림 등), 야구 중계 영상 자체의 한계도 존재했다(타구가 너무 빨리 움직인다).

그래서 최근 숫자로 야구를 읽어보려는 시도를 해볼까 하는 생각을 했다. 컨셉은 ‘직감으로 알고 있는 야구 지식 숫자와 데이터로 확인해보기’ 정도인 것 같다. 이를테면 특정 투수의 피치터널 효과 확인하기, 스트라이크 카운트에 따른 타자의 타석 접근법(plate approach) 변화를 데이터로 읽어내기 같은 것들이 될 것 같다.

이번 분석은 매우 심플한 가설을 바탕으로 진행된 ‘특정 투수의 구종 조합 효과 알아보기’이다.


[1. 무엇을 알아보고자 하는가?]

요즈음 투수에게 요구되는 능력 중 하나로 ‘피치터널’이 있다. 피치터널의 활용에 대해 간략하게 정리해보면 다음과 같다고 할 수 있다.

  • 야구공은 약 10~11m 정도를 비행하다가, 남은 거리는 공기 역학에 따라 변화를 보인다.

  • 속구(fastball)는 공기저항을 비교적 일정하게 받아 직선에 가까운 궤적을 보이지만, 변화구의 경우 실밥에 가해지는 공기저항에 따라 변화를 보인다.

  • 투수는 10~11m 지점까지는 두 종류의 공이 비슷한 궤적을 그리며 날아간다는 점을 활용하여, 타자의 decision zone(배트를 낼 지 말지 결정을 내려야 하는 구간)까지는 유사한 궤적을 그리는 구종을 던지고, 그 뒤로 각기 다른 궤적을 그리며 날아가는 구종 조합을 사용하여 타자를 사용한다. 이 구종 조합을 가져가는 과정을 Pitch Design 이라 부르기도 한다.

요즈음 자주 쓰이는 조합으로는 속구-스위퍼, 속구-체인지업 등이 자주 언급되는 것 같다. 전자의 경우는 발사각 혁명 이후 어퍼 스윙을 하는 타자들을 상대하기 위한 조합, 후자의 경우는 오프스피드를 활용한 스테디셀러 조합이다.

처음에는 이 피치터널의 효과를 알아볼까 하다가, 투수-홈플레이트 사이 특정 지점에서 공의 위치를 정확히 알아낼 수 있는 데이터나 방법이 마땅한 것이 없었다. 그래서 문제를 조금 더 심플하게 바꾸어 보았다.

<투수의 효과적인 구종 조합은 어떻게 알아볼 수 있을까?>

투수들은 누구나 ‘위닝샷’을 갖고 있다. 자신있게 던질 수 있는 구종, 이걸 던지면 저 선수를 잡거나 혹은 유리한 상황을 만들 수 있겠다는 확신을 지닌 그 구종을 이야기 한다. 데이터를 활용해보면 투수가 던진 구종 조합 중 좋은 결과를 낸 조합을 알아볼 수 있지 않을까? 라는 생각이었다. 이에 대해 내가 설정한 가설들은 다음과 같다.

  • 투수의 구종조합 - 이번 시도에서는 2개의 조합을 설정했다 -에서 두번째 공이 투수에게 좋은 결과(스트라이크, 헛스윙, 파울 등으로 인해 투수에게 유리한 카운트가 만들어지는 경우)를 가져온 경우를 식별해볼 수 있지 않을까?

  • 이러한 투수의 구종조합은 해마다 어떻게 변경될까?

정도이다. 국내 투수로 조사를 진행하면 조금 더 재밌었을 것 같지만, 아쉽게도 개인이 구할 수 있는 국내 야구선수 데이터는 다소 한정적이었다. 그래서 baseball savant에서 조금 더 많은 데이터를 구할 수 있는 메이저리그 선수로 진행하게 되었다.


[2. 어떤 투수를 선정했고 어떻게 알아보려 하는가?]

투수는 타릭 스쿠발을 선정했다. 지난 해 사이영상 수상자이고, 올해도 위력적인 투구를 이어나가고 있는 선수다.

Tarik Skubal: How the pitcher is trying to carry the Detroit ...

내가 조사를 진행한 방법은 다음과 같다.

  1. Tarik Skubal 선수의 1년치 데이터(24시즌, 25시즌 각각)을 불러온다.

  2. 투구 시퀀스를 생성한다. n번째 공과 n+1번째 공 두 개를 묶어 하나의 시퀀스로 간주한다.

  3. 그렇게 생성된 구종 쌍들을 모으고, 해당 구종 쌍의 결과를 확인한다.

  4. 구종 쌍의 결과가 투수에게 유리한 결과인 경우(헛스윙 유도, 타자가 지켜본 스트라이크, 파울)의 비율을 계산한다.

  5. 그 비율이 높은, 즉 투수한테 유리한 결과를 가져올 확률이 높은 구종 조합을 식별한다.


[3. 분석 코드 및 결과]

<사용 코드>

## **24년**
# 2024년 데이터 수집
start_date = '2024-03-28'
end_date = '2024-10-23'
data_24 = statcast_pitcher(start_date, end_date, player_id=669373)

# 필요한 컬럼 선택
columns_24 = [
    'pitch_type', 'at_bat_number', 'pitch_number', 'description'
]
data_24 = data_24[columns_24]

pybaseball 라이브러리를 활용해서 타릭 스쿠발의 1년치 투구 데이터를 가져오고, 투구 데이터의 구종/타석번호/해당 타석의 투구 번호/설명(결과)를 가져온다.

# 연속 투구 쌍 추출
pitch_pairs_24 = []
for ab in data_24['at_bat_number'].unique():
    ab_data = data_24[data_24['at_bat_number'] == ab].sort_values('pitch_number')
    for i in range(len(ab_data) - 1):
        pair = {
            'pitch1_type': ab_data.iloc[i]['pitch_type'],
            'pitch2_type': ab_data.iloc[i + 1]['pitch_type'],
            'pitch2_result': ab_data.iloc[i + 1]['description']
        }
        pitch_pairs_24.append(pair)

pairs_df_24 = pd.DataFrame(pitch_pairs_24)

pairs_df_24.head()

# 투수 유리 결과 정의
favorable_outcomes_24 = ['swinging_strike', 'swinging_strike_blocked', 'called_strike', 'foul']
pairs_df_24['pitcher_favorable'] = pairs_df_24['pitch2_result'].isin(favorable_outcomes_24).astype(int)

# 구종 조합 생성
pairs_df_24['pitch_seq'] = pairs_df_24['pitch1_type'] + ' → ' + pairs_df_24['pitch2_type']
  1. 연속된 투구쌍, 즉 n번째 투구와 n+1번째 투구를 가져와 쌍을 만든다.

  2. 그 다음 투수한테 유리한 결과가 무엇인지 정의한다. 범타는 우선 제외했다. 투수-타자간의 상황만 고려했다.

  3. 생성된 투구쌍의 구종 조합을 태그로 달아준다.

# 조합별 성공률 계산
seq_stats_24 = pairs_df_24.groupby('pitch_seq').agg({
    'pitcher_favorable': ['count', 'sum']
}).reset_index()
seq_stats_24.columns = ['pitch_seq', 'total_pairs', 'favorable_count']
seq_stats_24['success_rate'] = seq_stats_24['favorable_count'] / seq_stats_24['total_pairs']

# 최소 샘플 수 필터링 (예: 10회 이상)
seq_stats_24 = seq_stats_24[seq_stats_24['total_pairs'] >= 10].sort_values('success_rate', ascending=False)

# 결과 출력
print("Top Powerful Pitch Combinations:")
print(seq_stats_24[['pitch_seq', 'total_pairs', 'favorable_count', 'success_rate']])
  1. 해당 조합의 성공률(던져진 횟수 대비 얼만큼 좋은 결과를 가져왔나)을 계산한다.

  2. 적어도 열번 이상 던져진 공을 필터링한다.

  3. 이걸 내림차순으로 정렬해 출력한다.

정도의 과정을 거쳐 알아보았다.

<분석 결과>

결과는 다음과 같았다. 성공확률이 반반이라 그러면 조금 그러니까…대강 60% 선 정도에 있으면 의미가 있다고 생각한다.

2024년의 Top 5 조합은 1. 너클커브→패스트볼, 2. 너클커브→슬라이더, 3. 너클커브→체인지업, 4. 슬라이더→패스트볼, 5. 싱커→슬라이더 였다.

같은 프로세스를 적용해서 2025년도 알아보았다.

2025년의 Top 5 조합은 1. 너클커브→체인지업, 2. 슬라이더→패스트볼, 3. 패스트볼→싱커, 4. 슬라이더→싱커, 5. 싱커→체인지업 이었다.


[4. 추가 분석]

위에서 단순 숫자로 성공 확률이 높은 구종 조합을 식별했는데, 여기에 사견을 좀 덧붙여서 추가 분석을 해볼까 한다.

  • 25년에는 패스트볼을 조합한 경우가 24년에 비해 효과를 보였다. 슬라이더와 패스트볼, 패스트볼과 싱커 모두 피치터널을 활용하기 좋은 구종이라는 점을 고려하면 트렌디한 선택으로 보인다.

[5. 향후 보완 및 추가 조사가 필요한 점]

<보완이 필요한 점>

  • 이번에는 가설도, 알아보는 방법도 매우 심플하게 축약했다. 조금 더 정확히 저 구종 조합의 위력을 파악하려면 최소한 위치 정보까지는 고려해야 하지 않을까 라는 생각이다.

  • 투수의 피치 디자인은 저것보다 훨씬 섬세하다. 단순히 스트라이크 카운트만을 올리기보다도, 일부러 볼을 내어 주면서도 위닝샷을 만들어가는 셋업을 할 때도 있다는 점을 고려해보면 이 분석은 많은 것을 놓치고 있다는 생각이 든다.

  • 샘플 사이즈에 대한 고려를 해야 할 것 같다. 아무래도 제일 많이 던져지는 체인지업과 패스트볼은 아무리 위력이 좋아도 그 샘플 규모상 모든 공이 좋은 결과를 내진 않을 것이니, 스몰샘플이고 결과가 좋게 나오는 너클커브와 직접적인 비교는 어려울 것이다.

<조사가 필요한 점(궁금한 점)>

  • 물론 스몰샘플이어서 그런 점이 크겠으나, 저 결과만 놓고 보면 스쿠발의 너클커브의 위력이 나쁘지 않은 것 같다. 그런데 스쿠발은 올 시즌에는 너클커브를 거의 던지지 않는다. 25시즌 기준 41구 던졌다. 24년도 120구 정도? 물론 패스트볼과 체인지업이 워낙 강력해서 그 외의 구종을 굳이 던지지 않아도 되는 퍼포먼스이긴 하지만, 왜 그런 것일까 라는 의문은 들었다.

[6. 마무리]

타릭 스쿠발의 구종 조합에 대해서 심플하게 알아보았다. 해당 방법론을 그대로 적용하면 다른 투수도 분석할 수 있을 것 같다.

제일 눈에 띄었던 것은 25년에 새로이 등장한 타릭 스쿠발의 효자 조합? 슬라이더→패스트볼, 패스트볼→싱커 조합이 새로이 등장했다는 점이다. 두 조합 모두 국밥 조합이라, 꽤 든든한 무기가 되어주는 것 같다.

다음에는 조금 더 정교한 분석을 할 수 있게끔 해봐야겠다.

0
Subscribe to my newsletter

Read articles from 최재석 directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

최재석
최재석