FacebookのProphetとは
Prophetは、FacebookのCore Data Scienceチームが公開したオープンソースソフトウェアです。時系列データを予測するために、RまたはPythonで利用可能なフレームワークです。特に毎年、毎週ごとの周期性や、休日などの影響を加味したモデルである点が特徴となります。
https://facebook.github.io/prophet/
別のサイトの情報によると、Pythonの機械学習フレームワークのScikit learnと使い方が似ているそうです。
Prophetの特徴
- 正確で早い
- 全自動
- チューニング可能な予測
- RまたはPythonで使用可能
インストール方法
Windows 10 64bitの場合について、説明します。事前に、Prophetが依存するいくつかのライブラリをインストールする必要があります。
まずは、Anacondaをインストールします。(必須ではありませんが、Pythonと、主要なライブラリがインストールされるので、楽です)
Anacondaをインストールしないバイは、個別に、下記ライブラリをインストールする必要があります。
- numpy
- cython
- matplotlib
Anacondaに含まれていないものとして、以下をインストールします。
- PyStan
- C++ Compiler
- libpython
- mingw-w64
まずは、Pystanのインストール。Anaconda Promptから実行します。
> pip install pystan
次に、こちらからC++ Compilerをインストール
http://landinghub.visualstudio.com/visual-cpp-build-tools
そして、libpythonとmingw-w64をインストールします。
> conda install libpython
> conda install -c msys2 m2w64-toolchain
これで、Prophetが依存するライブラリのインストールが完了です。
ようやくProphetをインストールします。pipでもインストールできるそうですが、僕の環境ではうまく行かなかったので、下記のcondaコマンドでインストールしました。
> conda install -c conda-forge fbprophet
Prophetの動作確認
ちゃんとインストールされたか、確認するために、Quick Startのプログラムを動かしてみます。
CSVファイルの入手
下記サイトから分析データをダウンロードします。Wikipediaページの日次訪問者数を分析します。
example_wp_peyton_manning.csv を使用します。
ソースコード
チュートリアルに書いてあるとおりです。グラフは、コンソールで実行しても表示されなかったので、png形式で保存するように書き換えました。
import pandas as pd
import numpy as np
from fbprophet import Prophet
df = pd.read_csv('example_wp_peyton_manning.csv')
# print(df.head())
df['y'] = np.log(df['y'])
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
future.tail()
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
m.plot(forecast).savefig('1.png');
m.plot_components(forecast).savefig('2.png');
こんな短いコードで動くんですね。
予測結果
うまく動いていますね。黒点が過去の実績、青線が将来の予測データのようです。
年毎、週毎の周期性と、トレンドに分けて要素ごとの分析結果を分けて表示することができます。これは面白いですね。
今後にやりたいこと
facebookのProphetはまだまだ細かいチューニングができるそうで、いろいろ試してみたいなと思います。