19 指数平滑法
指数平滑法アルゴリズムについて学習します。
19.1 指数平滑法について
指数平滑法は、時系列データの予測手法です。これは、指数関数的に減少する重みが過去の観察に割り当てられる移動平均法です。
指数平滑法は、半世紀以上に及ぶ予測で広く使用されています。予測は、履歴データおよびパターンに基づく予測です。preItには、戦略、戦術および操作レベルのアプリケーションがあります。たとえば、戦略的レベルでは、投資利益率、成長率、イノベーションの効果などを推定するために予測が使用されます。戦術的レベルでは、原価、在庫要件、顧客満足などを推定するために予測が使用されます。運用レベルでは、ターゲットの設定や品質および標準への適合性を予想するために予測が使用されます。
最も簡単な形式の指数平滑法は、将来の値に対して過去のレベルが指数関数的に減少する効果をモデル化する単一のパラメータによる移動平均法です。指数平滑法は、様々な拡張によって、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』(Department of Econometrics and Business Statistics、Monash大学、VIC 3800、オーストラリア、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.2 指数平滑法モデル用のデータの準備
指数平滑法(ESM)モデルのデータを準備する方法について学習します。
ESMモデルを構築するには、次の項目を指定する必要があります。
-
入力データ
-
集計レベルとメソッド(ケースIDが日付型の場合)
-
パーティション列(データがパーティション化されている場合)
また、構築プロセスをより詳細に制御するために、ユーザーは必要に応じてモデル構築パラメータを指定できます(これらすべてのパラメータにはデフォルト値が設定されています)。
-
モデル
-
誤差タイプ
-
最適化基準
-
予測ウィンドウ
-
予測範囲の信頼水準
-
欠損値の処理
-
入力の系統が等間隔かどうか
参照:
使用可能なモデル設定のリストと説明は、DBMS_DATA_MINING -アルゴリズムの設定: 指数平滑法モデルを参照してください。
ノート:
hyperparameterという用語は、モデル設定でも同じ意味で使用されます。19.2.1 入力データ
時系列分析には、順序付けされた入力データが必要です。そのため、各データ行は[索引、値]のペアで構成されている必要があります。この索引により順序を指定します。
CREATE_MODEL
またはCREATE_MODEL2
プロシージャを使用して指数平滑法(ESM)モデルを作成する際は、CASE_ID_COLUMN_NAME
およびTARGET_COLUMN_NAME
パラメータを使用して、入力索引および観測された時系列値の計算に使用する列をそれぞれ指定します。時間列には、Oracle数値またはOracle日付、タイムスタンプ、タイムゾーン付きタイムスタンプまたはローカル・タイムゾーン付きタイムスタンプが格納されます。ケースID列の型がOracle NUMBER
である場合、モデルでは入力時系列が等間隔であるとみなされます。重要なのは順序位置のみで、数値が小さいほど後の時間を示します。特に、入力時系列についてはcase_id
の値(時間ラベル)に基づいてソートされます。case_id列には、欠損値を含めることはできません。ギャップを示すには、欠損値をNULL
として値列に格納します。隣接する時間ラベルの差の大きさは関係なく、間隔やギャップのサイズの計算には使用されません。CASE_ID
として渡される整数値は、負ではないと想定されます。
ESMでは、パーティション化されたモデルもサポートされます。その場合、入力表にはパーティションを指定する追加の列が含まれています。同じパーティションIDのすべての[索引、値]ペアは、1つの完全な時系列を形成します。指数平滑法アルゴリズムでは、パーティションごとに独立したモデルが作成されますが、すべてのモデルで同じモデル設定が使用されます。
データ・プロパティによって警告通知が発生したり、設定が無視されたりすることがあります。ユーザーが乗法的傾向と乗法的季節性の両方またはどちらかを指定したモデルを設定した場合で、データに値Yt<= 0が含まれていると、モデル・タイプがデフォルトに設定されます。系列に含まれている値がユーザーが指定した季節数よりも少ない場合、季節性の指定は無視され、警告が発行されます。
ユーザーがパラメータEXSM_SERIES_LIST
を使用して予測子系列のリストを選択した場合は、入力データに最大20の追加の時系列列を含めることができます。
19.2.2 累計
指数平滑法アルゴリズムでは、列が日付型(date
、datetime
、timestamp
、timestamp with timezone
またはtimestamp with local timezone
)の場合に累計手順が適用されます。
ケースIDは、NUMBER
列にすることが可能です。その列のソート索引は時系列順に並んだ値の位置を表します。ケースID列は、日付型にすることも可能です。日付型は、ユーザー指定の累計ウィンドウに従って累計されます。型とは無関係に、ケースIDは列を等間隔の時系列に変換するために使用されます。ケースIDの型がNUMBER
の場合、累計は適用されません。たとえば、販促イベントについて時系列について考えてみます。時間列には、各イベントの日付が含まれていて、その日付は不均等な間隔になることがあります。ユーザーは間隔区間を指定する必要があり、これが累計または変換される等間隔の時系列の間隔になります。この例では、ユーザーが区間に月を指定すると、元の時系列からカレンダ月ごとの収益が含まれた等間隔の時系列が生成されます。間隔区間の指定には、EXSM_INTERVAL
の設定を使用します。ユーザーは、EXSM_ACCUMULATE
の値も指定する必要があります。たとえば、EXSM_ACCU_MAX
を指定すると、この例の場合、等間隔の月間系列には、その月のすべてのイベントにわたる最大収益が観測された時系列値として格納されます。
19.2.3 欠損値
入力時系列には、欠損値を含めることができます。ターゲット列のNULL
エントリは、欠損値を示します。時間列の型が日時の場合、累計プロシージャに欠損値を導入することもできます。欠損値の処理方法を指定するには、EXSM_SETMISSING
の設定を使用できます。特殊な値EXSM_MISS_AUTO
は、系列に欠損値が含まれているときに、その系列が不規則時系列として処理されることを意味します。
ノート:
欠損値処理の設定は、モデル設定に適合している必要があります。そうでない場合は、エラーがスローされます。
19.2.4 予測
指数平滑法(ESM)モデルは、予測ウィンドウを指定することで予測に応用できます。
予測ウィンドウを指定するには、EXSM_PREDICTION_STEP
の設定を使用できます。予測ウィンドウが区間数(EXSM_INTERVAL
の設定)で表されている場合、時間列の型は日時型になります。時間列が数値の場合、期間ウィンドウは予測するステップ数になります。時系列が定期であるか不定期であるかに関係なく、予測ウィンドウはEXSM_PREDICTION_STEP
で指定します。
参照:
使用可能なモデル設定のリストと説明は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。ノート:
hyperparameterという用語は、モデル設定でも同じ意味で使用されます。19.2.5 パーティション単位の並列性
Oracle Machine Learning for SQLでは、パーティション単位の並列度がサポートされます。
たとえば、ユーザーは1つのパーティション列としてPRODUCT_ID
を選択して、モデル・ビルドで別の製品の予測を生成できます。パーティションごとに個別の平滑法モデルがビルドされますが、すべてのパーティションが同じモデル設定を共有します。たとえば、EXSM_MODEL
の設定がEXSM_SIMPLE
に設定されている場合は、すべてのパーティション・モデルが単純指数平滑法モデルになります。それぞれのパーティションからの時系列は、別々のプロセスに分散して並列で処理できます。時系列ごとのモデルは、逐次的にビルドされます。
19.2.6 初期値の最適化
長い季節的周期では、ESMモデルの初期値が初期推定を超えて最適化されないようにすることも選択できます。
これは標準的なESM最適化とは対照的で、標準的なESM最適化ではエラーの低減を図るため、最適化プロセス中に初期値が調整されます。初期値ではなくレベル、傾向、季節性パラメータのみを最適化することで、パフォーマンスの大幅な向上と最適化の収束速度を上げることができます。長期の季節変動が正確な予測に大きく貢献することが専門知識からわかっている場合は、このアプローチが有効です。パフォーマンス上の利点はありますが、一般的な短い季節周期では初期値の最適化を無効にすることはお薦めしません。モデルのオーバーフィットや信頼性の低い信頼限界が生じる可能性があるためです。
19.3 複数の時系列モデル
この操作では、時系列ごとにバックキャストおよび予測が生成され、識別されたターゲット系列の信頼限界の上限と下限が計算されます。この操作は、降雨、売上、顧客満足度など、様々なイベントの予測に使用できます。
天気予報の例では、温度および湿度属性を依存または相関の時系列とみなすことができ、降雨をターゲット時系列として識別できます。
関連トピック
19.3.1 時系列でのバックキャスト
降雨、温度、湿度の複数時系列の例では、バックキャストは履歴データのモデルによって生成される推定です。
たとえば、降雨が湿度に依存している場合、対象期間の湿度の値があると便利です。すでに発生しており、モデルの構築に使用されている期間(先週など)には、先月からではなく先週の湿度が必要です。
19.3.2 複数時系列モデルの構築方法
EXSM_SERIES_LIST
を指定して、複数の時系列を構築します。残りのパラメータは、ESMモデルと同じです。
天気予報の例では、ビルド・データセットとスコア・データセットを設定できます。ビルド・データセットには、識別されたターゲット系列(雨)、依存する系列(温度および湿度)が含まれます。DM$VP
モデル詳細ビューは、識別されたターゲット系列(雨)の予測を依存系列(温度と湿度)とともに表示するために使用します。DM$VR
モデル詳細ビューは、ターゲット系列(雨)、湿度および温度のバックキャストを表示するために使用します。時系列モデルのバックキャストおよび予測は、一般化線形モデル、ニューラル・ネットワーク、時系列回帰用のXGBoostなどの回帰手法に供給できます。
次の例では、ターゲット属性DAXは予測対象の株式市場インデックスです。一般的な株式市場インデックスであるSMI、CAC、FTSEの依存属性は、複数の系列属性として渡されます。指数平滑法設定を使用して、系列リスト(EXSM_SERIES_LIST
)と複数の属性を指定し、複数時系列モデルを構築します。
19.4 時系列回帰
複数系列ビルドを使用した時系列回帰が可能です。時系列回帰は時系列モデルに組込み可能な特徴を拡張するため、予測の精度が向上する可能性があります。「ターゲット」系列に関連する、または依存すると考えられるその他の時系列を、追加の特徴にすることもできます。
温度と湿度は両方とも降雨の依存時系列であるため、これら2つの属性の履歴データを調べることで、将来の降雨を予測できます。温度が高く、湿度が高い場合、降雨の可能性が高くなります。
時系列回帰モデルでは、温度と湿度の関係、およびその他の要因(予測地点の場所と標高など)が考慮されます。このモデルでは降雨量(ターゲット系列)の予測が上限と下限とともに生成されます。たとえば、雨の確率が90%で、降雨量の上限が1インチであるとモデルが予測した場合は、雨具を準備しておくと安心です。
バックキャストを使用すると、将来の期間の予測の精度を向上できる可能性があります。予測に回帰を使用する際の課題は、予測子の将来値を指定しなければならない点です。たとえば、温度と湿度を予測子にした予測では、それらの将来値を降雨系列と同じ時系列で把握する必要があります。
関連トピック
参照:
Hyndman, R.J.およびAthanasopoulos, G.共著。『Forecasting: Principles and Practice』(第3版)(Department of Econometrics and Business Statistics、Monash大学、VIC 3800、オーストラリア、2021年5月、第7章)
19.4.1 時系列回帰モデルの構築方法
Oracleの指数平滑法では、将来の値をターゲット系列と同じタイム・スケールで知るという問題を、予測子の時系列を指数平滑法を使用して予測する方法で解決します。
将来期間を予測する回帰モデルを構築するには、相関系列にその将来期間の値が必要です。したがって、すべての相関系列を予測する必要があります。相関系列のバックキャストは相関系列値の平滑バージョンとして含まれており、これを回帰モデルへの入力として使用できます。ターゲット系列のバックキャストはOracle機械学習時系列モデルの標準出力の一部であるため、これらも使用できます。ターゲット系列のバックキャストも回帰モデルに含めることができます。
ビルドおよびスコア・データセットを作成することもできます。ビルド・データセットには、ターゲット系列(予測系列。例: 降雨)、バックキャストしたターゲット系列(例: バックキャストした降雨)、バックキャストした依存系列(例: バックキャストした温度および湿度)が含まれます。時系列モデルのバックキャストと予測は、どちらも回帰モデルへの入力として使用できます。系列はすべて同じ期間を使用するため、ターゲットと予測子の値が共存することになります。
スコア・データセットはビルド・データセットと同じスキーマに従いますが、将来の値に必要な予測を提供します。スコア・データセットは回帰モデルのApplyプロシージャに提供できます。バックキャストはより平滑で、予測と構造的な整合性があります。ターゲット系列のバックキャストではベースライン・モデルと比較して回帰モデルの増分的な改善が見られます。
データベースに汎用性があるため、様々な時系列回帰のバリエーションを使用できます。ビルド・データセットおよびスコア・データセットに対する環境変更や休日など、ユーザーは質的変数を考慮する要因を追加できます。複数時系列回帰では、フラグ変数を使用して、依存変数に重大な影響を及ぼす可能性のあるイベントまたは条件を考慮できます。たとえば、特定の日が祝日かどうか、または特定の月が冬の月かどうかを示すフラグ変数を使用できます。このような要因をモデルに含めると、質的変数が依存変数に与える影響を考慮できるため、予測の精度が向上します。
休日はバイナリ値列(0および1)として表すことができます。たとえば、national_holiday
列は、祝日の場合は1、その他の場合は0の値になります。需要予測では、競合製品の導入など、環境で認識された変化をバイナリ値列(導入前は0、導入後は1)として示すことができます。
さらに、特殊なケースとして、依存系列の将来の値がわかっている場合は、元のビルド表に結合するデータセットを回帰ビルド・プロシージャで作成し、バックキャストを元の値に置き換えることができます。ビルド・データセットはこのユーザー作成データセットに置換されます。
次の例では、株式市場データを使用して、トレーニング、実績およびテストのデータセットを作成します。ESMと回帰の精度を比較するため、実績値の特殊ケースが予測データセットに提供されています。変数prod
は質的値を考慮するフラグ変数です。これは新製品の導入など、環境の変化を示します。DM$VR<model_name>
モデル詳細ビューには、時系列回帰ビルド・スキーマまたはターゲット列の予測の詳細が表示されます。
関連トピック