7.9 指数平滑法モデル

ore.odmESMクラスは、データベース内の指数平滑法モデル(ESM)アルゴリズムを使用してクラスタリング・モデルを作成します。

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

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

複数の時系列を操作できると、時系列回帰への入力を作成するのに便利です。複数の時系列で、時系列回帰への入力として使用する、共通の時間間隔が設定された複数の時系列モデルを作成します。時系列モデルの1つを、関心があるターゲット時系列として指定します。複数時系列モデルの詳細は、Oracle Machine Learning for SQLコンセプト・ガイドを参照してください。

指数平滑化の動作は、許容可能な時系列モデルを自動的に検索するように変更されています。モデル・タイプ(EXSM_MODEL)を指定しなかった場合、アルゴリズムはデフォルトでモデル・タイプを自動的に決定します。詳細は、Oracle Machine Learning for SQLコンセプト・ガイドを参照してください。

ESMモデルの設定

次の表に、ESMモデルに適用される設定を示します。

表7-8 ESMモデルの設定

設定名 設定値 説明
EXSM_MODEL

{EXSM_SIMPLE、EXSM_SIMPLE_MULT、EXSM_HOLT、EXSM_HOLT_DMP、EXSM_MUL_TRND、EXSM_MULTRD_DMP、EXSM_SEAS_ADD、EXSM_SEAS_MUL、EXSM_HW、EXSM_HW_DMP、EXSM_HW_ADDSEA、EXSM_DHW_ADDSEA、EXSM_HWMT、EXSM_HWMT_DMP}のいずれか

この設定により、モデルが指定されます。

EXSM_SIMPLE: 単純指数平滑法モデルが適用されます。

EXSM_SIMPLE_MULT: 積乗型誤差を含む単純指数平滑法モデルが適用されます。

EXSM_HOLT: Holt線形指数平滑法モデルが適用されます。

EXSM_HOLT_DMP: 減衰傾向を持つHolt線形指数平滑法モデルが適用されます。

EXSM_MUL_TRND: 積乗型傾向を持つ指数平滑法モデルが適用されます。

EXSM_MULTRD_DMP: 積乗型減衰傾向を持つ指数平滑法モデルが適用されます。

EXSM_SEAS_ADD: 加法型季節性を持つが傾向を持たない指数平滑化が適用されます。

EXSM_SEAS_MUL: 積乗型季節性を持つが傾向を持たない指数平滑化が適用されます。

EXSM_HW: Holt-Winters三重指数平滑法モデル、加法型傾向、積乗型季節性が適用されます。

EXSM_HW_DMP: 減衰傾向、加法型傾向、積乗型季節性を持つHolt-Winters積乗型指数平滑法モデルが適用されます。

EXSM_HW_ADDSEA: Holt-Winters加法型指数平滑法モデル、加法型傾向、加法型季節性が適用されます。

EXSM_DHW_ADDSEA: 減衰傾向、加法型傾向、加法型季節性を持つHolt-Winters加法型指数平滑法モデルが適用されます。

EXSM_HWMT: 積乗型傾向、積乗型傾向、積乗型季節性を持つHolt-Winters積乗型指数平滑法モデルが適用されます。

EXSM_HWMT_DMP: 減衰積乗型傾向、積乗型傾向、積乗型季節性を持つHolt-Winters積乗型指数平滑法モデルが適用されます。

デフォルト値はEXSM_SIMPLEです。

EXSM_SEASONALITY

X > 1

この設定により、季節性循環の長さとして正の整数値が指定されます。指定する値は、1より大きい必要があります。たとえば、4の値を設定すると、4つの各監視グループが季節性循環を形成することを意味します。

この設定は、季節性を持つモデルにのみ適用可能であり、指定する必要があります。それ以外の場合、モデルによりエラーがスローされます。

EXSM_INTERVALが設定されていない場合、この設定は元の入力時系列に適用されます。EXSM_INTERVALが設定されている場合、この設定は累積された時系列に適用されます。

EXSM_INTERVAL

{EXSM_INTERVAL_YEAR、EXSM_INTERVAL_QTR、EXSM_INTERVAL_MONTH、EXSM_INTERVAL_WEEK、EXSM_INTERVAL_DAY、EXSM_INTERVAL_HOUR、EXSM_INTERVAL_MIN、EXSM_INTERVAL_SEC}のいずれか

