월간 데이콘 주식 종료 가격 예측 Pre Competiton (with.데이커)

알고리즘 | 정형 | 회귀 | 금융 | NMAE

  • moneyIcon Prize : DACON RANKING POINT, XP
  • 451명 마감
Closed

 

가디, 3주차, Private 4위, XGBoost

2021.09.29 16:31 4,477 Views language

안녕하세요. <주식 종료 가격 예측 Pre Competiton> 에 참여한 가디라고 합니다. 데이콘 측에서 재미있는 대회를 열어주셔서 감사합니다!

종목별로 전처리한 부분은 다음과 같습니다.
1. 시계열 분해를 통해 종가 추세와 계절성 데이터를 추가
2. 종가에 대하여 5일, 20일, 60일, 120일, 240일 이동평균을 추가
3. 최종적으로 일주일씩 (business day 기준으로 5일씩) lag features를 생성 (종가 컬럼은 train 데이터와 validation 데이터에서 y값으로 사용하기 위하여 lag 하지 않았고 test 데이터에서는 불필요하기 때문에 drop)

모델링 시 알고리즘은 XGBoost를 사용하였습니다. validation 데이터는 예측 기간의 일주일 전 데이터로 잡았습니다. 
감사합니다.

Code
로그인이 필요합니다
0 / 1000
JJun_HYU
2021.11.05 00:05

안녕하세요, 여쭤보고 싶은 것이 있습니다.
Time series 데이터를 예측할 때 예를 들어서 지난 900일을 통해 앞으로의 90일을 예측한다고 하면
lag를 사용할 수 없지 않나요? train 셋에서 900일에 대한 lag1, lag2 feature을 만들어도 앞으로의 90일 (test set)은 lag feature을 만들 수 있는 정보가 없을 것 같아서요.

코드를 참고해서 공부해보다가 헷갈려서 여쭤봅니다 ㅠ

LimHJ
2021.11.05 22:52

안녕하세요. 예측 대상인 test set의 기간은 미래 시점의 일주일치(business day 기준으로 5일치)입니다. 이에 대하여 train set에 존재하는 정보들을 일괄적으로 일주일씩(business day 기준으로 5일씩) lag 해주는 방식을 사용했기 때문에 test set에 대한 정보가 없더라도 train set의 정보만으로 features 구성이 가능합니다. 

JJun_HYU
2021.11.13 16:51

답변 감사합니다. 그럼 test set에 대해서 seasonal_decompose를 통해 feature를 구성할 때도, test set의 target값은 알 수 없어 seasonal_decompose를 할 수 없으니, 이를 5일치를 lag한 column에 대해 진행한 것인가요?

LimHJ
2021.11.16 15:59

네. test set의 target값을 알 수 없기 때문에 test set의 일주일 전인 train set의 target을 사용하여 seasonal decomposition을 해준 것이 맞습니다. 그런데 좀 더 정확하게는 train set의 target을 lag하여 seasonal decomposition을 진행한 것이 아니라, train set에서 seasonal decomposition를 통해 얻은 trend와 seasonal features를 lag하는 방식으로 진행하였습니다.