GW LABS

에너지 빅데이터 활용 데이터 사이언스 대회 회고 본문

MachineLearning/Competition-Review

에너지 빅데이터 활용 데이터 사이언스 대회 회고

GeonWoo Kim 2019. 11. 2. 12:43

dacon_electricity (1).html
0.31MB

그 동안 머신러닝을 공부해온 지식들을 바탕으로 '에너지 빅데이터 활용 데이터 사이언스 대회'에 참가했다. 대회 문제는 인천 지역의 상가 및 주택들의 시간별 전기 사용량 데이터들이 주어지고, 이를 활용해 미래의 전기 사용량을 예측하는 전형적인 시계열 데이터 문제였다. 대회결과는 private score 37위를 달성했다.

실험해 볼 아이디어들이 많이 남아있는 상태에서 시간관리를 하지 못한 부분이 많이 아쉬움이 남지만, 대회를 통해서 값진 노하우들을 얻을 수 있었다. 사용했던 코드를 업로드하니, 데이터 사이언스 대회에 참가하려는 독자 여러분께 도움이 되었으면 한다.

 

1. 문제이해


시계열 데이터를 이용한 예축 문제의 경우 전형적인 회귀문제이다. 그런데 주어지는 변수는 시간과 시간에 따른 타깃 값밖에 없다. 전력 사용량 말고도 비슷한 문제를 생각해보면 대표적으로 주식 가격을 예측하는 문제가 있다. 이러한 시계열 데이터를 모델링 하는 방법은 통계학에서 아주 유명한 ARIMA 모델이 있다. 시계열의 자기상관과 편자기상관을 이용한 모델링 방법으로, 시계열 분석의 클래식이라고 생각하면 된다. 대회 가이드에서도 ARIMA 모델을 사용한 예제를 올려주었지만 나는 나만의 모델을 만들어보고 싶어 사용하지 않았다.

 

  • Training Data 구조

  • Submission Data 구조

 

2. 접근방법


처음에는 학습 데이터의 패턴을 모두 한 모델에 학습시키기는 방향으로 접근했다. 그런데 예상보다 성능이 더 떨어져서 각 미터별로 학습을 진행하도록 방향을 잡았다. Randome Forest, XGBoost, Light GBM으로 학습 성능과 학습 시간을 고려해서 Light GBM을 선택했다. XGBoost 보다 Light GBM이 튜닝하기 어렵다는 단점이 있지만, 학습 속도는 비약적으로 높기 때문에 Light GBM을 선택했다. (주관적인 경험이므로 참고만 하시길 바란다. 데이터에 따라, 상황에 따라 달라질 수 있는 부분이다.)


시계열 데이터 예측은 기본적으로 과거 데이터를 바탕으로 미래를 예측하는 방식이기 때문에, Feature Engineering으로 새로운 Feature를 생성했을 때 문제가 발생할 수 있다. 또한 데이터에 결측치가 많았기 때문에 나는 테스트 데이터의 평균값을 바탕으로 Feature를 생성해서 모델을 학습시켰다.

 

3. 데이터 전처리 & 특성공학


데이터 전처리의 경우 Tree based model을 선택했을 때의 장점은 Feature Scaling이 필요없다는 부분이 있다. 이 부분을 제외하고 어떤 전처리와 특성공학을 진행했는지 나열하겠다.

  1.  

 

  1. 성공한 특성공학 및 전처리 기법
    1. 시간특성 : 연도, 월, 일, 시간으로 나누어서 특성생성
    2. FFT 특성 : 전력 사용량 값을 FFT 분해
  2. 실패한 특성공학 및 전처리 기법
    1. Seasonal Decompose : 계절, 노이즈, 트렌드로 전력 사용량을 분해했으나, 한 특성에 너무 과도하게 접합이 되어 사용하지 않았다.
    2. Derivatives : 전력 사용량의 고계도 미분값을 특성으로 추가했으나, 마찬가지로 과도하게 접합이 되었다.
    3. ACF, PACF : ACF의 경우 별다른 성능향상이 없었고, PACF의 경우에는 처리 시간이 너무 오래걸려 사용하지 않았다.

 

4. 모델 학습


준비된 데이터를 바탕으로 column 값을 key로, 해당 column 값으로 학습한 모델을 value로한 모델 딕셔너리를 생성했다. 이후 이 모델 딕셔너리를 참조해서 예측값을 생성했다.

 

5. 결과


준비된 데이터를 바탕으로 column 값을 key로, 해당 column 값으로 학습한 모델을 value로한 모델 딕셔너리를 생성했다. 이후 이 모델 딕셔너리를 참조해서 예측값을 생성했다. 결과는 private score 기준으로 SMAPE 37.85088을 달성했다. 

 

 

6. 회고


RNN 모델을 실험해볼 시간이 없어 그 부분이 아쉬움이 남는다. 또 특성공학으로 생성한 특성들이 모델에 어떻게 영향을 줄지 정확한 판단기준이 없었던 것도 시간을 소모하는 병목지점이 되었다. 데이터에 대한 여러가지 가정을 세우고 특성을 생성하는 것은 필수적인 과정이지만, 내 가정이 확실히 모델의 성능향상에 도움이 될지 판단할 수 있는 도구나 이론적 토대를 찾아봐야 할 시간이다.

또한 각 column 값에서 공통적인 패턴을 추출하는 방법도 찾아볼 수 있을 것 같다.

Comments