Re:ゼロから始めるML生活

どちらかといえばエミリア派です

Prophetでお手軽時系列分析をやる

f:id:nogawanogawa:20201015115435p:plain

最近時系列分析を勉強し直してました。

www.nogawanogawa.com

この過程で調べてると、何やらProphetなるライブラリがあるようで、今回はそれを使ってみたのでそのメモです。

Prophet

Prophetのページはこの辺です。

facebook.github.io

早い話が、時系列予測に関するライブラリです。 プログラミング言語としてはPythonやRで提供されています。

時系列分析をやったことがある方だとわかるかと思いますが、クラシカルな時系列分析ってかなり数式でモデリングしていくんですが、 Prophetではその大変な部分が隠蔽されている感じです。

というわけで、非常に簡単に使えるというところがポイントになります。

Prophetで想定しているモデル

Prophetでは、時系列データを下記のようにモデリングされているようです。

 y = Trend(t) + Seasonality(t) + Event(t) + other

解釈が正しいかちょっと怪しいですが、Holt法で要素の分解した上で、それに対してイベントの要素を加えたもののようなイメージです。

使ってみる

何はともあれ、とりあえず使ってみたいと思います。

航空機の乗客数

まずは、定番をやってみたいと思います。 航空機の乗客数のデータについて対象についてやってみたいと思います。

非常にシンプルなコードで記述できることが分かるかと思います。 この点は非常にメリットかと思います。

一方で、複雑なモデルはProphetでは記述できないという問題があります。 先に書いた通りの式が前提にあるため、その式を逸脱するようなモデルについては記述できません。

良くも悪くも、シンプルなモデルをささっと記述するという点に特化したツールのように思います。

参考文献

下記の記事を非常に参考にさせていただきました。

www.atmarkit.co.jp

mikiokubo.github.io

deepblue-ts.co.jp

data.gunosy.io

qiita.com

感想

こちらの本を読んでいて、ちらっと書いてあったProphetについて使ってみた感じです。

非常に簡単に使えるので、「とりあえず時系列分析するか」ってときの初手としては非常に良いかと思いました。 このあたりを使ってササッと簡単に分析して、なんとなくうまくいきそうだったら状態空間モデルなんかをじっくり実装して、うまく行かなそうだったら全然別の方針(NNとか?)に舵を切る、といった判断に使用するのは非常に良いのかなと思いました。