Automl 라이브러리인 Pycaret
을 이용하여 트리 기반의 모델 LGBM
, XGBoost
,CatBoost
,Random Forest
총 4가지 모델을 사용하여 RMSE
를 기준으로 성능을 비교하였다.
아래 결과에서 LGBM
이 성능과 속도면에서 가장 우수하였고, 이에 LGBM
모델을 튜닝하여 최종 모델을 만들고자 하였다.
MAE | MSE | RMSE | R2 | RMSLE | MAPE | TT (Sec) | |
---|---|---|---|---|---|---|---|
lightgbm | 0.7712 | 1.8458 | 1.3581 | 0.9995 | 0.0041 | 0.0024 | 1.0140 |
xgboost | 0.9238 | 5.2640 | 2.2922 | 0.9985 | 0.0049 | 0.0027 | 0.7280 |
rf | 1.1283 | 16.4080 | 4.0224 | 0.9952 | 0.0119 | 0.0035 | 3.4920 |
catboost | 2.1439 | 61.0847 | 7.8128 | 0.9822 | 0.0132 | 0.0057 | 4.4220 |
EDA에서 확인했듯이 홍수기가 갈수기보다 평균 수위가 높았고, 이를 반영하기 위해서 3가지 방식으로 모델을 학습하며 비교하였다.
또한 LGBM
은 하이퍼파라미터의 영향을 많이 받는 모델이기 때문에, Optuna
를 이용하여 하이퍼 파라미터 최적화를 진행하였다.
Optuna
에는 검색할 하이퍼파라미터 조합, search space를 지정해줘야 하는데 search space를 무작정 넓게 선정하면 학습 시간이 매우 많이 소모되거나 과적합이 될 수도 있기 때문에 각 학습 방식마다 적절한 parameter search space를 선택하여 이용해 튜닝도 최적으로 하고자 하였다.
비교해본 search space는 아래의 페이지에서 확인하듯이 총 S,M,L로 명칭하여 3개의 조합을 생성했다. 모두 휴리스틱하게 범위를 설정해보았다.
선행시간은 10, 60, 180, 360, 720, 1440분에 예측한 결과를 비교하고자 하였으며,
학습에 필요한 데이터들이 밀린 순서만 다를 뿐 전체적인 데이터의 특성은 동일하기 때문에
선행시간 10분에 대하여 최적의 하이퍼파라미터 조합을 찾고 이 파라미터 조합을 이용하여 각 선행시간별 모델을 학습하였다.(모든 선행시간에 대한 튜닝을 진행하는데는 많은 시간이 소요됨)