この記事は Time Series Forecasting with MySQL HeatWave の翻訳版です。
時系列予測は、過去のイベントに基づいてキー・メトリックの将来値を予測する手法です。これは、過去の時系列イベントや他の変数を用いて、将来の値を予測するものです。多変量時系列予測では、複数の時系列変数を予測できます。各変数は、自身および他の依存変数の過去の値に依存します。
たとえば、電気エネルギーの需要は、風力や太陽光など他のエネルギー源の需要と相関して決まります。地域の電力、風力、太陽光エネルギーの将来の月次消費は、これらの各エネルギー分野の前年の消費量に左右され、またそれぞれの間には相互依存があります。一方でこれらのエネルギー源の需要は、さまざまなエネルギー源の需要には依存せず独立した、その冬の厳しさによっても左右されます。
同様に、トウモロコシの季節的需要は、自身の過去の需要とその他の穀物の季節的需要に依存します。つまり、様々な穀物の需要は相互に依存関係をもっています。また、降雨量などの独立した変数にも影響されます。このような種類の予測問題は、多変量時系列予測を用いて対処できます。
時系列データを分析する際は、季節性(Seasonality)、傾向(Trend)、残余(Residual)などの要素で構成される時間依存と内部構造を利用することが重要です。一般的な時系列特性の様々な影響の強さそれぞれに、最も適した時系列予測アルゴリズムが多数あります。有効な予測のために最適なアルゴリズムを選択するには、統計学的に時系列でトレーニングされた分析が必要です。問題の複雑さを考慮すれば、時系列予測の自動化されたアプローチが望まれます。
MySQL HeatWaveの機械学習 (別名HeatWave AutoML) は、完全に自動化された予測パイプラインを提供します。このパイプラインは、特定の時系列データセットに対して自動的に前処理を実施し、最適なアルゴリズムを選択し、ハイパーパラメータをチューニングすることで、比類ないモデル・トレーニング・パフォーマンスと高い予測精度を実現できます。MySQL HeatWaveで機械学習を使用するために追加コストは必要ありません。
Redshift MLやSnowflakeなどの他のベンダーは、時系列予測をサポートしていません。Google Big Queryは、時系列予測のための自動機械学習パイプラインをサポートしていません。

