본문 바로가기

04. 캐글

00011. [KAG-001] Titanic 생존자 예측 #7 - 하이퍼파라미터 튜닝으로 성능 끌어올리기

반응형

이전 포스트에서는 XGBoost를 사용해 모델을 학습하고, 기본 설정으로도 꽤 괜찮은 성능을 확인할 수 있었습니다. 하지만 기본 파라미터만으로는 모델의 최대 성능을 끌어내기 어렵습니다.

이번 에피소드에서는 GridSearchCV를 활용해 하이퍼파라미터 튜닝을 해보며, 성능을 한 단계 더 끌어올려 보겠습니다.


✅ 1. 사용할 라이브러리 불러오기

from sklearn.model_selection import GridSearchCV
import xgboost as xgb

✅ 2. 파라미터 후보 설정

우리는 다음과 같은 XGBoost 주요 파라미터를 탐색합니다:

  • n_estimators: 트리 개수
  • max_depth: 각 트리의 최대 깊이
  • learning_rate: 학습률
param_grid = {
    'n_estimators': [100, 200],
    'max_depth': [3, 4, 5],
    'learning_rate': [0.01, 0.1, 0.2]
}

✅ 3. GridSearchCV로 튜닝 실행

xgb_clf = xgb.XGBClassifier(use_label_encoder=False, eval_metric='logloss')

grid_search = GridSearchCV(estimator=xgb_clf,
                           param_grid=param_grid,
                           cv=5,
                           scoring='accuracy',
                           verbose=1)

grid_search.fit(X, y)

튜닝이 완료되면 아래처럼 최적 파라미터와 최고 정확도를 확인할 수 있습니다:

print("Best Parameters:", grid_search.best_params_)
print("Best Score:", grid_search.best_score_)

✅ 4. 최적 모델로 재학습 및 제출 파일 생성

best_model = grid_search.best_estimator_
final_preds = best_model.predict(X_test)

submission = pd.DataFrame({
    'PassengerId': test['PassengerId'],
    'Survived': final_preds
})
submission.to_csv('submission_tuned.csv', index=False)

📌 튜닝 팁

  • GridSearchCV는 시간이 오래 걸릴 수 있습니다. 후보를 줄이거나 RandomizedSearchCV로 빠르게 탐색할 수도 있습니다.
  • 성능 평가 기준을 accuracy 외에 f1, roc_auc 등으로 바꿔볼 수도 있습니다.

✍️ 정리

  • 하이퍼파라미터 튜닝은 모델 성능 향상의 핵심
  • 기본 설정보다 1~3% 이상 정확도 향상이 가능한 경우도 많음

🔜 다음 예고

이제 Titanic 대회의 기본 흐름은 모두 정리되었습니다.
다음에는 지금까지의 과정을 정리하거나, Ensemble 기법 또는 다른 대회 도전을 준비해볼 예정입니다!

감사합니다 🙌

반응형