この設定は、時間列(case_id列)が日時タイプである場合にのみ適用され、指定する必要があります。この設定により、累積された等間隔の時系列の間隔が指定されます。

入力表の時間列が日時型の場合、EXSM_INTERVAL設定が指定されていないと、モデルからエラーがスローされます。

入力表の時間列がOracle数値型の場合、EXSM_INTERVAL設定が指定されていると、モデルからエラーがスローされます。

EXSM_ACCUMULATE

{EXSM_ACCU_TOTAL、EXSM_ACCU_STD、EXSM_ACCU_MAX、EXSM_ACCU_MIN、EXSM_ACCU_AVG、EXSM_ACCU_MEDIAN、EXSM_ACCU_COUNT}のいずれか

この設定は、時間列が日時タイプである場合にのみ適用され、指定する必要があります。この設定により、入力時系列から累積された時系列の値を生成する方法が指定されます。

EXSM_SETMISSING

{EXSM_MISS_MIN、EXSM_MISS_MAX、EXSM_MISS_AVG、EXSM_MISS_MEDIAN、EXSM_MISS_LAST、EXSM_MISS_FIRST、EXSM_MISS_PREV、EXSM_MISS_NEXT、EXSM_MISS_AUTO}のいずれか。

この設定では、欠損値の処理方法を指定します。欠損値は、入力データや時系列の累積処理で発生することがあります。数値またはオプションのどちらかを指定できます。数値が指定された場合は、すべての欠損値がその数値に設定されます。

EXSM_MISS_MIN: 欠損値を累積時系列の最小値に置換します。

EXSM_MISS_MAX: 欠損値を累積時系列の最大値に置換します。

EXSM_MISS_AVG: 欠損値を累積時系列の平均値に置換します。

EXSM_MISS_MEDIAN: 欠損値を累積時系列の中央値に置き換えます。

EXSM_MISS_LAST: 欠損値を累積時系列の最後の存在する値に置換します。

EXSM_MISS_FIRST: 欠損値を累積時系列の最初の存在する値に置換します。

EXSM_MISS_PREV: 欠損値を累積時系列の前の存在する値に置換します。

EXSM_MISS_NEXT: 欠損値を累積時系列の次の存在する値に置換します。

EXSM_MISS_AUTO: EXSMモデルは入力データを不規則な(等間隔でない)時系列として処理します。

この設定が指定されていない場合、EXSM_MISS_AUTOがデフォルト値です。その場合、モデルでは入力時系列が不規則な時系列として処理され、欠損値がギャップとして表示されます。

EXSM_PREDICTION_STEP

0 < X <= 30の範囲の整数。

デフォルト値: 1。

この設定では、何ステップ先の予測を行うかを指定します。

設定されていない場合、デフォルト値は1です。この場合、モデルでは1ステップ先の予測が提供されます。30より大きい値を指定すると、エラーになります。

EXSM_CONFIDENCE_LEVEL

0 < X < 1の範囲の数値。

この設定では、予測に対して目的とする信頼水準を指定します。

指定した信頼区間の上限と下限が報告されます。この設定が指定されていない場合、デフォルトの信頼水準は0.95です。

EXSM_OPT_CRITERION

{EXSM_OPT_CRIT_LIK、EXSM_OPT_CRIT_MSE、EXSM_OPT_CRIT_AMSE、EXSM_OPT_CRIT_SIG、EXSM_OPT_CRIT_MAE}のいずれか。

この設定では、目的とする最適化基準を指定します。最適化基準は、同じデータへのモデルの適合性を比較するための診断として役立ちます。

EXSM_OPT_CRIT_LIK: モデルの対数尤度の2倍を減算。

EXSM_OPT_CRIT_MSE: モデルの平均平方誤差。

EXSM_OPT_CRIT_AMSE: ユーザー指定の時間ウィンドウの平均平方誤差。

EXSM_OPT_CRIT_SIG: モデルの残差の標準偏差。

EXSM_OPT_CRIT_MAE: モデルの平均絶対誤差。

デフォルト値は、EXSM_OPT_CRIT_LIKです。

EXSM_NMSE

x >= 0

この設定により、誤差メトリックの平均二乗誤差の平均(AMSE)を計算するときに使用されるウィンドウの長さが指定されます。

EXSM_SERIES_LIST

ノート:

Oracle Database 23aiでのみ使用できます。

時系列列のカンマ区切りリスト

この設定を使用すると、ターゲット系列に加えて最大20個の予測子系列を予測できます。

