분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
Private 7위, Private 점수: 5.0278 , LSTM
LSTM과 1스텝교차검사(One-step Ahead Cross-validation)을 이용하여 분석하였습니다.
[목차]
1. 필요 라이브러리 다운 및 코랩 마운트
2. 데이터 불러오기(1차, 2차)
3. 전처리
4. 학습
5. 시각화
6. 제출파일 만들기
[핵심기법]
-LSTM
var, prophet, SARIMA정도를 생각했는데, 개인적으로 분석할때 가장 정확도가 좋았던 딥러닝 기법을 사용하기로 하였습니다.
값을 예측하는데는 일주일 단위로 영향을 주는것이 합리적이라고 생각했습니다.
따라서 sequence를 7로 하여, n일을 예측하기 위해 (n-7~n-1)의 데이터를 사용하였습니다.
-1스텝 교차검사(One-step Ahead Cross-validation)
데이터를 순차적으로 하나씩 예측해나갔습니다.
train set(2020-09-09일~X일)으로 모델을 학습시키고 해당 모델로 (X+1일)의 값을 예측합니다.
그리고 제가 예측한( X+1일)값을 train set에 추가합니다.
이후 X+1의 값이 추가된 train set(2020-09-09~X+1)으로 새로운 모델을 학습시키고 해당 모델로 (X+2)의 값을 예측합니다.
위 수행을 예측해야 할 데이터의 개수 31개 (2020-12-09~2021-01-08) 만큼 반복했습니다.
초기에 예측이 잘못되면 연쇄적으로 정확도가 안좋아질 수 있는 위험이 있지만,
주어진 데이터가 단순한 편이라 그부분은 감수하고 위와같이 수행하였습니다.
* (https://robjhyndman.com/hyndsight/tscv/) 해당 사이트에 1스텝 교차검사의 설명이 있습니다. 참고하시기 바랍니다.
[소감]
최근에 시계열 데이터분석 공부를 하고있었는데 실습해 볼 기회가 생겨서 좋았습니다.
앞으로 더 많은 시계열데이터 분석 대회가 열렸으면 좋겠습니다!
모두 수고하셨습니다.
몇가지 질문이 있어서 댓글 남깁니다.
1. Validation 은 혹시 따로 진행하시지 않고 train 만 진행하신건가요? 그렇다면 lstm layer, window size 등 최적의 값을 어떻게 튜닝하신건지 궁금합니다.
2. Train 진행하신 방식이 모델로 예측한 값을 다시 train 데이터에 넣은 후 새로운 train set으로 다시 그다음 값을 예측하는 구조가 맞나요?
1. 데이터셋이 많지 않다고 판단하여 validation set을 따로 두지않았습니다. varience보단 bias를 줄이기 위한 전략이였습니다. (대신 drop out 비율을 0.3으로 좀 크게주어서 최대한 오버피팅을 방지하려고 했습니다.)
layer의 구성 및 기타 하이퍼파라미터 설정은 비슷한 크기의 데이터셋을 분석한 여러 다른 lstm모델들을 참조했습니다. 이때 최대한 오버피팅을 피하기 위해 epoch 및 layer의 개수는 다른 모델들 보다 작게 조절했습니다.
2. 맞습니다!
정말 저에게 필요한 코드였는데, 정말 감사합니다! 잘봤습니다~!
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
잘봤습니다. 코드공유 감사합니다