Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Prophet入門【Python編】Facebookの時系列予測ツール

36 244 vues

Publié le

データ解析・機械学習セミナー 【found IT project #7】発表資料
http://foundit.tokyo/seminar/20170525_03
https://foundit-project.connpass.com/event/56033/

Publié dans : Données & analyses
  • Visit this site: tinyurl.com/sexinarea and find sex in your area for one night)) You can find me on this site too)
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Sex in your area for one night is there tinyurl.com/hotsexinarea Copy and paste link in your browser to visit a site)
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Girls for sex are waiting for you https://bit.ly/2TQ8UAY
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Meetings for sex in your area are there: https://bit.ly/2TQ8UAY
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

Prophet入門【Python編】Facebookの時系列予測ツール

  1. 1. Prophet ⼊⾨【Python編】 Facebook の時系列予測ツール 2017/05/25 牧⼭ 幸史 1
  2. 2. ⾃⼰紹介 •  ヤフー株式会社 データサイエンティスト •  SBイノベンチャー(株) AI エンジニア •  株式会社ホクソエム 代表取締役社⻑ 2
  3. 3. 本⽇の内容 •  Facebook が開発した時系列予測ツール Prophet を紹介 •  R と Python のライブラリがあります https://github.com/facebookincubator/prophet •  本資料では Python 版の使い⽅を説明 3
  4. 4. Prophet とは •  Prophet = 予⾔者 •  時系列予測ツール –  統計知識不要 –  業務知識で精度向上 –  精度評価で品質保証 •  誰でも予⾔者に! 4
  5. 5. ⽬次 1.  モチベーション 2.  デフォルト設定で使ってみる 3.  業務知識を⼊れてみる 4.  統⼀的な評価で品質保証 5.  まとめ 5
  6. 6. 1. モチベーション •  ビジネスにおいて様々な時系列データの 将来予測は重要 •  例: 売り上げ予測 6
  7. 7. ビジネス時系列の予測 •  精度の良い予測をしたい •  必要なスキル –  統計モデル (ARIMA, 状態空間モデル, etc.) –  ドメイン知識 (季節性, イベント, etc.) •  両⽅を兼ね備えた⼈材はほとんどいない ⇨ ⾼品質な予測は⾼コスト 7
  8. 8. 課題 •  ⼤量のビジネス時系列データ •  ⾼品質な予測が欲しい •  コストは抑えたい ⇨ 予測のスケール化 8
  9. 9. 分散型によるスケール化 9 集中型 分散型 統計専⾨家 Prophet 予測 予測 予測 予測 予測 予測
  10. 10. 分散型予測の問題点 •  予測を作る⼈たちに統計の知識がない •  パラメータ調整による精度向上が難しい •  予測の品質が⼀定でなくバラバラになる 10
  11. 11. Prophet の要件 •  ドメイン知識を持つ⼈   が ①  統計の知識なしで予測を作成できる ②  ドメイン知識を⼊れて精度向上できる ③  品質を保つための統⼀的な評価⽅法 11
  12. 12. 1. まとめ •  ビジネス時系列の予測は重要 •  専⾨家による集中型予測は⾼コスト •  分散型予測により予測を低コスト化 •  Prophet は分散型予測に必要な3つの条件 を備えたツール 12
  13. 13. ⽬次 1.  モチベーション 2.  デフォルト設定で使ってみる 3.  業務知識を⼊れてみる 4.  統⼀的な評価で品質保証 5.  まとめ 13
  14. 14. 2. デフォルト設定で使ってみる •  Prophet の要件①: 統計の知識なしで予測を作成できる ⇨ デフォルト設定でいい感じの予測 14
  15. 15. インストール •  pip でインストール可能 $ pip install fbprophet •  pandas と pystan を同時にインストール ※ ⾮常に時間がかかる場合があります ※ numpy と matplotlib も最新版にが吉 ※ Windowsではpystanを先にinstallが吉 15
  16. 16. 本発表のデータ •  GitHub 上のデータを使⽤します •  https://github.com/facebookincubator/ prophet/tree/master/examples •  Wikipedia •  ペイトン・マニング •  アメフト選⼿ •  ⽇次ページビュー数 16
  17. 17. データの読み込み ds y 0 2007-12-10 9.590761 1 2007-12-11 8.519590 2 2007-12-12 8.183677 3 2007-12-13 8.072467 17
  18. 18. データの読み込み •  3000⽇分の時系列データ 18
  19. 19. 予測モデルの作成 •  scikit-learn の機械学習モデルと同様 •  オブジェクト⽣成 → 学習(フィッティング) 19
  20. 20. 予測期間の指定 •  ⼀年(365⽇)の空のデータフレームを⽤意 ds 3265 2017-01-15 3266 2017-01-16 3267 2017-01-17 3268 2017-01-18 3269 2017-01-19 20
  21. 21. 予測の作成 ds yhat 3265 2017-01-15 8.213787 3266 2017-01-16 8.538876 3267 2017-01-17 8.326293 3268 2017-01-18 8.158930 3269 2017-01-19 8.170898 21
  22. 22. 予測のプロット •  plot() メソッドで簡単にプロット 22
  23. 23. 予測のプロット 23 予測
  24. 24. 2. まとめ •  Prophet はデフォルト設定でいい感じの予測を 作成でき、可視化までできる! 24
  25. 25. ⽬次 1.  モチベーション 2.  デフォルト設定で使ってみる 3.  業務知識を⼊れてみる 4.  統⼀的な評価で品質保証 5.  まとめ 25
  26. 26. 3. 業務知識を⼊れてみる •  Prophet の要件②: ドメイン知識を⼊れて精度向上できる ⇨ 分かりやすい調整パラメータ 26
  27. 27. 予測モデル •  従来の予測モデル(⽣成モデル) –  データがどのように発⽣するかを考える –  パラメータの意味が分かりにくい (例: ARIMA の移動平均や⾃⼰回帰の次数) •  Prophet –  予測を曲線フィッティングの問題と考える –  パラメータが直感的に理解できる 27
  28. 28. 予測モデル •  時系列 = トレンド + 周期性 + イベント 28
  29. 29. 29 = + トレンド 周期性 時系列データ
  30. 30. 予測モデル •  時系列 = トレンド + 周期性 + イベント •  パラメータが直感的に理解できる •  調整可能なパラメータ ①  線形トレンド or ⾮線形トレンド ②  変化点、変化点の数 ③  週周期と年周期 ④  イベント 30
  31. 31. ① トレンドの選択 •  線形トレンド ’linear’ •  ⾮線形トレンド ʻlogistic’ 31
  32. 32. トレンドの選択 •  ⾮線形トレンド –  ビジネス時系列は基本的に⾮線形トレンド –  成⻑上限(キャパシティ)が決まっている 例: ユーザ数の予測では Web⼈⼝が上限 •  線形トレンド –  成⻑初期段階では線形で近似できる –  Prophet のデフォルトは線形 32
  33. 33. ⾮線形トレンドの指定 •  growth=’logistic’ を指定 •  df[’cap’] に上限(キャパシティ)を指定 33
  34. 34. ⾮線形トレンド •  例: Wikipedia の R のページビュー 34
  35. 35. ② 変化点の指定 •  新機能のリリースなどでトレンドが変化 •  変化点の指定が可能: changepoints=⽇付の配列 35
  36. 36. 36 = + トレンド(変化点あり) 周期性 時系列データ
  37. 37. 変化点の数を指定 •  等間隔に変化点を置いて推定 n_changepoints=変化点の数 •  変化点は指定した数だけ出⼒されるが、 変化量が微⼩なら変化点とみなさない ⇨︎ 変化点の⾃動検出 37
  38. 38. ③ 週周期と年周期 •  ビジネス時系列は⼈の⾏動に影響される •  週周期と年周期が重要 •  週周期: –  ⼈の⾏動は曜⽇によって変わる (平⽇ or 休⽇) •  年周期: –  ⼈の⾏動は季節によって変わる (年末年始など) 38
  39. 39. 週周期と年周期の指定 •  それぞれの周期を考慮するか指定できる weekly_seasonality=True/False yearly_seasonality=True/False •  デフォルトは ’auto’ 39
  40. 40. ④ イベント効果 •  不定期に発⽣するイベントの影響を考慮 して予測を作成したい •  イベントの例: –  祝⽇、キャンペーン、テレビCM 40
  41. 41. イベント効果 •  イベント⽇を列挙したデータフレームを ⽤意する 41 holiday ds lower upper 24時間テレビ 2015-08-22 0 1 24時間テレビ 2016-08-27 0 1 24時間テレビ 2017-08-26 0 1 クリスマス 2015-12-25 -1 0 クリスマス 2016-12-25 -1 0 クリスマス 2017-12-25 -1 0
  42. 42. イベント効果 •  イベント⽇のデータフレームを渡す holidays=event_dataframe 42
  43. 43. 例: イベント効果 •  Wikipedia ページビュー •  ペイトン・マニング •  アメフト選⼿ •  イベント: 「アメフトリーグの決勝戦の⽇」 43
  44. 44. イベント効果なし 44 決勝の⽇は モデルから ⼤きく外れる
  45. 45. イベント効果を考慮 イベント効果 として処理 次の決勝戦
  46. 46. 3. まとめ •  Prophet の予測モデル: 時系列 = トレンド + 周期 + イベント •  パラメータが直感的に理解できる –  トレンド、変化点、周期、イベント –  ドメイン知識により調整可能 •  パラメータ調整により精度向上できる 46
  47. 47. ⽬次 1.  モチベーション 2.  デフォルト設定で使ってみる 3.  業務知識を⼊れてみる 4.  統⼀的な評価で品質保証 5.  まとめ 47
  48. 48. 4. 統⼀的な評価で品質保証 •  Prophet の要件③: 統⼀的な予測精度の評価 ⇨ MAPE と SHF 48
  49. 49. 統⼀的な評価 •  なぜ統⼀的な評価が重要か? •  分散型予測 •  各⼈がそれぞれで予測を作成する ⇨ 予測の品質がバラバラになる •  これらの予測の品質を⼀定に保ちたい 49
  50. 50. 平均絶対パーセント誤差 •  MAPE (Mean Average Percent Error) •  予測値が実績値から何パーセント外れて いるかを表す ⇨ 異なる単位の予測を⽐較できる 50
  51. 51. 平均絶対パーセント誤差 •  どうやって求めるか? ⇨ Simulated Historical Forecast を提案 51
  52. 52. Simulated Historical Forecast 52 訓練データ テスト
  53. 53. Simulated Historical Forecast 53 訓練データ テスト 全期間 複数の期間における予測誤差を出す
  54. 54. Simulated Historical Forecast •  n ⽇先の予測に対して m 個の誤差 (⿊点) •  平均誤差を局所多項式回帰で求める (⻘線) 54
  55. 55. SHF の実⾏ •  Prophet には SHF は実装されていない •  ただし、実装は難しくない •  今回は⾃分で実装 •  ペイトン・マニングデータのデフォルト 予測とイベントを考慮した予測を⽐較 55
  56. 56. •  デフォルト設定(⾚線)よりもイベントを考慮した ⽅(⻘線)が予測精度が良い •  250⽇以降は予測精度が急激に悪くなる 56
  57. 57. 4. まとめ •  統⼀的な精度評価⼿法を説明 •  分散型予測の品質を保つため •  平均絶対パーセント誤差 (MAPE) •  Simulated Historical Forecast を提案 57
  58. 58. ⽬次 1.  モチベーション 2.  デフォルト設定で使ってみる 3.  業務知識を⼊れてみる 4.  統⼀的な評価で品質保証 5.  まとめ 58
  59. 59. まとめ •  Prophet は時系列予測ツール •  次の特徴を持つ –  デフォルト設定でいい感じの予測を作成 –  ドメイン知識によって精度改善 –  SHF によって統⼀的な精度評価 •  分散型予測で利⽤可能 59
  60. 60. Prophet の使い⽅ ①  ⼤量のビジネス時系列に対してデフォル ト設定で予測を作成 ②  SHF による評価で順位を付け、悪い⽅か ら順番にドメイン知識で精度改善 ③  それでも悪ければ専⾨家が予測を⾏う ⇨ 限りあるリソースの有効活⽤ 60
  61. 61. 参考⽂献 •  Sean J. Taylor and Benjamin Letham, “Forecasting at Scale”, 2017 61

×