Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

時系列基盤モデルChronos-2による時系列予測を試してみた

こんにちは、コバタカです。
最近はAIエージェントを使って、作って、楽しんでいます。

LLMと同様、時系列予測においても基盤モデルの活用が近年進んでいます。
今回紹介するChronos-2は、AmazonOSSとして公開している時系列データ処理向けの基盤モデルです。
以前、本ブログでChronos-Boltの紹介がありましたが、Chronos-2はその後継モデルとなります。
様々な時系列データに対応するように学習されており、ZeroShotでも高い精度での予測が可能となっているモデルです。
この記事では、そのChronos-2について紹介していきます。
なお、Chronos-Boltの解説については以下をご覧ください。
acro-engineer.hatenablog.com

Chronos-2について

Chronosは予め様々な時系列を学習させておくことで、適用するデータの学習をせずとも時系列予測ができるモデルです。
Chronos, Chronos-Boltと公開されており、Chronos-2はその後継となるモデルです。
代表的な改良点として、Chronos-Boltは単変量(1系列のデータ処理)のみ対応していましたが、Chronos-2では多変量(複数系列のデータ処理)に対応しました。
huggingface.co

コンテキスト内学習(ICL)を活用したアーキテクチャで精度改善

Chronos-2では、コンテキスト内学習(ICL, In Context Learning)を活用して、
単変量時系列間を考慮した予測をできるようになりました。
例えば、Chronos Boltだと、温度を予測する場合、温度のみしかChronos Boltには入力することができませんでした。
しかし、Chronos-2では、関連してそうな、温度と湿度を入力し、考慮するといったようなことができます。

この時系列同士の相互作用も考慮に入れたアーキテクチャによって、より正確な予測を実現しています。

多変量予測で複数の時系列をまとめて予測できる

多変量予測とは、複数の時系列を同時に予測することです。
Chronos / Chronos-Boltでは単変量予測しか対応していませんでしたが、Chronos2からは多変量予測が可能になりました。
これは単にまとめて予測を実行できるだけでなく、互いの依存関係もとらえることができ、精度の向上を図ることができます。

Chronos-Boltと比較して高精度

公式のベンチマークによれば、Chronos-Boltよりも同じ条件で高精度な結果が得られています。
更に、他の時系列モデルよりも高精度を達成しており、この点でもChronos2を利用するメリットがあります。

Chronos2を用いた精度比較(AWS公式ブログより)

Chronos-2を使った時系列予測

概要

この記事では以下の3つを紹介します。

内容 説明
ゼロショット 学習なしでの推論
FineTuning 学習ありでの推論
多変量推論 複数の時系列を対象に推論を実施する

準備

必要なライブラリのインストール

Chronos-2を利用するため、chronos-forecastingライブラリをインストールします。

pip install "chronos-forecasting>=2.0"
データセット

今回の検証では、Kaggleで公開されている「Global Capitals Real-time Weather Data (2025)」を利用します。
世界中の首都の各種気象情報がまとめられています。
www.kaggle.com

また、このままでは検証に利用できないため、以下のように加工します。

from datetime import datetime
import pandas as pd


used_columns = [
    "utc_time", "capital", "temp_max", "humidity", "feels_like", "visibility",
    "precipitation", "cloudcover", "wind_speed", "wind_gust", "wind_direction", "pressure"
]
weather_df = pd.read_csv('data/weather/original/countries-v1.csv')[used_columns]
weather_df['utc_time'] = pd.to_datetime(weather_df['utc_time']).dt.floor('S')
train_df = weather_df[weather_df['utc_time'] < datetime(2025, 10, 25)]
test_df = weather_df[weather_df['utc_time'] >= datetime(2025, 10, 25)]
future_df = test_df.drop(columns="temp_max")

利用する主要なパラメータはこちらです。

項目 説明
utc_time 日時(UTC)
capital 首都名
temp_max 最高気温 ★今回の予測値①
humidity 湿度 ★今回の予測値②
precipitation 降水量
wind_speed 風速
pressure 気圧

