19 指数平滑法

指数平滑法アルゴリズムについて学習します。

19.1 指数平滑法について

指数平滑法とは、時系列データの予測手法のことです。移動平均法の一種であり、過去の観測に対して指数関数的に減少する重みを割り当てます。

指数平滑法は、半世紀にわたり予測に広く使用されています。戦略的レベル、戦術的レベルおよび運営レベルでの用途があります。たとえば、戦略的レベルでは、投資利益率、つまり革新による成長率や効果を見積るために予測が使用されます。戦術的レベルでは、コスト、在庫要件、顧客満足を見積るために予測が使用されます。運営レベルでは、ターゲットを設定し、品質や基準への準拠を予想するために予測が使用されます。

最も単純な形式の指数平滑法は単一パラメータを使用した移動平均法であり、この手法では、将来の値に対する過去のレベルの影響の指数関数的な減少をモデル化します。指数平滑法は、様々な拡張によって、Box-Jenkins自己回帰和分移動平均(ARIMA)法など、競合する他の方法よりも幅広い種類のモデルに対応しています。Oracle Machine Learning for SQLは、理論上の利点とパフォーマンス上の利点を提供する単一の誤差原因(SSOE)の仮定を組み込んだ、最先端の状態空間法を使用する指数平滑法を実装しています。

指数平滑法は、次のように拡張されています。
  • 誤差の種類(加算または乗算)、傾向(加算、乗算、なし)、季節性(加算、乗算、なし) を組み合せて一致させるモデルのマトリックス。

  • 減衰傾向のモデル。

  • 不規則な時系列や欠損値のある時系列を直接処理するモデル。

ノート:

詳細については、Ord, J.K.他の『Time Series Forecasting: The Case for the Single Source of Error State Space Approach, Working Paper』(モナシュ大学、計量経済統計学科、VIC3800、オーストラリア、2005年4月2日)を参照してください。

19.1.1 指数平滑法モデル

指数平滑法モデルは、直観的で柔軟性が高く、拡張性のある幅広いクラスの予測モデルです。

このクラスのメンバーには、以前のレベルと現在のショックの線形結合として将来を予測する、単純な単一パラメータのモデルが含まれます。拡張機能には、線形または非線形の傾向、傾向減衰、単純または複雑な季節性、関連シリーズ、予測方程式での様々な非線形性、および不規則な時系列の扱いに関するパラメータなどを含めることができます。

指数平滑法では、系列は過去に無限に広がっていると想定されますが、将来に対する過去の影響は、平滑かつ指数関数的な速度で減衰します。減衰の平滑率は、1つ以上の平滑化定数によって表されます。平滑化定数は、モデルによって推定されるパラメータです。過去の履歴に基づく現在のレベルの推定値、および現在の条件のみに依存するその推定値対するショックの観点からのみ表される等価な再帰的定式化を使用することで、実世界のデータをモデル化するための有用な仮定が行われます。この手順では、過去のすべての履歴を含む、最初の観測の直前の期間に対する推定値が必要になります。この最初の観測は、モデリング手順によって値が推定される追加のモデル・パラメータです。

傾向や季節性の拡張機能などのESM構成要素には、加算または乗算の形式を使用できます。より単純な加算モデルでは、ショック、傾向、季節性は再帰的定式化において線形効果と見なされます。

19.1.2 単純指数平滑法

単純指数平滑法では、データは、傾向や季節性のパターンのない定常平均を中心に変動すると想定されます。

単純指数平滑法モデルでは、各予測(平滑化された値)は以前の観測の加重平均として計算され、加重は平滑化定数αの値に応じて指数関数的に減少します。平滑化定数αの値が1に近いと、ほとんどすべての重みが最近の観測値に付加されます。αの値が0に近いと、遠い過去の観測値が大きな影響力を持つことになります。

19.1.3 傾向はあるが季節性はないモデル

加算(線形)傾向の望ましい形式は、Holt法または二重指数平滑法と呼ばれることがあります。

傾向を持つモデルでは、平滑化パラメータγと、オプションで減衰パラメータφが追加されます。減衰パラメータは、過去の線形傾向が将来のレベルの推定値に及ぼす影響を平滑に減衰させ、多くの場合、精度を向上させます。

19.1.4 季節性はあるが傾向はないモデル

時系列の平均が時間の経過とともに変化しない(固定)が、季節変動の影響は受ける場合、適切なモデルは季節性パラメータを持ちますが、傾向は持ちません。

季節変動では、長さmの期間にわたって一定性が保たれると想定されます。mは季節の数であり、たとえば、m=4は、入力データが四半期ごとに集計される場合に使用できます。加算誤差を含むモデルの場合、季節パラメータの和は0である必要があります。乗算誤差を含むモデルの場合、季節パラメータの積は1である必要があります。

19.1.5 傾向と季節性のあるモデル

HoltとWintersは、指数平滑法モデルに傾向と季節性の両方を導入しました。

Holt-Wintersまたは三重指数平滑化としても知られる元のモデルでは、加算的な傾向と乗算的な季節性を考慮していました。拡張機能には、傾向減衰の有無にかかわらず、加算的および乗算的な傾向、季節性、誤差の様々な組合せを使用したモデルが含まれます。

19.1.6 予測間隔

予測間隔を計算するために、指数平滑法モデル(ESM)は3クラスに分割されます。

最も単純なクラスは、単純なESM、Holt法、Holt-Winters加法が含まれる線形モデルのクラスです。クラス2のモデル(乗算誤差、加算成分)は、正規性仮定の違反に対して近似的な補正を行います。クラス3のモデルは、単純なシミュレーション手法を使用して予測間隔を計算します。

