15 指数平滑法

指数平滑法について学習します。

15.1 指数平滑法とは

指数平滑化法は、予測に幅広く使用されています。

指数平滑法は、半世紀以上に及ぶ予測で広く使用されています。戦略的、戦術的および運用レベルで応用できます。たとえば、戦略的レベルでは、投資利益率、成長率、イノベーションの効果などを推定するために予測が使用されます。戦術的レベルでは、原価、在庫要件、顧客満足などを推定するために予測が使用されます。運用レベルでは、ターゲットの設定や品質および標準への適合性を予想するために予測が使用されます。

最も簡単な形式の指数平滑法は、将来の値に対して過去のレベルが指数関数的に減少する効果をモデル化する単一のパラメータによる移動平均法です。様々な拡張機能を備えた指数平滑法は、Box-Jenkins自己回帰和分移動平均(ARIMA)アプローチなど、競合製品よりも幅広い種類のモデルをカバーします。Oracle Data Miningは、単一の誤差原因(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日)を参照してください。

15.1.1 指数平滑化法のモデル

指数平滑法のモデルは、直観的で柔軟性と拡張性のある予測モデルの広範囲なクラスです。

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

指数平滑法では、系列は過去に無限に続きますが、将来に対する過去の影響は平滑に指数関数的な速さで減衰すると仮定しています。減衰の平滑さの割合は、1つ以上の平滑化定数によって表現されます。平滑化定数は、モデルによって推定されるパラメータです。この仮定は、等価の再帰的定式化を使用することで現実のデータのモデリングにとって実用的なものになります。これは、過去の履歴に基づいた現在のレベルの推定値と、その推定値に対して現在の状況にのみ依存するショックに関してのみ表現されます。この手順には、最初の観測の直前の期間に対する推定が必要なり、それによって過去の履歴のすべてをカプセル化します。この最初の観測値は、モデリング手順によって値が推定された追加のモデル・パラメータです。

傾向拡張機能や季節性拡張機能などのESMの構成要素には、加法的な形式または乗法的な形式があります。より単純な加法的なモデルは、ショック、傾向および季節性が再帰的定式化の範囲内の線形効果であると仮定します。

15.1.2 単純指数平滑法

単純指数平滑法は、データが定常的な平均の付近で変動し、傾向や季節性のパターンがないことを前提としています。

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

15.1.3 傾向があり季節性がないモデル

加法的(線形の)傾向に優先される形式は、Holtのメソッドまたは二重指数平滑法と呼ばれることがあります。

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

15.1.4 季節性があり傾向がないモデル

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

季節変動は期間mの間は均衡が取れていると仮定されます。このmは季節の数です。たとえば、m=4は、入力データが四半期ごとに集計されている場合に使用できます。加法的誤差のあるモデルの場合、季節性のパラメータの合計はゼロ(0)であることが必要です。乗法的誤差のあるモデルの場合、季節性パラメータの積は1であることが必要です。

15.1.5 傾向と季節性があるモデル

HoltおよびWintersにより、傾向と季節性の両方が指数平滑法モデル(ESM)に導入されました。元のモデル(Holt-Wintersまたは三重指数平滑法とも呼ばれる)では、加法的な傾向と乗法的な季節性が考慮されていました。拡張機能には、加法的傾向と乗法的傾向、季節性と誤差、傾向減衰の有無の各種組合せを備えたモデルが含まれています。

15.1.6 予測区間

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

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

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

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

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

  • 入力データ

  • 集計レベルとメソッド(ケースIDが日付型の場合)

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

また、構築プロセスをより詳細に制御するために、ユーザーは必要に応じてモデル構築パラメータを指定できます(これらすべてのパラメータにはデフォルト値が設定されています)。

  • モデル

  • 誤差タイプ

  • 最適化基準

  • 予測ウィンドウ

  • 予測範囲の信頼水準

  • 欠損値の処理

  • 入力の系統が等間隔かどうか

参照:

指数平滑法モデルの設定については、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

15.2.1 入力データ

時系列分析には、順序付けされた入力データが必要です。そのため、各データ行は[索引、値]のペアで構成されている必要があります。この索引により順序を指定します。

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

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

15.2.2 累計

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

ケースIDは、NUMBER列にすることが可能です。その列のソート索引は時系列順に並んだ値の位置を表します。ケースID列は、日付型にすることも可能です。日付型は、ユーザー指定の累計ウィンドウに従って累計されます。型とは無関係に、ケースIDは列を等間隔の時系列に変換するために使用されます。ケースIDの型がNUMBERの場合、累計は適用されません。たとえば、販促イベントについて時系列について考えてみます。時間列には、各イベントの日付が含まれていて、その日付は不均等な間隔になることがあります。ユーザーは間隔区間を指定する必要があり、これが累計または変換される等間隔の時系列の間隔になります。この例では、ユーザーが区間に月を指定すると、元の時系列からカレンダ月ごとの収益が含まれた等間隔の時系列が生成されます。間隔区間の指定には、EXSM_INTERVALの設定を使用します。ユーザーは、EXSM_ACCUMULATEの値も指定する必要があります。たとえば、EXSM_ACCU_MAXを指定すると、この例の場合、等間隔の月間系列には、その月のすべてのイベントにわたる最大収益が観測された時系列値として格納されます。

15.2.3 欠損値

入力時系列には、欠損値を含めることができます。ターゲット列のNULLエントリは、欠損値を示します。時間列の型が日時の場合、累計プロシージャに欠損値を導入することもできます。欠損値の処理方法を指定するには、EXSM_SETMISSINGの設定を使用できます。特殊な値EXSM_MISS_AUTOは、系列に欠損値が含まれているときに、その系列が不規則時系列として処理されることを意味します。

ノート:

欠損値処理の設定は、モデル設定に適合している必要があります。そうでない場合は、エラーがスローされます。

15.2.4 予測

指数平滑法モデル(ESM)は、予測ウィンドウを指定することで予測に応用できます。

予測ウィンドウを指定するには、EXSM_PREDICTION_STEPの設定を使用できます。予測ウィンドウが区間数(EXSM_INTERVALの設定)で表されている場合、時間列の型は日時型になります。時間列が数値の場合、期間ウィンドウは予測するステップ数になります。時系列が定期であるか不定期であるかに関係なく、予測ウィンドウはEXSM_PREDICTION_STEPで指定します。

15.2.5 パーティション単位の並列性

Oracle Advanced Analyticsは、パーティション単位の並列性をサポートしています。

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