[ML Study 2022] 7주차

Everafter·2022년 11월 27일
0

ML Study 2022

목록 보기
8/10

PROBLEM

Problem info

competition

팔당댐 홍수 안전운영에 따른 한강 수위예측 AI 경진대회

Theme

Time Series Regression

metric

RMSE

Notes

  • 팔당댐 유입량, 저수량, 공용량 등의 데이터를 바탕으로 6월 1일 00시부터 7월 18일 23:50분까지의 청담대교, 잠수교, 한강대교, 행주대교의 수위를 예측하는 time series forecating 문제입니다 (데이터셋 설명) ⇒ dataset을 보시면 6월 1일부터는 수위 데이터 값들이 다 0으로 처리되어 있습니다
  • time step은 10분 단위이며 데이터셋 크기는 31.6MB, 칼럼 수는 14개로 모델링을 하는 데 어려움은 없으실 것 같습니다
  • missing value가 없진 않은 편이나(1개 컬럼은 매우 많습니다), 모두 평범한 numerical 데이터라 feature engineering 보다는 모델링에 집중하시면 될 것 같습니다
  • 외부 데이터, pre-trained model 모두 사용가능합니다. 실제로 수상한 팀들도 대부분 외부 데이터를 활용한듯 합니다
  • classical한 ML기법(ARIMA, VAR 계열, Boosting, Gaussian Process) 뿐만 아니라 DL 기반(LSTM, TCN, spacetimeformer)의 모델도 사용하셔도 좋습니다

refer

  • [코드공유] → ML/DL 모델 코드가 몇 가지 공유되어 있으니 참고하시면 좋을 것 같습니다
  • [spacetimeformer] → transformer 기반의 시계열 모델입니다
  • [Deep Learning for Time Series Forecasting] ⇒ 코드와 함께 다양한 DL 모델을 소개하고 있습니다
  • [ARIMA] → univariate model이므로 이번 competition과는 무관하나 가장 기본적인 개념이므로 참고하시면 좋을 것 같습니다
  • 다른 대회에 비해 참고할만한 코드들이 많이 공유가 되어 있으니 적절하게 참고하셔서 하시면 되겠습니다

Review

  • 팔당댐의 유입량, 저수량, 각 대교들의 수위, 유량, 강수 데이터를 기반으로 각 대교의 수위를 예측하는 time series forecating 문제다.
  • Column이 많지는 않다. 다만 예측해야 하는 feature가 4개다.
  • Correlation 및 기타 통계량을 보면 유량, 수위의 데이터는 대체로 비슷한 경향성을 갖는다.
  • 결측치가 꽤 있었다. Interpolation(method=time)의 imputing을 하면 최선이나, 예측 데이터에 대해선 적용이 data leakage로 인해 불가능하다. 따라서 train data로 fit한 mean imputing 따위를 사용해야 한다. 이를 고려하지 않은 코드가 꽤 많았다. Interpolation(보간법)은 해당 row의 앞뒤 데이터를 꺼내쓰게 되므로 시계열 관점으로도 미래로부터 과거 예측이 되므로 옳지 않고, 애초에 test data를 이용해 fit을 하는것 부터 data leakage가 된다.
  • 결측치 비율이 5%를 넘어가는 column은 과감히 drop했다. 추후 알게되었지만, 결측치가 연속하여 발생하여 impute 성능이 저하되었고 이 column과 거의 유사한 경향을 가지는 column이 존재했기 때문에 성능에 큰 영향은 없었다.
  • Outlier 탐색을 했을 때 튀는 값이 몇 개 있어 값을 지우고, interpolation imputing으로 값을 채웠다.
  • 1년을 기준으로 주기성이 뚜렸하게 드러나는 데이터라 시계열 모델 적용에 큰 문제는 없다. 어떤 더 성능 좋은 모델을 선택하느냐의 문제였던 것 같다.
  • NN계열 방식의 접근도 있었으나, 아직 생소하여 시도해보진 못했다. 기존 boosting기법을 사용했다.
  • 같은 feature에 대해 '10분 뒤' 값을 새로운 feature로 두는 기법이 꽤 general했다. 허나 아직 납득이 되지 않아 시도하진 않았다.
  • LGBM이 시간, 성능 면에서 가장 효율적이었다. 'year', 'month', 'day', 'hour'정도의 feature만 시간 정보로 주었고, scaling 이외의 전처리는 하지 않았다.
  • Skew가 큰 feature가 많았다. 보통 log scale 기법으로 skew를 해결하는데, 왜인지 모르겠으나 유량, 수위에 음수 값이 존재했다. 음수의 정의역까지 고려한 Yeo-Johnson Transformation기법을 새로 알게 되었다.
  • 성능은 boosting으로도 꽤 괜찮은 수준이었다. 허나, ranking에 들기 위해서는 더 많은 feature generationg 및 preprocessing, TCN과 같은 최신 기술의 도입이 불가피한 것 같다.

스터디 논의 내용

Topic

Key concepts of hyperparameter optimization theory and frameworks in ML/DL

Code

Github

0개의 댓글