たくさんの予測を、賢く混ぜる
30〜80 個の軽い予測器(Expert)を走らせ、当たっている Expert の重みを自動的に上げながら 足し合わせる — Prediction with Expert Advice の枠組みを、電力負荷予測に適用した プロジェクトの記録です。理論の解説から、うまく行かなかった実験、そして 何を変えたらうまく行ったのかまでをまとめています。
このサイトの結論
素朴な Hedge アルゴリズムは、原理的に「事後に選べる最良の 1 本」を超えられません。 実データで確かめたところ、まさにその通りの結果(+0.2%、つまり誤差)になりました。 一方、アルゴリズムを Fixed-Share に変えるだけで、同じデータ・同じ Expert 群で 最良の 1 本より 8〜12% 良くなり、系列の 96%〜100% で勝ちます。
3 分でわかる要点
-
Hedge は「最良の 1 本に追いつく」アルゴリズムであって、「それを超える」アルゴリズムではない。
絶対誤差(MAE)を損失に使う限り、理論的な保証は「最良の固定 Expert + 誤差」までです。 データが定常なら、最良 Expert は最初から最後まで同じ 1 本なので、Hedge にできることは何もありません。 -
効くのは「勝つべき Expert が入れ替わる」とき。
レジーム(生成過程)が変わる、系列ごとに性質が違う、といった状況では、 重みに下限を設けて追随できる Fixed-Share が最良の固定 Expert を大きく下回ります。 人工データで −29.8%、M4 実データ 414 系列で −22.9%。 -
タスクを難しくすると差が開く。
1 時間先予測は「直近値」がほぼ正解なので、どんな工夫も効きません。 翌日(24 時間先)予測にすると Expert の得意・不得意が分かれ、集約の利得が倍増します。
実データで見た効果
どこから読むか
アルゴリズム解説
予備知識なしで読めます。「重みを掛けて足すだけ」から始めて、後悔(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 を実行すれば、表は常に最新の結果と一致します。