본문 바로가기

Theory/MachineLearning

주가 예측? 나도 해보자~ Forecast 수행에 적합한 Prophet

제목은 좀 자극적(^^)이지만, 오늘은 시계열(Time Series) 데이터를 대상으로 예측(forecast)한 결과를 손쉽게 보여주는 prophet이라는 아이를 소개할까합니다. 개발된지 반년쯤 된 따끈따끈한 아이입니다. 그리고 페이스북의 Core Data Science 팀에 의해 개발되고 공개된 아이입니다. 벌써 신뢰가 팍팍 가죠?^^ 그들 홈페이지[바로가기]에 있는 소개 내용을 가져오면

Prophet is a procedure for forecasting time series data. It is based on an additive model where non-linear trends are fit with yearly and weekly seasonality, plus holidays. It works best with daily periodicity data with at least one year of historical data. Prophet is robust to missing data, shifts in the trend, and large outliers. Prophet is open source software released by Facebook's Core Data Science team. It is available for download on CRAN and PyPI.

입니다. 아무튼 시계열 데이터 예측을 겁나게 잘 해주겠다는 이야기죠. 그런데 이 아이를 설치하는 것은 조금 오래 걸립니다. 일단 윈도우 유저라면 Visual Studio C++ Build Tool[바로가기]을 설치해야 하구요. 그 다음

  • pip install stan
  • pip install fbprophet

이렇게 설치해야 합니다.

뭐 바로 본격적으로 시작해보죠~

아.. 그리고 pandas의 버젼 문제가 있습니다. 0.19인지 0.20인지를 기준으로 좀 바뀌는게 있어요...

그래서 pandas의 일부 모듈을 버젼을 체크해서 읽도록 바꿉니다.

이건... [바로가기]에서 이야기한 적이 있는데... 구글이 제공하는 코스피 주식 정보를 pandas에서 읽는 겁니다. 기아자동차의 주식정보를 가지고 왔습니다.

날짜를 좀 끊어서 16년 12월 31일 데이터만 사용해 보도록 하겠습니다.

종가(Close)와 시간을 별도로 저장하고

그저, Prophet으로 fit을 시키면 그만입니다. 그 다음 365일간의 예측을 보고 싶다고 하는거죠^^

그러면 이렇게 결과가 나옵니다.

예측한 다양한 결과값을 가지고 있어서 별도로 plot할 떄 유용합니다만 지금은 그냥 기본만 사용하죠~

처음 기아자동차의 주가입니다.

짜잔~ 예측한 결과입니다. 검은 반점이 원 주가... 파란 실선이 예측값, 엷은 파란색의 범위가 유효 범위입니다.

거기에 대한 추가 정보를 줍니다. 일단 trend를 예측 포함해서 알려주구요. weekly나 yearly 정보도 제공합니다.

이 데이터는 [바로가기]에 있는 데이터를 이름만 살짝 바꾼것입니다. 이 데이터는 로그모양으로 증가하는데요 이것도 예측가능합니다.

이렇게 말이죠^^

또.. 요런것도 됩니다.

이건 특정한 이벤트(슈퍼볼)로 인해 피크 그래프 모양인 데이터를 예측하는 것입니다.

크게 어려운건 없습니다. 워낙 잘 만들어져서 말이죠^^

이렇게 예측하고 있네요^^

이 모듈을 사용하면 통계 전공자가 해야할 일 말고, 그저 예측 결과를 확인하거나 참조하고 싶을때 딱~ 쓰기 좋을 것 같습니다.^^

반응형