ゼロショット予測

ゼロショットの推論は以下の実装で対応できます。
id_columnがグルーピングするカテゴリ、timestamp_columnが時間を表す列名です。
なお、特に設定はなくとも、予測対象としているtemp_max以外のカラムも予測に利用されます。

pipeline = Chronos2Pipeline.from_pretrained("amazon/chronos-2", device_map="cpu")
predict_df = pipeline.predict_df(
    train_df,
    future_df=future_df,
    prediction_length=20,  # Number of steps to forecast
    quantile_levels=[0.1, 0.5, 0.9],  # Quantiles for probabilistic forecast
    id_column="capital",  # Column identifying different time series
    timestamp_column="utc_time",  # Column with datetime information
    target="temp_max",  # Column(s) with time series values to predict
)

この結果を可視化したのが以下のグラフです。
青線が過去の実績値、緑線が対象期間の実績値、紫が予測値です。そのため、紫線が緑線に近いほど予測の精度が高いことになります。
紫は線の上下が網掛けになっていますが、これは80%信頼区間を示しています。

ゼロショット予測結果(Chronos-2)

なお、同条件でChronos-Boltで予測した結果が以下の通りです。
明らかにChronos-2の方が精度良く予測できていることが分かります。

ゼロショット予測結果(Chronos-Bolt)

FineTuning

続いて、FineTuningして学習した結果を利用して、時系列予測を行います。
FIneTuningは以下の実装でできます。FineTuningした後のPipelineが作成されるので、それを使うことでゼロショットと同様に推論できます。

finetuned_pipeline = pipeline.fit(
    inputs=train_inputs,
    prediction_length=20,
    num_steps=50,
    learning_rate=1e-5,
    batch_size=32,
    logging_steps=10,
)
predict_df = finetuned_pipeline.predict_df(
    train_df,
    future_df=future_df,
    prediction_length=20,
    quantile_levels=[0.1, 0.5, 0.9],
    id_column="capital",
    timestamp_column="utc_time",
    target="temp_max",
)

FineTuning後の推論結果が以下の通りです。
拡大した以下のグラフを見るとゼロショットよりも一致率が高く、何よりChronos-Boltよりも精度が高いのは明らかです。

FineTuning結果(Chronos-2)
FineTuning結果(Chronos-Bolt)

多変量予測

Chronos-2では新たに多変量予測が導入されています。
複数の変数をまとめて予測する仕組みで、実装も以下の通りtargetを複数与えるだけです。

pipeline = Chronos2Pipeline.from_pretrained("amazon/chronos-2", device_map="cpu")
predict_df = pipeline.predict_df(
    train_df,
    future_df=future_df,
    prediction_length=20,
    quantile_levels=[0.1, 0.5, 0.9],
    id_column="capital",
    timestamp_column="utc_time",
    target=["temp_max", "humidity"],
)

多変量予測した結果が以下です。気温については変わらず高い精度が保たれています。

多変量予測:気温

湿度の予測も単変量での予測と比較すると、実測値に近づいていることが分かります。

多変量予測:湿度
単変量予測:湿度

まとめ

Chronos-2による時系列予測を試していきました。
実装の容易さは変わりなく、かつ精度面でも従来のChronos-Boltを上回る様子が見られました。
モデルそのものも軽量で、CPU(M1Mac, 16GB)でも50epochのFineTuningに45秒、予測は1秒以内に完了します。
また、新たに導入された多変量予測も相乗効果での精度改善が見られます。
こうした基盤モデルを活用して、手軽かつ高精度に時系列予測できるのは活用の幅に期待ができそうです。


Acroquest Technologyでは、キャリア採用を行っています。

  • Azure OpenAI/Amazon Bedrock等を使った生成AIソリューションの開発
  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • マイクロサービス、DevOps、最新のOSSクラウドサービスを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

www.wantedly.com