3.4.3 モデルの構築
時系列データを使用してモデルを構築するには、探索段階で生成されたOMLプロキシ・オブジェクトESM_SH_DATAで指数平滑法アルゴリズムを使用します。
Oracleには、時系列に対する指数平滑法アルゴリズムが用意されています。
指数平滑法は、時系列データの予測手法です。 移動平均法の一種であり、過去の観測に対して指数関数的に減少する重みを割り当てます。 傾向や季節性の拡大などの指数平滑法モデル(ESM)の構成要素は、加法的または乗法的な形式を取ることがあります。 加法的形式の場合、変動の振幅はレベルに依存しませんが、乗法的形式の場合、変動はレベルと関連します。 より単純な加法的モデルでは、誤差やノイズ、傾向および季節性が再帰的定式化の範囲内の線形効果であると仮定します。
監視あり学習アルゴリズムを使用してモデルを構築するには、データのサブセットをトレーニング・データおよびテスト・データに使用できます。 時系列モデルでは、通常、履歴データを使用して未来を予測します。 これは、一般にデータをランダムにトレーニング・セットとテスト・セットに分割する分類や回帰のモデル検証とは異なります。 このユースケースでは、モデルは常に過去の情報に基づいて現在の値を予測するため、データ・セットを分割する必要はありません。 つまり、同じデータ・セットに対してトレーニングおよびテストが行われるように見えますが、モデルが適用されると、予測は常に前の日付に基づきます。 このユース・ケースでは、omlプロキシ・オブジェクトESM_SH_DATAを使用します。
- 指数平滑法モデル(ESM)に関するヘルプを表示するには、次のスクリプトを実行します:
help(oml.esm)
- 四半期設定を使用したHolt-Wintersモデルの作成
ESM_SH_DATA
プロキシ・オブジェクトを使用してモデルを構築するには、次の文を実行します:try: oml.drop(model = 'ESM_SALES_FORECAST_1') except: pass setting = {'EXSM_INTERVAL':'EXSM_INTERVAL_QTR', # accumulation interval = quarter 'EXSM_PREDICTION_STEP': '4', # prediction step = 4 quarters 'EXSM_MODEL': 'EXSM_WINTERS', # ESM model = Holt-Winters 'EXSM_SEASONALITY': '4', # seasonal cycle = 4 quarters 'EXSM_SETMISSING': 'EXSM_MISS_AUTO'} # treat missing values as an irregular time series train_x=ESM_SH_DATA[:,0] train_y=ESM_SH_DATA[:,1] esm_mod = oml.esm(**setting).fit(train_x, train_y, time_seq = 'TIME_ID')
スクリプトを詳しく見てみます。
EXSM_INTERVAL
: データ・セットの間隔または日、週、月などのインターバル・サイズの単位を指定します。この設定は、日時型の時間列にのみ適用されます。 たとえば、四半期ごとの売上を予測する場合、設定はEXSM_INTERVAL_QTR
です。EXSM_PREDICTION_STEP
: 作成する予測の数を指定します。 たとえば、四半期を表す各値を表示する場合、4の値は将来に4つの値(四半期)予測を示します。EXSM_MODEL
: 使用する指数平滑法モデルのタイプを指定します。 たとえば、EXSM_WINTERSは、加算トレンドおよび乗算季節性を持つHolt-Wintersの3重指数平滑法モデルを表します。 このタイプのモデルでは、加法的傾向と乗法的傾向、季節性と誤差、傾向減衰の有無の各種組合せが考慮されます。EXSM_SEASONALITY
: シーズンの存続期間を指定します。 このパラメータでは、季節周期の長さとして正の整数値を指定します。 取得する値は1より大きくする必要があります。 たとえば、4は、4つの値のグループごとに季節サイクルを形成することを意味します。これは、4つの四半期を使用して1年を表す場合に意味があります。EXSM_SETMISSING
: 欠落値の処理方法を指定します。 時系列では、特殊値EXSM_MISS_AUTOは、系列に欠落値が含まれている場合、不規則な時系列として扱われることを示します。
これで、モデルの構築ステージが完了します。
親トピック: 時系列ユース・ケース