この記事は GMOインターネットグループ Advent Calendar 2024 14日目の記事です。こんにちは!GMO NIKKO株式会社の杉浦です。今回はGoogleが発表した時系列基盤モデルのTimesFMの有効性を代表的な時系列モデルであるprophetとSARIMAモデルと比較して検証してみました。
はじめに
時系列モデルとは、時間の経過とともに変化するデータを扱うための統計モデルや機械学習モデルです。これらのモデルは、過去のデータパターンを活用して将来の値を予測したり、データの傾向や季節性を分析するために使用されます。
近年、深層学習技術は急速に進化していますが、時系列データに関しては非定常過程を考慮した古典的な時系列モデルの方が高い精度を示す場合があると報告されています。
しかし、2024年2月にGoogleが発表した、2億パラメータを持つ時系列特化の基盤モデル「TimesFM(Transformerベース)」は、時系列分析において注目を集めています。本稿では、この基盤モデル「TimesFM」の精度を、現在も時系列予測で広く利用されているProphetやSARIMAモデルと比較しました。
選手紹介
今回の検証に参加するモデルは以下の3つです。LSTM、Seq2Seq、WaveNetなどの時系列モデルもありますが、今回は自分が実務で使う範囲のモデルで検証します、、
TimesFM
冒頭でも紹介しましたがTimesFMはGoogleが発表したTransformerベースの時系列モデルです。特徴としては以下の4つが挙げられます。
・パッチ分割
TimesFMは時系列データを「パッチ」に分割して、一気に予測します。RNNなどは時系列の点を逐次予測するので計算効率が悪いですが、パッチ分割で処理することにより少ないステップで長期の予測をすることができます。
[Das, Abhimanyu 23, p4]
・デコーダーのみのアテンションモデル
TimesFMはDecoder-Onlyモデルを採用しています。Transformerのデコーダー部分のみを採用した自己回帰モデルとなっているので、過去のパッチに依存した予測が可能になります。
・大規模な時系列データでの事前学習
TimesFMは実データと合成データを用いて事前学習されています。Google Trends、Wiki Pageviews、M4、Weatherなどの実データに加えてARMAプロセスや季節性を合成させたデータで事前学習していますね。
[Das, Abhimanyu 23, p6]
・ゼロショット予測
TimesFMはゼロショットで予測することが可能です。(ファインチューニングも可能だが、今回は割愛)基本的にはLLMと一緒なので、質問(事前に渡す時系列)に対して確からしい回答(予測した時系列)を返します。今までの時系列モデルは事前に渡す時系列においてパラメータを推定して、そのパラメータを元に予測するのに対して、パラメータを推定せずに予測をするってなんだか不思議ですね、、、おそらく事前学習段階において、様々な時系列パターンのパラメータを暗黙的に持っているんだと思いますが、、
Prophet
ProphetはMeta社が開発した時系列モデルです。
モデル構造は非常にシンプルでトレンド・周期性・イベント・ノイズを足す or 掛け合わすモデル構造になっています。解釈性と予測精度を兼ね備えたモデルで統計知識がそこまで無くても扱えるのが魅力ですね、、
それぞれの項の説明に関しては長くなるので今回は割愛します。詳しく知りたい方はこちらのProphetのドキュメントと論文を読んでください。
Taylor SJ, Letham B. 2017. Forecasting at scale. PeerJ Preprints 5:e3190v2
SARIMA
(Seasonal AutoRegressive Integrated Moving Average)モデルは、ARIMA(AutoRegressive Integrated Moving Average)モデルに季節性を組み込んだ時系列モデルです。
僕が大学院の頃に少し触れた程度なので、SARIMAを本格的に知りたい方は以下の記事を読んでみると良いかもしれません。
時系列解析に出てくるARIMAモデルとSARIMAモデルを徹底解説
実験設計&評価指標
実験設計
今回2つの実験で性能を評価してみたいと思います。1つ目はトレンド+季節性+ホワイトノイズからなる合成データによる検証で以下のパラメータで時系列データを生成しました。2024/11/01〜2024/12/30までをテストデータとしました。SARIMAには季節パラメータsを30として扱いました。
2つ目は時系列モデルであるあるな飛行機乗客数データによる検証をしてみます。(選定理由としては実例が多いのでパラメータ探索を省ry.....)こちらは1958/07/01〜1960/12/01をテストデータとしました。
こちらのデータはトレンドとともに季節性の振幅が増加するので、Prophetはseasonality_mode='multiplicative'として扱い、TimesFMとSARIMAに関しては対数変換を施して予測しました。また自己相関が12周期で発生しているのでSARIMAの季節パラメータはsは12としました。
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv",
index_col='Month', parse_dates=True)
評価指標
評価指標はMAEで評価します。
また直近の予測の精度も評価したいのでWMAEでも評価したいと思います。以下WMAEの評価式です。予測ステップが経過するにつれ重みが小さくなります。
結果
結果としては以下の表の通り、今回のデータセットではProphet>SARIMA>TimesFMの順で精度が良かったです。また直近の予測に関しては、合成データではProphet、AirplaneデータセットではSARIMAが精度が高かったです。airline-passengersデータセットに関してはAR(1)の成分が強かったのでそこが効いたのかなと思いました。
こちらが各テスト期間での予測をプロットしたものです。どのモデルも周期性はしっかりモデリングできていますね。TimeFMに関しては全体的に過小評価している感じがしますね。また、airline-passengersデータセットに関してはどのモデルも振幅の上昇に追いついてない印象です。
まとめ
今回はTimesFMの精度を検証するために、私が実務で使うProphetとSARIMAのモデルと比較して検証してみました。その結果今回の実験データセットに関してはProphetの精度が一番高いという結果が出ました。今回の実験ではSARIMAが使えるデータセット(周期性が1つのみ)に限定した話なので、時系列データとしてかなりシンプルでした。なのでもっと複雑な時系列データになると話が変わるかもしれないですね。また、TimesFMに関して今回ファインチューニングはせずゼロショットで予測させて、ここまでの精度を出せるのは正直驚きですね。ファインチューニングをするともしかしたらProphetを上回る可能性もあります。加えて、SARIMAやProphetに関しては、今回あまり語られていませんがモデル構築前に時系列の性質を分析する必要があります。なので特に分析せずともそこそこの精度を出せるのもTimesFMの魅力かもしれませんね。個人的な意見としてはタスクに応じて使い分けるべきかなって思います。(最強モデルは誰だというタイトルを付けといてなんですが、、笑)ビジネス要件によっては解釈性を求められるケースもあります。そういったケースに関してはやはりProphetなどは非常に優秀なのかなと思います。ただ、とにかく正確に予測できればいいんだとかLLMに予測機能をつけたいなどの要望に関してはTimesFMの方が優秀なのかなと思いました。
今回かなりお粗末な実験をしてしまいましたが、ぜひ皆さんもTimesFMに触れて遊んでみてください。
引用
[Das, Abhimanyu 23] Das, Abhimanyu, et al. "A decoder-only foundation model for time-series forecasting." arXiv preprint arXiv:2310.10688 (2023).