Facebook の機械学習 ライブラリをためす ~ インストール編 / Trying time series analysis with Facebook machine learning library Prophet - How to install

Facebook の機械学習 ライブラリをためす ~ インストール編 / Trying time series analysis with Facebook machine learning library Prophet - How to install

** Sorry, this note is Japanese only, but please take a look at some code snippets. Hope it helps you.

Google (の、子会社の DeepMind 社)の AlphaGo が韓国の囲碁名人に公式戦で勝利してからはや一年。
そして、機械学習のライブラリ TensorFlow のリリース、と機械学習・人工知能界隈では Google の話題で席巻されてた感がある 2016 年。

でも近年成長著しい Facebook だってがんばってるはず・・・!と、思ってたら今年2月になってとうとう Facebook の機械学習ライブラリが公開されたようです。

参考:Prophet: How Facebook operationalizes time series forecasting at scale(英語記事)

さっそくちょこっと試してみたので、レビューを書いてみます。

Facebook の機械学習 ライブラリ とは?

もしかしたらわたしがしらないだけで他にもあるのかもしれませんが・・・
今回わたしがためしたのは Prophet という今年2月に発表されたオープンソースのライブラリです。
きっかけは Facebook のデータ サイエンティスト Sean J. Taylor という人のこの Tweet 。

この Tweet のリンク先の Facebook 公式サイトによると、時系列データの未来予測をするためのライブラリということですね。
1年分の日次で周期性を持つデータの予測に最も適しているけど、年次・週次の季節性があり、休日も考慮した非線形の時系列データを取り扱うこともできる。また、データの欠損や外れ値やトレンドの変化に強い、とありますね・・・

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 公式サイト より

Stan を使ってる、とも書いてるので予測モデルの構築はベイズ推定を行っているということでしょうか。
ちなみに、Prophet とはもともとオランダ語で「預言者」という意味らしいです( by Google 翻訳先生)。

ところで、時系列データに基づく未来予測って機械学習っていうんでしょうか・・・?そうじゃなきゃなんかタイトルが釣りっぽく見えてしまいますが・・・まあシロートが趣味でやってるのでその辺曖昧です、ゆるして。

冒頭の参考サイトではもう少し詳しく解説されてて、なんでも伝統的な ARIMA というモデル ベースではなく、ベイジアンの思想に基づく一般化加算モデル(原文: Bayesian-influenced generalized additive model )(?)なんだそうです。はい、この辺までくると全くついていけません。
また、このサイトには実際のデータでためした例も掲載されてて、Peyton Manning という人(アメフトの選手らしいです)の Wikipedia のページのページビューを予測した例が掲載されています。

Facebook の機械学習 ライブラリをためす / Trying time series analysis with Facebook machine learning library Prophet

黒い点が実測値で青い線がモデルによる学習と予測( 2016年分を学習に用いて、2017 年分を予測している模様)。たしかに、黒い点はちょいちょい外れ値があるのに、うまく周期性とトレンドを捉えている用に見えます。

Facebook の機械学習 ライブラリ をインストール!・・・しかし ValueError: Failed to parse Stan model ‘anon_model_31bf22a7ga581426araa6fssb448248b40a5a’. Error message: SYNTAX ERROR, MESSAGE(S) FROM PARSER: なるエラーが・・・

このライブラリは、Python 用と R 用がある模様ですが、今回は Python 版をためしてみました。pip でモジュールが提供されているのですが、インストールでコケました・・・
gist.github.com

エラーメッセージの内容がよくわからなくて、さんざん苦労しましたが、依存モジュールの pystan のバグ?っぽくて、pystan を一度消してインストールしなおして、再度 prophet をインストールしたらうまくいきました。

pip install -U pystan  
pip install -U fbprophet  

インストール時のエラーの解消だけで消耗してしまったので続きはまた後日にでも。

機械学習 ・ 人工知能 関連の他の記事

datalove.hatenadiary.jp datalove.hatenadiary.jp datalove.hatenadiary.jp datalove.hatenadiary.jp