19.2 指数平滑法モデルのデータの準備

指数平滑法(ESM)モデル用のデータを準備する方法について学習します。

ESMモデルを構築するには、次の情報を指定する必要があります。

  • 入力データ

  • ケースIDが日付型である場合は、集計レベルと方法

  • データがパーティション化されている場合は、パーティション化列

また、作成プロセスをより詳細に制御するために、モデル作成パラメータを任意に指定できます。これらのパラメータは、すべて次のデフォルト値を持っています。

  • モデル

  • 誤差の種類

  • 最適化基準

  • 予測期間

  • 予測範囲の確信度

  • 欠損値の処理

  • 入力系列が等間隔であるかどうか

関連項目:

使用可能なモデル設定のリストと解説は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

ノート:

モデル設定と同じ意味でハイパーパラメータという用語も使用されます。

19.2.1 入力データ

時系列分析では、順序付けされた入力データが必要です。したがって、各データ行は[インデックス, 値]のペアで構成される必要があり、インデックスで順序を指定します。

CREATE_MODELプロシージャを使用して指数平滑法(ESM)モデルの作成を開始する場合、CASE_ID_COLUMN_NAMEは入力のインデックスの計算に使用される列を指定し、TARGET_COLUMN_NAMEは観測された時系列値の計算に使用される列を指定します。時間列には、Oracleの番号、またはOracleの日付、タイムスタンプ、タイムゾーン付きのタイムスタンプ、またはローカル・タイムゾーン付きのタイムスタンプが格納されます。入力された時系列は、CASE_ID(時間ラベル)の値に従ってソートされます。ケースID列には欠損値を含めることはできません。値列には、NULLとして示した欠損値を含めることができます。ESMはパーティション化モデルもサポートしています。そのような場合、入力表にはパーティションを指定する追加の列が含まれています。同じパーティションIDを持つすべての[インデックス, 値]ペアは、1つの完全な時系列を形成します。すべてのモデルで同じモデル設定が使用されますが、指数平滑法アルゴリズムでは、パーティションごとに個別にモデルが作成されます。

データのプロパティによって、警告メッセージが表示されたり、設定が無視されたりすることがあります。ユーザーが乗算傾向か乗算季節性、あるいはその両方を使用してモデルを指定し、データにYt<= 0の値が含まれる場合、設定は無視され、モデル・タイプはデフォルトに設定されます。系列に含まれている値がユーザー指定の季節数よりも少ない場合、警告が表示され、季節性の指定は無視されます。

19.2.2 累積

指数平滑法アルゴリズムでは、列が日付型(datedatetimetimestamptimestamp with timezone、またはtimestamp with local timezone)である場合に累積の手順が適用されます。

ケースIDはNUMBER型の列にできます。この列のソート・インデックスは、時系列の値シーケンス内での各値の位置を表します。ケースID列は、日付型にすることもできます。日付型は、ユーザーが指定した累積期間に従って蓄積されます。型を問わず、ケースIDは列を等間隔の時系列に変換するために使用されます。NUMBER型のケースIDには累積は適用されません。たとえば、販促イベント関する時系列を考えてみましょう。時間列には各イベントの日付が含まれているものの、各日付は等間隔でない場合があります。ユーザーは、蓄積された、または変換された等間隔の時系列の間隔を指定する必要があります。この例では、ユーザーが間隔を月単位に指定すると、元の時系列から、等間隔の時系列が各カレンダー月の利益付きで生成されます。EXSM_INTERVALの設定は、間隔を指定するために使用されます。ユーザーは、EXSM_ACCUMULATEにもEXSM_ACCU_MAXなどの値を指定する必要があります。この場合、等間隔の月次系列は、観測された時系列値として、その次のすべてのイベントにわたる最大利益が含まれることになります。

19.2.3 欠損値

入力された時系列には、欠損値が含まれる可能性があります。ターゲット列のNULLエントリは、欠損値を示します。時間列の型がdatetimeの場合、累積プロシージャが欠損値を取り込む可能性もあります。EXSM_SETMISSINGの設定は、欠損値の処理方法を指定するために使用できます。特殊値EXSM_MISS_AUTOは、系列に欠損値が含まれている場合に、不規則な時系列として処理されることを示します。

注意:

欠損値処理の設定は、モデル設定と互換性がある必要があります。互換性がない場合は、エラーがスローされます。

19.2.4 予測

指数平滑法モデル(ESM)は、予測期間を指定することにより、予測の実行に適用できます。

EXSM_PREDICTION_STEPの設定は、予測期間を指定するために使用できます。予測期間は、時間列がdatetime型の場合は、間隔の数(EXSM_INTERVALの設定)の単位で表されます。時間列が数値である場合は、予測期間は予測するステップの数です。時系列が規則的か不規則的かを問わず、EXSM_PREDICTION_STEPは予測期間を指定します。

関連項目:

使用可能なモデル設定のリストと解説は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

注意:

モデル設定と同じ意味でハイパーパラメータという用語も使用されます。

19.2.5 パーティションによる並列性

Oracle Machine Learning for SQLでは、パーティションによる並列性がサポートされています。

たとえば、ユーザーは1つのパーティション列としてPRODUCT_IDを選択し、モデル作成で様々な製品の予測を生成できます。パーティションごとに個別の平滑化モデルが作成されますが、すべてのパーティションで同じモデル設定が共有されます。たとえば、EXSM_MODELEXSM_SIMPLEに設定されている場合、すべてのパーティション・モデルが単純指数平滑法モデルになります。異なるパーティションの時系列を異なるプロセスに分散し、並列に処理できます。各時系列のモデルは、連続的に作成されます。