HD현대 AI Challenge

알고리즘 | 채용 | 정형 | 조선해양 | 회귀 | MAE

  • moneyIcon Prize : 2,000만 원
  • 1,614명 마감

 

[Private 37th] AutoML(mljar) + XGBoost + Optuna + log1p

2023.11.05 13:25 1,867 Views language

다른 분들이 공유해주신 코드를 보면서 여러 아이디어에 감명을 받았습니다. 
점수가 높은 편은 아니나, 저도 아이디어 공유 차 용기 내어 코드를 공유해봅니다.

사고의 흐름:
1. 적합한 모델 탐색 -> AutoML을 사용하여 성능 좋은 모델 탐색, 선정된 모델을 대상으로 정밀한 학습 진행
2. 데이터 전처리 -> 중요도 값이 높은 기온 데이터에 대해 AutoML을 사용하여 보완, 나머지 데이터들은 최빈값/중위값으로 fillna
3. "CI_HOUR"값은 skew 되어 있음 -> log1p 처리 후 학습 (*소폭의 성능 향상)
4. 성능 향상을 위한 feature 추가 -> "holiday"를 각 나라별로 판단하여 추가하였으며, 데이터에 없는 나라는 미국 holiday로 대체
5. 앙상블로 성능 향상 -> LGBM, XGB, CAT 중 모델을 선정 (* jinwook2 님이 공유해주신 "random seed를 달리 하는 방법"으로 했어도 좋았을 것 같습니다: https://dacon.io/competitions/official/236158/codeshare/9154?page=1&dtype=recent)
6. 앙상블 모델 선택 -> Optuna로 튜닝 후 중요도를 확인해보니, LGBM은 U/V_WIND의 중요도가 높게 나오고, CAT는 MAE 사용 시 GPU 미지원 (*최종 XGBoost 선정)
7. XGB에서 "SHIP_TYPE_CATEGORY"의 중요도가 확연히 높음 -> 선종 별로 학습해 보니 스코어가 45점대->43점대로 향상
8. 최종적으로 AutoML 및 XGB를 각각 사용하여 각 선종 별로 예측을 진행 후 앙상블 진행

실패했던 부분:
1. DNN 수기 설계: 제일 성능이 좋았던 모델도 XGB 성능과 유사하나, 시간 투입 과다
2. Auto-Keras: 투입 시간 과다로 중도 포기
3. 새로운 feature 일괄 생성 및 중요도 판단: 한꺼번에 너무 많은 feature를 생성한 탓인지 중요 feature를 뽑아서 적용해도 효과 미미

Code
로그인이 필요합니다
0 / 1000
JCG5728
2023.11.12 20:27

기존 코드에서 XGBoost로 예측하는 부분의 출력이 과다하여 가독성이 떨어져서, 출력결과를 삭제 후 재업로드 했습니다.