たくさんの予測を、賢く混ぜる

30〜80 個の軽い予測器(Expert)を走らせ、当たっている Expert の重みを自動的に上げながら 足し合わせる — Prediction with Expert Advice の枠組みを、電力負荷予測に適用した プロジェクトの記録です。理論の解説から、うまく行かなかった実験、そして 何を変えたらうまく行ったのかまでをまとめています。

このサイトの結論

素朴な Hedge アルゴリズムは、原理的に「事後に選べる最良の 1 本」を超えられません。 実データで確かめたところ、まさにその通りの結果(+0.2%、つまり誤差)になりました。 一方、アルゴリズムを Fixed-Share に変えるだけで、同じデータ・同じ Expert 群で 最良の 1 本より 8〜12% 良くなり、系列の 96%〜100% で勝ちます。

3 分でわかる要点

  1. Hedge は「最良の 1 本に追いつく」アルゴリズムであって、「それを超える」アルゴリズムではない。
    絶対誤差(MAE)を損失に使う限り、理論的な保証は「最良の固定 Expert + 誤差」までです。 データが定常なら、最良 Expert は最初から最後まで同じ 1 本なので、Hedge にできることは何もありません。
  2. 効くのは「勝つべき Expert が入れ替わる」とき。
    レジーム(生成過程)が変わる、系列ごとに性質が違う、といった状況では、 重みに下限を設けて追随できる Fixed-Share が最良の固定 Expert を大きく下回ります。 人工データで −29.8%、M4 実データ 414 系列で −22.9%
  3. タスクを難しくすると差が開く。
    1 時間先予測は「直近値」がほぼ正解なので、どんな工夫も効きません。 翌日(24 時間先)予測にすると Expert の得意・不得意が分かれ、集約の利得が倍増します。

実データで見た効果

UCI 電力データにおける、最良固定 Expert に対する各アルゴリズムの改善率
UCI Electricity Load Diagrams(実データ・26 系列)の中央値。0% の線が 「事後に選べる最良の単一 Expert」で、下に行くほど良い結果です。 左が本プロジェクトの既定設定(1 時間先予測)、右は予測ホライズンだけを翌日に変えたもの。 Hedge 系がほぼ 0%(=集約した意味がない)に張り付くのに対し、Fixed-Share だけが明確に下回ります。 詳細は実験レポートへ。

どこから読むか

アルゴリズム解説

予備知識なしで読めます。「重みを掛けて足すだけ」から始めて、後悔(regret)、学習率 η、 Fixed-Share までを図で説明します。

実験レポート

本プロジェクトの既定設定を実データで再現し、なぜ結果が面白くならないのかを 3 つの原因に分解します。実装バグの報告も含みます。

追試結果

「Expert Advice が効くデータ・タスク」を 4 種類(人工データ / M4 / ETTh1 / COVID-19 期の電力需要)で再現した結果です。

再現方法

すべての図と数値は、リポジトリのスクリプトから再生成できます。

# 依存関係
uv sync --all-extras

# データ取得(M4 / ETTh1 / OPSD / UCI)
uv run python scripts/download_data.py

# 実験(図は docs/figures/、数値は docs/results/ に出力)
uv run python scripts/experiments/exp0_uci_baseline.py   # 既定設定の再現
uv run python scripts/experiments/exp1_regime.py         # レジーム切替(人工データ)
uv run python scripts/experiments/exp2_m4.py             # M4 Hourly 414 系列
uv run python scripts/experiments/exp3_etth1.py          # ETTh1
uv run python scripts/experiments/exp4_covid.py          # COVID-19 期の電力需要

# このサイトの表を results/*.json から再生成
uv run python scripts/build_site.py

このサイトに載っている数値は docs/results/*.json から自動生成されています。 実験を回し直して build_site.py を実行すれば、表は常に最新の結果と一致します。