HeatWave AutoML自動予測パイプラインは、高度な時系列前処理、アルゴリズム選択、ハイパーパラメーターチューニングなどのステージで構成される特許技術を使用しています。高度な時系列前処理ステージでは、検索空間を整理し、基本的な時系列特性(季節性、トレンドなど)を推定し、これらの推定値は、後にアルゴリズム選択ステージとハイパーパラメータチューニングステージで用いられます。アルゴリズム選択ステージでは、サポートされているアルゴリズムのセットから、与えられた時系列データセットに最適なアルゴリズムを推定します。ハイパーパラメータチューニングステージでは、アルゴリズムのハイパーパラメータを、プリプロセッサが提案する範囲で調整します。これによって試行回数が減ることにより大幅な高速化が実現化され、チューニングされたモデルの一般性が向上します。
HeatWave AutoMLでのサンプル
コードセグメントで参照されるHeatWave AutoML手順は、以下に示されています。詳細はMySQL HeatWave AutoMLのドキュメント (英文)をご覧ください。
CALL sys.ML_TRAIN (‘table_name‘, ‘target_column_name‘, [options], model_handle);
options: {
JSON_OBJECT(‘key’,’value'[,’key’,’value’] …)
‘key’,’value’:
|’task’, {‘classification’|’regression’|’forecasting’} |NULL
|’datetime_index’, ‘column‘
|’endogenous_variables’, JSON_ARRAY(‘column‘[,’column‘] …)
|’exogenous_variables’, JSON_ARRAY(‘column‘[,’column‘] …)
|’model_list’, JSON_ARRAY(‘model‘[,’model‘] …)
|’exclude_model_list’, JSON_ARRAY(‘model‘[,’model‘] …)
|’optimization_metric’, ‘metric‘
|’include_column_list’, JSON_ARRAY(‘column‘[,’column‘] …)
|’exclude_column_list’, JSON_ARRAY(‘column‘[,’column‘] …)
}
ラベル付き学習データセットに対してML_TRAINルーチンを実行すると、学習済み機械学習モデルが生成されます。optionsパラメータに指定された値は、用いるモデルの種類と、選ばれたモデル種別が必要とする詳細パラメータを指定します。
CALL sys.ML_MODEL_LOAD(model_handle, user);
ML_MODEL_LOADルーチンは、モデルカタログからモデルをロードします。モデルは、ML_MODEL_UNLOADルーチンを用いてモデルがアンロードされるか、HeatWave Cluster restartによってHeatWave MLが再起動されるまでロードされたままです。
CALL sys.ML_PREDICT_TABLE (table_name, model_handle, output_table_name, options);
ML_PREDICT_TABLEは、ラベルのないデータのテーブル全体に対する予測値を生成し、結果を出力テーブルに保存します。
CALL sys.ML_SCORE (table_name, target_column_name, model_handle, metric, score);
ML_SCOREは、ラベル付きデータセットの特徴列を入力として予測値を生成し、その予測値をラベル付きデータセットのターゲット列の正解値と比較することでモデルをスコアリングします。
データセット
本記事で提供するHeatWave AutoML時系列予測の例は、サンプルデータセットに基づき、電力消費量を予測するものです。予測のタスクは、時系列データおよび他の変数に基づいて電力消費量を決定することです。
コードセグメント
以下のコードセグメントでは、学習データはテーブル「mlcorpus.daily_train」、予測変数は「consumption」、機械学習タスクは「forecasting」、従属変数(別名内因性変数)は「consumption」と「wind」が共に予測され、独立変数(別名外因性変数)は「solar」が外因性変数として提供されています。
mysql> CALL sys.ML_TRAIN (‘mlcorpus.daily_train’,’consumption’, JSON_OBJECT(‘task’, ‘forecasting’, ‘datetime_index’, ‘ddate’, ‘endogenous_variables’, JSON_ARRAY(‘consumption’, ‘wind’), ‘exogenous_variables’, JSON_ARRAY(‘solar’)), @model);
Query OK, 0 rows affected (27.84 sec)
mysql> CALL sys.ML_MODEL_LOAD(@model, NULL);
Query OK, 0 rows affected (0.92 sec)
テーブル「mlcorpus.daily_test」には「consumption」と「wind」の時系列正解データが格納されています。予測値は、テーブル「mlcorpus.predictions2」に作成されます。
mysql> CALL sys.ML_PREDICT_TABLE(‘`’mlcorpus.daily_test`’, @model, ‘mlcorpus.predictions2’, NULL);
Query OK, 0 rows affected (2.79 sec)
予測された変数「consumption」と「wind」はテーブル「mlcorpus.predictions2」に格納されます。「consumption」と「wind」の予測値は列「ml_results」に提供されます。
mysql> SELECT * FROM predictions2 LIMIT 5.
+————+——————–+——————–+
| ddate| consumption| wind| solar| wind_solar| ml_results|
+————+——————–+——————–+
| 2015-12-30 | 1496.93| 578.69| 33.54| 612.24|{‘predictions’: {‘consumption’: 1274.51,’wind’: 272.63}}|
| 2015-12-31 | 1533.09| 586.76| 33.65| 620.42|{‘predictions’: {‘consumption’: 1369.09,’wind’: 245.13}}|
| 2016-01-01 | 1521.93| 385.01| 44.77| 429.78| {‘predictions’: {‘consumption’: 1398.47,’wind’: 191.42}}|
| 2016-01-02 | 1518.60| 283.66| 47.09| 330.75| {‘predictions’: {‘consumption’: 1419.44,’wind’: 110.31}}|
+————+——————–+——————–+
4 rows in set (0.00 sec)
モデルスコアは、モデルによる予測結果とテーブル「mlcorpus.daily_test」に格納されている「consumption」と「wind」の正解値を比較することで計算されます。
mysql> CALL sys.ML_SCORE(‘`mlcorpus`.`’mlcorpus.daily_test`’, ‘consumption’, @model, ‘neg_sym_mean_abs_percent_error’, @score);
Query OK, 0 rows affected (2.62 sec)
mysql> select @score;
+———————-+
| @score |
+———————-+
| -0.43969136476516724 |
+———————-+
1 row in set (0.00 sec)
まとめると、時系列予測は時間順のイベントを予測するのに有効な手法です。多変量予測は、複数の依存イベント間の相互依存性を考慮し、その履歴値に基づき将来値を予測できます。HeatWave AutoMLは、完全に自動化された機械学習パイプラインで多変量予測をサポートし、高い実行効率や予測精度を実現し、時系列予測をとても容易なものにします。サプライチェーン、エネルギー管理、ゲーム、デジタルマーケティング、金融など、さまざまな分野の予測問題を効果的に解決するために使われています。