EXSM_SERIES_LIST内の列名は、一重引用符で囲みます。個々の列名ではなく、リストを一重引用符で囲むことに注意することが重要です。次に例を示します。

INSERT INTO <settings_table_name VALUES(dbms_data_mining.exsm_series_list,  ‘<column1>,<column2>,<column3>,<column4>’);

接頭辞DM$が作成およびスコアリング・データ・セットに追加されるためには、列名が125文字未満である必要があります。

EXSM_INITVL_OPTIMIZE

ノート:

Oracle Database 23aiでのみ使用できます。

EXSM_INITVL_OPTIMIZE_ENABLE

EXSM_INITVL_OPTIMIZE_DISABLE

設定EXSM_INITVL_OPTIMIZEによって、モデルの作成中に初期値が最適化されるかどうかが決まります。デフォルト値はEXSM_INITVL_OPTIMIZE_ENABLEです。

ノート:

EXSM_INITVL_OPTIMIZEEXSM_INITVL_OPTIMIZE_DISABLEに設定できるのは、ユーザーがEXSM_MODELEXSM_HWまたはEXSM_HW_ADDSEAに設定した場合のみです。EXSM_MODELが別のモデル・タイプに設定されているか、指定されていない場合、エラー40213 (競合する設定)がスローされ、モデルは作成されません。

例7-8 ore.odmESM関数の使用方法

この例では、データ・フレームIRIS: を一時データベース表IRISにプッシュし、指数平滑法モデルを作成します。

# Turn off row ordering warnings.

options(ore.warn.order=FALSE)

# Data setup

set.seed(7654)
N <- 100
dat <- data.frame(ID=1:N, VAL=runif(N))

# Create the a temporary OML4R proxy object DAT.

DAT <- ore.push(dat)

# Create an ESM regression model object. Fit the ESM model according to the data and setting parameters.

esm.mod  <- ore.odmESM(VAL ~ ., DAT,
    odm.settings = list(case_id_column_name = "ID",
                        exsm_prediction_step = 4))
    
esm.mod
summary(esm.mod)

この例のリスト

Call: ore.odmESM(formula = VAL ~ ., data = DAT, odm.settings = list(case_id_column_name = "ID", exsm_prediction_step = 4))
Settings:                                                 
                                                               value 
         confidence.level                                        .95 
         model                                                 imple 
         nmse                                                      3
         optimization.crit                              opt.crit.lik
         prediction.step                                           4
         setmissing                                        miss.auto
         odms.details                                    odms.enable
         odms.missing.value.treatment        odms.missing.value.auto
         odms.sampling                         odms.sampling.disable
         prep.auto                                                ON
Call: ore.odmESM(formula = VAL ~ ., data = DAT, odm.settings = list(case_id_column_name = "ID", exsm_prediction_step = 4))
Settings:
                                                      value
       confidence.level                                 .95 
       model                                         simple
       nmse                                               3
       optimization.crit                       opt.crit.lik
       prediction.step                                    4
       setmissing                                 miss.auto
       odms.details                             odms.enable
       odms.missing.value.treatment odms.missing.value.auto
       odms.sampling                  odms.sampling.disable
       prep.auto                                         ON 
Predictions:
      CASE_ID      VALUE PREDICTION        LOWER   UPPER
  1         1 0.68847989  0.5414108         NA      NA
  2         2 0.63346191  0.5414255         NA      NA 
  3         3 0.34073466  0.5414347         NA      NA
  4         4 0.41106593  0.5414146         NA      NA 
  5         5 0.17601063  0.5414016         NA      NA
  6         6 0.82879446  0.5413650         NA      NA
  7         7 0.23504359  0.5413938         NA      NA
  8         8 0.14222260  0.5413631         NA      NA 
  9         9 0.76561760  0.5413232         NA      NA 
  10       10 0.90813842  0.5413457         NA      NA 
  11       11 0.59706210  0.5413823         NA      NA 
  12       12 0.44463468  0.5413879         NA      NA 
  13       13 0.95294541  0.5413782         NA      NA 
  14       14 0.58209937  0.5414194         NA      NA
  15       15 0.62295773  0.5414235         NA      NA
  16       16 0.59711650  0.5414316         NA      NA
  17       17 0.41131782  0.5414372         NA      NA
  18       18 0.79952871  0.5414242         NA      NA
  19       19 0.12635680  0.5414500         NA      NA
  20       20 0.04773946  0.5414085         NA      NA