概要
Amazonが開発したChronosを使ってみたかったので、調べてみるとAutoGluonというAutoMLを発見。AutoGluonからChronosを使用することにした。datasetの作り方にひと癖あるので備忘録に残す。
1. データフォーマットとAutoGluonの解釈
AutoGluonにおけるデータ形式と、それがモデルにどう解釈されるか。
A. Wide Format (一般的なテーブルデータ)
横に列が並んでいる形式。AutoGluonに読み込ませる前の生データによくある形。
| timestamp | Stock_A | Stock_B | VIX |
|---|---|---|---|
| 2025-01-01 | 100 | 500 | 20.5 |
| 2025-01-02 | 102 | 505 | 21.0 |
-
AutoGluonの扱い:
- このままでは直接扱えない
- 仮に
Stock_AをTargetに指定した場合、Stock_BとVIXは自動的に 「説明変数 (Covariates)」 として扱われる(Stock_Bの予測は行われない)
B. Long Format (AutoGluonの標準 TimeSeriesDataFrame)
item_id で縦に積み上げた形式をAutoGluonは要求する。
そのため、item_id、timestamp列を追加しておき、TimeSeriesDataFrame.from_data_frameメソッドで変換する。item_idには全予測対象を指定する。
| item_id | timestamp | Close | VIX |
|---|---|---|---|
| Stock_A | 2025-01-01 | 100 | 20.5 |
| Stock_A | 2025-01-02 | 102 | 21.0 |
| Stock_B | 2025-01-01 | 500 | 20.5 |
| Stock_B | 2025-01-02 | 505 | 21.0 |
-
AutoGluonの扱い:
-
Global Univariate Model: すべての系列 (
item_id) のデータを使い、1つの共通モデル(重み) を学習する。
-
Global Univariate Model: すべての系列 (
2. "Global Model" の正体
「Global Model」は全系列の相互作用を自動計算するものではない。
-
Local Model (従来の手法):
- 系列ごとに個別のモデルを作る。(例:A専用の家庭教師、B専用の家庭教師)
- Aのデータが少ないと学習できない。AとBの共通点を利用できない
-
Global Model (AutoGluonの標準):
- 全系列を1つのモデルで学習する。(例:全員を教える塾の先生)
- メリット: 全データの共通パターン(季節性やトレンドの法則)を学習できる (Transfer Learning)
- 注意点: デフォルトでは 「Aの予測にBの値を使う」ことはしない。あくまで「Aのデータだけを見て、みんなから学んだ法則を使って予測する」
- Chronos (Foundation Model): Amazon等の膨大な外部データで事前学習された「時系列版LLM」
3. "Multivariate" (多変量) の定義と実装
統計学的な定義と、ライブラリ上の扱いの違い。
-
統計学的おいらの定義:
- 入力変数が複数あり、互いの相関関係を利用して予測すること
-
AutoGluonの用語:
- 入力が複数でも出力が1つなら "Univariate with Covariates" と呼ぶ
- AutoGluonで「系列間の相互作用(Aが上がればBも上がる)」を利用させたい場合は、明示的なFeature Enginneringが必要
相関を利用するためのデータセット作成法
ただ item_id で積み上げるだけでなく、「相手の値を共変量として各行に結合する」 必要がある。
| item_id | timestamp | Close | Other_Close | VIX | 意味 |
|---|---|---|---|---|---|
| Stock_A | 2025-01-01 | 100 | 500 | 20.5 | Aの予測に、Bの値(500)もヒントとして使う |
| Stock_B | 2025-01-01 | 500 | 100 | 20.5 | Bの予測に、Aの値(100)もヒントとして使う |
4. predict() の挙動と作法
特定の item_id だけを予測したい場合のルール。
-
予測対象の指定方法:
- 引数ではなく、「渡すデータ (
data)」 で指定する -
predict(data)にStock_Aの行だけが含まれていれば、出力もStock_Aの予測値だけが返ってくる
- 引数ではなく、「渡すデータ (
-
必須条件:
- 学習時に存在した 列 (Columns) は、予測用データにもすべて存在しなければならない
- 例:
Close_Bを共変量として学習させたなら、Stock_A単体の予測時でもClose_B列(過去の実績値)を含んだ状態で渡す必要がある
5. 講演動画
Amazonが行ったAutoGluonの講演動画が出ていた。これによると800以上のAWSを含むAmazonの内部プロジェクトですでに運用されているらしい。だからエンジニアの大量解雇などができたのかもしれない。
個人的に気に入っているのは、AutoGluonはハイパラ調整を行わず、アンサンブルの重み調整に重点をおいているところ。ハイパラ調整は時間の無駄だとも述べている。そのためのPre-trainingでもあるし。
NotebookLMの要約
このチュートリアル講演録は、AutoGluon というオープンソースの自動機械学習(AutoML)ツールキットに関するもので、その機能、進化、そして将来展望を、3つの主要部分に分けて説明しています。まず、AutoGluon Tabular の最新版1.0を紹介し、動的スタッキングやTabRepoを用いた新しいポートフォリオ戦略により、AutoMLの最先端技術をどのように大きく飛躍させたかを強調しています。次に、時系列予測のためのKronosという基盤モデルを取り上げ、連続値を離散トークンに変換する手法(スケーリングと量子化)を用いて、LLM(大規模言語モデル)のアーキテクチャをゼロショット予測に応用する革新的なアプローチを解説しています。最後に、AutoGluon Assistantというプロジェクトを通じて、LLMを活用してデータの前処理や特徴量エンジニアリングを含むデータサイエンスパイプライン全体を自動化する、「ゼロコード」AutoMLの未来を探求しています。この講演は、AutoGluonがKaggleコンペティションで目覚ましい成功を収め、AutoMLがよりアクセスしやすく、強力なものになっていることを示しています。
以上