AI予測モデル構築プロジェクトの舞台裏
AutoGluonを使った高度な時系列予測コードを、ゼロから解説します。
はじめに:このコードは何を目指しているのか?
このプロジェクトの目的は、一言でいえば**「スペインの1年後の電力価格を、AIを使って予測する」**ことです。そのために、過去の電力価格、発電量、そして複数の都市の気象データといった、大量の情報をAIに学習させます。
しかし、AIは人間のようにデータをそのまま理解することはできません。AIが学習しやすいようにデータを「調理」し、最適な「調理法(AIモデル)」を見つけ出し、最終的に最高の料理(予測結果)を作り上げる必要があります。この一連の流れを自動化するのが、今回使われている**AutoML(自動機械学習)**という技術です。
知っておきたい3つのキーワード
1. DataFrame (データフレーム)
Excelのシートのような、行と列で構成されたデータのことです。AIの世界では、このような表形式のデータを使って計算を行います。
2. 特徴量エンジニアリング
生のデータ(ただの気温や日付)から、AIが学習しやすい新しい情報(特徴量)を作り出す作業です。料理で言えば、野菜を切ったり、下味をつけたりする「下ごしらえ」に相当します。AIの性能は、この下ごしらえの腕前で大きく左右されます。
3. AutoML (自動機械学習)
どのAIモデル(調理法)が最適か、モデルの細かい設定(火加減)はどうすべきか、といった複雑な選択を自動で行ってくれるツールです。今回は**AutoGluon**という、Amazonが開発した非常に優秀なAutoMLツールを使用しています。
コード解説:ステップ・バイ・ステップ
それでは、実際のコードが何をしているのか、各セクションごとに見ていきましょう。
ステップ1 & 2: 準備と設計図(関数)の定義
この最初の部分では、プロジェクトの基本的な設定を行っています。どのデータを予測対象(`TARGET_COLUMN`)にするか、時間の情報はどの列にあるか(`TIMESTAMP_COLUMN`)といった、いわば**「プロジェクトの憲法」**を定めています。
また、後で何度も使う複雑な処理(特徴量エンジニアリング)を、`engineer_features`という名前の**「設計図(関数)」**として定義しています。これにより、同じ処理を何度も書く手間が省け、コードが整理されます。
ステップ3: データの下ごしらえ(特徴量エンジニアリング)
ここでは、生のCSVファイルを読み込み、ステップ2で定義した設計図(`engineer_features`)を使って、AIが学習しやすい**「特徴量」**を大量に作り出しています。これは、予測精度を決定づける最も重要な工程です。
作られている特徴量の例:
- 時間の特徴量: 「何月か?」「何曜日か?」「週末か?」といった基本的な情報。
- 周期の特徴量: 「1年の中での日付の位置」を三角関数(sin/cos)で表現し、夏と冬が繋がっているような季節のサイクルをAIに理解しやすくします。
- ラグ特徴量: 「24時間前の価格はいくらだったか?」「1週間前の気温は?」といった、過去の情報を現在の行に追加します。
- ローリング特徴量: 「過去24時間の平均気温」や「過去1週間の価格の変動の大きさ(標準偏差)」などを計算します。
- 地理的特徴量: ルールで許可された各都市の緯度・経度・標高を追加し、モデルに地理的な情報を与えます。
ステップ4: 最終データクリーニング
特徴量生成の過程で、稀に計算上のエラー(ゼロでの割り算など)によって`inf`(無限大)のようなAIが処理できない「不正な値」が生まれることがあります。このセルでは、そうした値を検知して安全な値(0など)に置き換え、**AIに食べさせる直前の最終的な品質チェックと清掃**を行っています。これは、モデル学習の安定性を確保するために不可欠な工程です。
ステップ5 & 6: AutoMLの実行
ここがAutoMLの真骨頂です。私たちはAutoGluonに対して、以下のような「作戦命令」を与えています。
- `presets=”best_quality”`: 「精度最優先で、最高のモデルを作ってくれ!」
- `time_limit=…`: 「この作戦に使える時間は最大48時間だ。」
- `hyperparameters=…`: 「これらのモデル(DeepAR, PatchTSTなど)を重点的に、このパラメータ範囲で徹底的に調べてくれ。」
- `excluded_model_types=…`: 「ただし、TFTのように我々の環境と相性が悪いモデルは、時間の無駄なので無視してくれ。」
この命令を受け取ったAutoGluonは、48時間という時間の中で、指定されたモデルの様々な設定を試し、最も性能の良いモデルと、それらを組み合わせた最終的な「最強のアンサンブルモデル」を自動で構築します。
ステップ7: 提出ファイルの作成
最後に、学習した最高のモデルを使ってテストデータの未来の価格を予測し、コンペティションのルールに定められた通りの形式(ヘッダーなし、2列のCSV)で提出ファイルを作成しています。ここでの`time_original_str`の利用は、処理の過程で変更されたタイムスタンプを、提出時に元の正しい書式に戻すための重要な処理です。
コメント