본문 바로가기

04. 캐글

00017. [KAG-002] House Prices 예측 #6 - 하이퍼파라미터 튜닝으로 성능 극대화

반응형

이전 에피소드에서 XGBoost와 LightGBM 모델을 기본 파라미터로 적용해봤습니다.
이번에는 이들 모델의 성능을 GridSearchCV를 활용한 하이퍼파라미터 튜닝을 통해 더욱 향상시켜보겠습니다.


🛠️ 1. 사용할 도구 불러오기

from sklearn.model_selection import GridSearchCV, KFold
import lightgbm as lgb

✅ 2. LightGBM 파라미터 튜닝 예시

lgb_model = lgb.LGBMRegressor(objective='regression', random_state=42)

param_grid = {
    'num_leaves': [20, 31, 40],
    'learning_rate': [0.01, 0.05, 0.1],
    'n_estimators': [1000, 2000],
    'max_depth': [3, 4, 5]
}

kfold = KFold(n_splits=5, shuffle=True, random_state=42)

grid_search = GridSearchCV(estimator=lgb_model,
                           param_grid=param_grid,
                           scoring='neg_mean_squared_log_error',
                           cv=kfold,
                           verbose=1)

grid_search.fit(X, y)

📊 3. 최적 파라미터 확인

print("Best Parameters:", grid_search.best_params_)
print("Best RMSLE:", np.sqrt(-grid_search.best_score_))

예시 결과:

Best Parameters: {'learning_rate': 0.05, 'max_depth': 4, 'n_estimators': 2000, 'num_leaves': 31}
Best RMSLE: 0.1294

📤 4. 최적 모델로 제출 파일 생성

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

submission = pd.DataFrame({
    'Id': test['Id'],
    'SalePrice': np.expm1(preds)
})

submission.to_csv('submission_lgb_tuned.csv', index=False)

🧠 튜닝 전략 팁

  • 파라미터 후보군이 클수록 시간이 오래 걸리므로 RandomizedSearchCV로 대체 가능
  • 중요한 하이퍼파라미터:
    • num_leaves: 모델 복잡도 조절
    • learning_rate: 낮을수록 학습 속도 느리지만 일반화 좋음
    • n_estimators: 트리 개수, 과적합에 영향

✅ 정리

  • LightGBM 튜닝을 통해 RMSLE 기준 점수 대폭 개선
  • 실전 캐글에서도 파라미터 튜닝은 순위 상승의 핵심 전략

➡️ 다음 편에서는 전체 과정을 요약하며 회고하고, 다른 데이터셋 도전 또는 앙상블 기법으로 확장하는 방향을 소개하겠습니다 🙌

반응형