딥 러닝으로 닛케이 평균을 예측 <2> ~시계열 예측 AI Prophet 이용~

지금까지의 노력



이전 딥 러닝으로 닛케이 평균을 예상해보기의 게시물에서는 Google TensorFlow와 keras를 사용하여 LSTM이라는 기법으로 닛케이 평균을 예측하려고했지만 잘 예측할 수 없었습니다.
잘 안 갔다는 것은 유감이었지만 Google TensorFlow와 keras를 사용하면 데이터 과학자가 아닌 초보자도 특히 수학 지식이 필요 없으며 쉽게 딥 러닝을 사용할 수 있다는 것을 알았습니다.

이번에 하고 싶은 일



Google TensorFlow는 다양한 분야에서 사용하려는 범용 딥 러닝 라이브러리였습니다. 이번에는 이 TensorFlow가 아니라 Facebook이 공개하고 있는 시계열 데이터 예측을 위한 인공지능 라이브러리 Prophet을 사용하여 닛케이 평균을 예측해 보겠습니다.

Facebook Prophet이란?



"Tools that help analysts to use their expertise most
effectively enable reliable, practical forecasting of business time series."

Prophet은 신뢰할 수 있고 실용적인 비즈니스 시계열 예측을 가장 효율적으로 쉽게 만드는 도구라고합니다.
또한 비즈니스에서의 사용을 가정하기 때문에 분석가의 전문 지식을 반영하거나 조정할 수 있도록 설계된 것 같습니다.

Prophet에 대해 자세히 알아보기:
Prophet 입문【Python편】Facebook의 시계열 예측 툴
【Day-13】『Prophet 입문』 간단하게 고정밀도를 실현하는 Facebook 근제의 시계열 예측 라이브러리
Prophet Quick Start

Prophet을 이용한 닛케이 평균 예측



물건은 시도하고, 빨리, Prophet를 사용해 봅시다.

닛케이 평균 데이터 취득



Yahoo!Finance로부터 지난 5년분의 닛케이 평균 데이터를 취득합니다. (CSV File 형식)
Yahoo!Finance Nikkei 225 (^N225)

Prophet을 사용하여 예측하는 코드



Prophet 코드는 TensorFlow 및 keras 코드보다 훨씬 짧습니다.
(그만큼 내용은 거의 블랙 박스군요...)

nikkei.py
import pandas as pd
import numpy as np
from fbprophet import Prophet

df = pd.read_csv('^N225.csv') #日経平均のCSVを読み込み
# print(df.head())

df2 = df.loc[:, ['Date', 'Close']] #日付と終値を抽出
df2 = df2.rename(columns={'Date': 'ds', 'Close': 'y'}) #系列名をds, yに変更 
# print(df2.head())

df2['y'] = np.log(df2['y']) # logで正規化

m = Prophet()
m.daily_seasonality = True #オプション
m.fit(df2) 

future = m.make_future_dataframe(periods=180) #180日将来まで予測
future.tail()

forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()

m.plot(forecast).savefig('n1.png') #予測結果のグラフをpngファイルで保存
m.plot_components(forecast).savefig('n2.png') #予測結果のグラフをpngファイルで保存

예측 결과



180일 앞까지의 닛케이 평균 예측 결과입니다. 좀처럼, 그런 주가가 예측되고 있습니다.
중앙의 청선에 따르면, 반년 후의 주가는, 연초의 최고치 부근까지 상승할 가능성이 높다고 할까요. 그러나 변동이 매우 크므로 예측의 정확도는 낮다고 할 수 있습니다.


Prophet은 예측 결과를 추세와 연도, 주간 주기로 나누어 분석해 줍니다. 트렌드는, 2017년 이후는 상승 트렌드, 년의 주기에서는, 연말 연시는 주가가 오르기 쉽다고 하는 분석 결과가 나오고 있군요.


요약



Facebook의 Prophet은 LSTM을 사용한 분석보다 훨씬 타당한 것처럼 보이는 분석 결과를 내는 것 같습니다. 과연, 시계열 분석에 특화된 툴이라고 말할 뿐이군요. Prophet의 내용이 어떻게 되어 있는지도 신경이 쓰였습니다.
덧붙여 이 주가 예측이 있을지 어떨지는, 또 반년 후라고 하는 것으로,,,

좋은 웹페이지 즐겨찾기