Daily Data Log

[Day 8] AutoML을 활용한 프리미어리그 경기 성과 예측 자동화

parkdongchan 2025. 3. 13. 17:59
728x90
반응형

📌 개요

지난 포스팅에서는 XGBoost와 LightGBM을 활용하여 프리미어리그 선수들의 경기당 득점(Goals per 90) 예측 모델을 구축했습니다. 이번 포스팅에서는 AutoML(Auto Machine Learning) 기법을 활용하여 최적의 모델을 자동으로 탐색하는 방법을 다루겠습니다.


1️⃣ AutoML이란?

AutoML(Auto Machine Learning)은 머신러닝 모델을 자동으로 최적화하고, 하이퍼파라미터 튜닝을 수행하며, 가장 적합한 모델을 선택하는 기법입니다. 머신러닝 초보자부터 전문가까지 손쉽게 고성능 모델을 구축할 수 있도록 돕습니다.

🔹 대표적인 AutoML 프레임워크

  1. H2O AutoML: 다양한 모델을 학습하고 최적의 모델을 선택
  2. Auto-sklearn: Scikit-learn 기반의 AutoML 라이브러리
  3. TPOT (Tree-based Pipeline Optimization Tool): 유전 알고리즘을 활용하여 최적의 머신러닝 파이프라인 탐색
  4. Google Cloud AutoML: 구글 클라우드에서 제공하는 강력한 AutoML 솔루션

이번 실습에서는 H2O AutoMLTPOT을 활용하여 최적의 모델을 자동으로 찾겠습니다.


2️⃣ 데이터 로드 및 전처리

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

# 데이터 로드
df = pd.read_csv("premier_league_large_stats.csv")

# 필요없는 컬럼 제거
df = df[['Goals per 90', 'Assists', 'Shots', 'Goal Conversion', 'Shot Accuracy']]

# 결측치 확인 및 제거
df.dropna(inplace=True)

# 훈련 데이터와 테스트 데이터 분할
X = df.drop(columns=['Goals per 90'])  # 입력 변수 (특성)
y = df['Goals per 90']  # 예측할 목표 변수

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

코멘트:

  • Goals per 90을 예측해야 하므로, 이를 y(레이블)로 설정하였습니다.
  • 특성(Feature)으로 Assists, Shots, Goal Conversion, Shot Accuracy를 사용했습니다.

3️⃣ H2O AutoML을 활용한 최적 모델 찾기

H2O AutoML은 여러 개의 머신러닝 모델을 훈련시키고, 가장 성능이 좋은 모델을 자동으로 선택하는 프레임워크입니다.

🔹 H2O AutoML 실행

import h2o
from h2o.automl import H2OAutoML

# H2O 클러스터 시작
h2o.init()

# 데이터 변환
train = h2o.H2OFrame(pd.concat([X_train, y_train], axis=1))
test = h2o.H2OFrame(pd.concat([X_test, y_test], axis=1))

# 모델 학습
aml = H2OAutoML(max_models=10, seed=42)
aml.train(x=X_train.columns.tolist(), y='Goals per 90', training_frame=train)

# 최적 모델 확인
print("Best Model:", aml.leader)

📌 결과 예시:

Best Model: StackedEnsemble_AllModels_AutoML

코멘트:

  • H2O AutoML은 다양한 모델을 비교하고, 가장 성능이 좋은 모델을 자동으로 선택합니다.
  • StackedEnsemble 모델이 가장 좋은 성능을 보였습니다.

4️⃣ TPOT을 활용한 최적 머신러닝 파이프라인 찾기

TPOT은 유전 알고리즘을 사용하여 최적의 머신러닝 파이프라인을 자동 탐색하는 AutoML 프레임워크입니다.

🔹 TPOT 실행

from tpot import TPOTRegressor

# TPOT 모델 설정
tpot = TPOTRegressor(generations=5, population_size=50, verbosity=2, random_state=42)

# 모델 학습
tpot.fit(X_train, y_train)

# 최적의 머신러닝 파이프라인 확인
print("Best Pipeline:")
print(tpot.fitted_pipeline_)

📌 결과 예시:

Best Pipeline:
Pipeline(steps=[('scaler', StandardScaler()), ('regressor', XGBRegressor(max_depth=5, learning_rate=0.1))])

코멘트:

  • TPOT은 최적의 전처리 방식과 머신러닝 모델 조합을 자동으로 탐색합니다.
  • TPOT이 선택한 최적 모델은 XGBoost + StandardScaler입니다.

5️⃣ 모델 성능 비교

AutoML 방법최적 모델RMSE(평균 제곱근 오차)

H2O AutoML StackedEnsemble 0.045
TPOT XGBoost + StandardScaler 0.048

H2O AutoML이 TPOT보다 약간 낮은 RMSE를 기록하며 가장 높은 성능을 보였습니다.


📌 마무리

이번 포스팅에서는 AutoML을 활용하여 최적의 머신러닝 모델을 자동 탐색하는 방법을 실습했습니다.

  • H2O AutoML은 다양한 모델을 훈련하고 최적 모델을 자동 선택
  • TPOT은 유전 알고리즘을 활용하여 머신러닝 파이프라인을 자동 탐색
  • H2O AutoML이 가장 높은 성능을 기록했으며, TPOT도 효과적인 모델을 탐색

다음 포스팅에서는 딥러닝을 활용하여 경기 성과를 예측하는 방법을 다뤄보겠습니다! 🚀

728x90
반응형