Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
49
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@namakemono

Prophetで遊んでみる

どういう話かというと,時系列解析は色々ややこしくて良くわからないけど,とりあえずデータは持っているので試してみたいといったときにオススメのライブラリProphet1 2の紹介です.

Prophetとは

  • Facebook謹製の時系列解析ツール
  • 時系列解析に詳しくなくてもデータを突っ込むだけで解析してくれる.
  • RとPythonで使える.

性能を発揮させやすい条件

  • 数ヶ月(可能なら1年)の時系列データがある
  • イベントのタイミングは既知

すごいところ

  • 欠損値や異常値があっても大丈夫
  • 傾向の変化にも対応してくれる.
  • 熟練した分析者と同程度の性能をデフォルト値で出せたこともある.
  • 時系列解析が苦手な人でも使える.

Prophetの仕組み

下記4つの重ね合わせによって予測.

  • 自動検出した傾向の変化点
  • 年間の大まかな流れ
  • 週ごとの流れ
  • ユーザー提供のイベント情報

インストール

pip install fbprophet

チュートリアル

アメフト選手のペイトン・マニング氏3のWikipediaの将来のページ閲覧数の予測を題材としています.

wget https://raw.githubusercontent.com/facebookincubator/prophet/master/examples/example_wp_peyton_manning.csv
import pandas as pd
import numpy as np
from fbprophet import Prophet
df = pd.read_csv('../examples/example_wp_peyton_manning.csv')
df['y'] = np.log(df['y'])
df.head()

学習

データをもとに学習する.

m = Prophet()
m.fit(df);

予測データの準備

将来365日分とか出したかったら下記のように書く.

future = m.make_future_dataframe(periods=365)
future.tail()

image.png

予測結果の表示

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

image.png

将来の予測推移

m.plot(forecast);

image.png

成分ごとの表示

m.plot_components(forecast);

image.png

次の記事 「Prophetでビットコインの価格推移を予測してみる」です.

References


  1. Taylor, Prophet: forecasting at scale, 2017. 

  2. facebookincubator, prophet 

  3. Peyton Manning 

49
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
49
Help us understand the problem. What is going on with this article?