Upgrade to Pro — share decks privately, control downloads, hide ads and more …

実践 時系列解析 輪読会 Sec. 13-14

F994a1fd489d95ac93ae9610734a25bc?s=47 Yoichi Tokita
January 27, 2022

実践 時系列解析 輪読会 Sec. 13-14

オライリーから出版された「実践 時系列解析」の輪読会資料です。
ここでは13章「ヘルスケア分野への適用」と14章「金融分野への適用」を解説しています。
https://learn-stats-ml.connpass.com/event/236706/

輪読会でまとめているリポジトリはこちら。
https://github.com/tok41/note_oreilly_time_seriese_analysis

F994a1fd489d95ac93ae9610734a25bc?s=128

Yoichi Tokita

January 27, 2022
Tweet

More Decks by Yoichi Tokita

Other Decks in Science

Transcript

  1. 「実践 時系列解析」 輪読会#7 2022/01/27 @yoichi_t

  2. ⾃⼰紹介 • tokita(@yoichi_t) • 所属:株式会社Glia Computing (https://www.glia-computing.com/) • 2018年8⽉に設⽴(Co-Founder) •

    機械学習/データ分析のPoC、導⼊⽀援、コンサル • 過去 • 広告会社で推薦システムの開発をやっていたり、警備会社で⼈物⾏動 の研究をしてました
  3. ⾃⼰紹介 • tokita(@yoichi_t) • チョコボールの秘密を解明するために、⽇々データを収集&解析 チョコボール 統計

  4. 13章「ヘルスケア分野への適⽤」 • 13.1 インフルエンザ予測 • 13.2 ⾎糖値予測

  5. インフルエンザ予測:問題設定 • ⽬的 • フランスのパリを中⼼とした地域(イル=ド=フランス)のインフル エンザ罹患率の予測 • 翌週のインフルエンザ罹患率を予測する(何の割合なのかは不明) • データ

    • 2004年から2013年の週単位のインフルエンザ報告数(Kaggle) 書籍p.352
  6. インフルエンザ予測:データの確認 • データに対する理解を深める • データを⽬で確認する • ⽋損値/重複の有無。件数の確認。 • プロットして値の範囲、周期性、トレンドの有無が事前知識とあっているか確認 (図13-1,

    p355) • 予測値の範囲の要件(モデル構造)、前処理(階差の必要性、正規化の必要性) • データクリーニング • ⽋損値/重複の有無と取り扱い • 書籍の関⼼地域では⽋損値はなかったが、存在する場合には補完⽅法を検討(2章) • タイムスタンプの作成(2章) • 暦の仕組みの影響で週の数が⼀定しない。このようなデータを除外しても⽬的に沿う モデルができるかは検討
  7. インフルエンザ予測:予測モデル • 2つのモデルを試⾏(ARIMAベース) • ⾃⼰相関を確認(図13-2~5) • データの確認結果から、ラグの期間に注意(年単位の周期性) • 階差をとってACFを確認(季節成分を確認) •

    データの加⼯の仕⽅は恣意的なので分析者の知識と経験に依存¥ • SARIMA(季節性ARIMAモデル) • (p, d, q)(P, D, Q)=(2, 1, 0)(0, 1, 0) • AR(2), 階差1階、季節成分(周期成分)の階差1階(p.358, 図13-4下から) • ARIMA+動的調和回帰 • 季節成分を回帰する別の変数を⽤意 • 周波数解析をして、周期成分を加える • どちらもあまり良いとは⾔えなかった
  8. インフルエンザ予測 • ⽬的に対する理解 • 予測の上振れ/下振れの影響、時間遅れの影響を意識して、何を評価するべき かを考える。 • SARIMAの例では、過⼤な罹患率を予測してしまっているケースが⾒られる(図 13−6, p.361)。

    • 予測の利⽤が「資源の割り当て」に関わるため、過⼤な予測はまずい。 • SARIMAも、ARIMA+動的調和回帰モデルもピーク値に遅れが⽣じている • 周期が厳密に安定していない系(インフルエンザピーク)。動的調和回帰モデルはより厳 密に周期性を仮定するため、この影響が⼤きく出た • 複数のモデルを評価 • 予測結果から、モデルに対する仮定がどの程度あっていたのか確認 • これを利⽤して、データの重要な性質が明確になる • このような作業を繰り返していくことで、モデルの精緻化と問題に対する理解が進む と思う(なので、初⼿は単純な線形的なモデルからスタートするのが良いと思う)
  9. インフルエンザ予測:最近の研究 • CMU Delphi研究グループ(link) • 過去のインフルエンザ流⾏期を元に事前分布を調整する「経験ベイズ」を利 ⽤したアプローチ(link) • SNS等を利⽤したセンサフュージョン(link) •

    Oguzhan+, 2018, Predicting the Flu from Instagram(link) • インスタグラムの写真とTwitterの⽂字情報を⼊⼒として利⽤ • Razieh+, 2018, Predicting Disease Outbreaks Using Social Media: Finding Trustworthy Users(link, 有料) • SNSを基にクラスタリング処理を⾏い「信頼できるユーザ」を識別 • Shihao+, 2017, Using electronic health records and Internet search information for accurate influenza forecasting(link) • 医療記録データを利⽤して公開データを補完
  10. ⾎糖値の予測:問題設定 • 背景 • ⾎糖値は⾷事や運動の他、1⽇の中の特定の時間に⽣じる影響もある • 糖尿病患者は⾎糖値を最適化するために、インスリンの量と服薬のタ イミングを考慮する必要がある • ⽬的

    • ⾎糖値を予測する(30分後) • データ • (詳細はよくわからない。データがない) • 持続⾎糖測定データ(CGM) • ⾃動で⾎糖値を計測する装置を利⽤したデータ(関連link) • ⽋損期間があるデータ
  11. ⾎糖値の予測:データの確認 • データを理解する • 重複データが多数ある • 重複データを実際に確認して、処理内容を検討する • 書籍では、timestampの値が同じデータを除外 •

    プロットして確認 • 全期間、⽉単位、1⽇単位等でプロットし、周期性、トレンドなどを確認 • (⽇単位で周期があるというようなことが書かれているが図(13-11)を⾒てもわから ない) • 時間毎の計測データ数 • 夜中に計測された件数が多い(図13-12)。デバイスの動作不規則性?被験者の設置 タイミング?
  12. ⾎糖値の予測:予測 • 予測のアプローチ • 特徴量を⽣成し、機械学習アプローチを採⽤(XGBoost) • 理由は? • 不連続だから?データが1年の中での⼀部だから? •

    特徴量の⽣成 • 書籍のアプローチでは基本的には以下の値 • 時間毎の実際の測定値(時間は24時間を4つの区分にカテゴライズ) • 季節(冬か冬以外かのカテゴリデータ) • 計測器が推定するdirectionの値(one-hot-enc) • 直近の時間窓での標準偏差(データが不連続なことに注意)
  13. ⾎糖値の予測:予測結果の評価 • 予測結果の評価(⽬的を意識) • 予測値のプロット結果はかなり⾼精度に⾒える(図13-14) • 過剰適合の可能性 • 過度に低い値も追従して予測している→デバイスの誤作動の可能性 •

    デバイスの誤作動した時の値まで予測することは望ましくない • 低⾎糖/⾼⾎糖の予測値 • 平時の予測精度が⾼くてもそんなにうれしくない。必要なのは低⾎糖/⾼⾎糖時 を正しく予測できること • それぞれプロットして確認(図13-16)
  14. ヘルスケア分野への適⽤:まとめ • 時系列モデリングには「常識」を働かせることが⽋かせない • 予測結果がどのように活⽤されるのか「⽬的」を忘れない • 複数のモデルで仮説を検証し、問題に対する知識が増えることでモデ ルの改良や特徴量の⽣成に活かせる • 闇雲に特徴量を⽣成するなどはやるべきではない

    • 純粋な時系列の問題として閉じて考えるべきではないのだろう と思われます • インフルエンザ研究の動向でも複数の情報を活⽤することで予測に効 果が出ている • 背景(データ/問題の性質)を理解することこそ重要と思う
  15. 14章「⾦融分野への適⽤」 • 14.1 ⾦融データの取得と探索 • 14.2 ディープラーニング⽤の⾦融データの前処理 • 14.3 RNNの構築と訓練

  16. ⾦融分野への適⽤:問題設定 • 課題 • S&P 500の翌⽇の株式収益率の予測 • ⽇時の株式収益率:取引⽇の最初と最後の株価の差 • S&P500:⽶国内の市場に上場している代表的な500社の株価を基に算出

    • データ • ⽇時のヒストリカルデータ(link) • ⽇付、始値、⾼値、安値、終値、調整済み終値、出来⾼
  17. ⾦融分野への適⽤:データの確認 • データの特徴 • ⾮定常 • 転換点が⾒える • 複数の状態がありそう。 構成銘柄や重みづけが変わることがある。

    • 1週間分の変動は共通性がある • 図14-3 ??? • 収益率をモデリングする • 株価⾃体の予測値と実測値の相関を⾼めるモデルは簡単(nullモデル) • しかし役に⽴たない。トレンドに追従しているだけ。 • モデル化するデータの種類に注意することが必要 • 何が役に⽴つのかを考える 書籍p389, 図14-2
  18. ⾦融分野への適⽤:データの前処理 • 予測アプローチ • RNN(LSTM)を使って⽇時の収益率を予測する • 特徴量 • 前⽇まで(window幅)の⽇時収益率 •

    前⽇までの⽇時ボラティリティ • ⽇時ボラティリティ:⼀⽇の最⾼値と最安値の差 • 前⽇までの⽇時出来⾼ • ⽣データのスケーリング • 指数平滑化をベースにしたz-score • 平滑値 = (各量 ‒ 指数移動平均)/指数標準偏差 • 平均0の定常データになる(厳密に定常か否かは調査していない)
  19. ⾦融分野への適⽤:データの前処理 • データの整形 • TNC形式(10章参照)に変換 Time Volatility Return Volume Time

    Volatility Return Volume Time Volatility Return Volume window幅 Channel N 時系列に対してWindow(20⽇) を⼀⽇ずつスライドさせてデー タを⽣成。
  20. ⾦融分野への適⽤:予測モデル • 利⽤モデル • 2層のStacked LSTM(右図) • 書籍ではTensorFlowを利⽤ • Loss:

    ⼆乗誤差 • Optimizer: SGD • 予測結果 • 相関:0.036 • 正の相関が出てるから初⼿としては良いと⾔っている • 予測値を10倍すると⽅向性は合っているように⾒える (??) https://www.researchgate.net/figure/Stack ed-Deep-LSTM-Network- Architecture_fig1_308837697
  21. ⾦融分野への適⽤:モデルの改良 • 以下のような項⽬を検討すると良い(p.406~407) • 特徴量の追加 • 他の列の利⽤、⽣データの加⼯(カテゴリ変数化等)、他の銘柄の利⽤など • データの使い⽅の⼯夫 •

    時系列にデータを学習する(Windowのスライド⽅法の変更) • モデルの拡張 • ユニット数の追加、損失関数の⼯夫(⽬標変数のカテゴリ化など)、アンサンブ ルの検討 など • 課題の分析 • 予測値と実測値のスケールが⼤きく異なることの原因の検討 • などなど