概要
最近の記事を見ると、Zero-Shotで時系列予測ができるTimesFMと呼ばれるものが公開されていました。
Githubのリポジトリはこちら:
時系列予測というとベイズなどを用いて泥臭いことをやったりしないとですが、こちらはtransformerのデコーダ部分のみを用いてGoogle TrendsやWikipedia Pageviewなどの膨大なデータ(100 billion time point)で学習を実施したものを公開されています。パラメータも200Mで、GPT-3やLLama-2などと比較すると軽量なモデルであり、チューニングすることなく高度な予測をすることが可能であると書かれています。
時系列予測と言われるとベイズなどが浮かんできますが、面倒臭いのでサクッと予測できるのは比較対象としても悪くない気もしています。今回は、国内企業物価指数] 総平均(前年比)の2000年から2024年3月までの月次データを用いて、2024年4月以降から32ヶ月先までの予測を実施してみました。今回はGoogle Colabで環境を構築して予測をしています。
※まともなテックブログを一年以上書いてない人がウォーミングアップで書いてるので、温かい目で見守ってくれたら幸いです。
データセットについて
下記の日本銀行の時系列データ検索サイトの「物価」と書かれている箇所から国内企業物価指数] 総平均(前年比)および[企業向けサービス価格指数] 総平均(除く国際運輸)(前年比)のcsvファイルが月次データとしてダウンロードできます。
環境構築について
Google Colabを用いて、poetryでTimesFMに必要なパッケージをインストールしながら仮想環境を構築して動かしました。Dockerで構築しようか悩みましたが、サクッと試せることも加味してColabで取り組んでみました。
また、TimesFMでモデルを呼び出す際のパラメータは適当です。時間ができたら調べて追記するかもしれません。
poetryのpyproject.tomlは下記を利用しています。TimesFMのライブラリ関係を参考にして作成しました。
[tool.poetry]
name = "timesfm-package"
version = "0.1.0"
description = ""
authors = ["bamboo-taro"]
license = "MIT"
readme = "README.md"
[tool.poetry.dependencies]
python = ">=3.10,<3.11"
huggingface-hub = {extras = ["cli"], version = "^0.23.0"}
utilsforecast = "^0.1.9"
praxis = "^1.4.0"
lingvo = "0.12.7"
paxml = "^1.4.0"
einshape = "^1.0"
jax = "0.4.26"
jaxlib = "0.4.26"
numpy = "^1.26.4"
pandas = "^2.2.2"
timesfm = {git = "https://github.com/google-research/timesfm.git"}
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
ノートブックはワーキングディレクトリに配置して、pyproject.tomlは
成果物
Gistとしてアップロードしています。
今後の励みになるので、starして下さると嬉しいです。
結果
国内企業物価指数] 総平均(前年比)の32ヶ月先まで予測してみましたが、来年の夏頃までは物価は上がり続ける結果が出てきました。物価が下がって欲しいなぁ(個人的な感想)
まとめ
今回はTimesFMをサクッとColabで動かして予測してみました。金融や広告などの様々な分野で使えると思うので、取り敢えず手元のデータでサクッと予測してみるのには有用だと思います。
Google Trendsを学習データに用いてるくらいなので、メディアのトレンド予測とかで時系列データが限られてる時にパッと出してみるのに使える気もしました。機械学習での特徴量としてドメインのものと掛け合わせても面白いかもしれませんね。