Skip to content

Latest commit

 

History

History
54 lines (42 loc) · 4.92 KB

時系列予測分析のコツ.md

File metadata and controls

54 lines (42 loc) · 4.92 KB

予測分析のコツ

一、異なる粒度での予測

  1. 週別/月別の時系列予測

    • 通常、ビジネスシーンでは週別の時系列は年間周期(52週)、月別の時系列は年間周期(12ヶ月)があります。
    • ETS、Arima、Prophet、機械学習、深層学習が使用可能です。
      • 各時系列の履歴データが1年未満の場合、ETS、Arimaアルゴリズムを推奨します。
      • 各時系列の履歴データが1年以上で、時系列が少ない場合、Prophetアルゴリズムを推奨します。
      • 履歴データが1年以上のものと未満のものが混在し、時系列が多い場合、機械学習または深層学習アルゴリズムを推奨します。機械学習アルゴリズムを使用する場合、特徴量には少なくとも過去1週/1月、52週/12月の観測値と外部変数の値を含める必要があります。
  2. 日別の時系列予測

    • 通常、ビジネスシーンでは日別の時系列は二重周期性(週単位の7日と年単位の365日)があります。
    • Prophet、機械学習、深層学習が使用可能です。
      • 各時系列の履歴データが1年未満の場合、Prophetアルゴリズムを推奨し、週単位の周期性のみを考慮します。モデル設定は yearly_seasonality = False, weekly_seasonality = True とします。
      • 各時系列の履歴データが1年以上で、時系列が少ない場合、Prophetアルゴリズムを推奨し、二重周期性を考慮します。モデル設定は yearly_seasonality = True, weekly_seasonality = True とします。
      • 履歴データが1年以上のものと未満のものが混在し、時系列が多い場合、機械学習または深層学習アルゴリズムを推奨します。機械学習アルゴリズムを使用する場合、特徴量には少なくとも過去1日、7日、365日の観測値と外部変数の値を含める必要があります。
  3. 分別、時間別の時系列予測

    • 分別、時間別のデータはsub daily dataとも呼ばれます。
    • 通常、ビジネスシーンではsub dailyの時系列は三重周期性(天、週、年単位)があります。
    • Prophet、機械学習、深層学習が使用可能です。
      • sub dailyの予測精度がそれほど高くなくても、日別、週別の予測精度が高い場合、まず日別の数字を予測し、比例で簡単に分割することを考慮します。
      • アルゴリズム選択方法は「日別の時系列予測」を参考にします。
      • Prophetアルゴリズムを使用して直接sub dailyを予測する場合、三重周期性を設定する必要があります。例えば、時間別のデータの場合、yearly_seasonality = True, weekly_seasonality = True, add_seasonality(name='daily', period=24) と設定します。

二、予測結果を設定範囲内に収める方法

  1. 結果を整数にする方法

    • 方法1:結果を四捨五入して整数にします。
    • 方法2:深層学習では、予測結果を負の二項分布またはポアソン分布に設定できます(例:DeepAR)。
  2. 予測結果を0以上にする方法

    • 方法1:すべての<0の予測結果を強制的に0にします。
    • 方法2:予測対象を z = log(y) に変更し、予測後に y = exp(z) を使用します。
    • 方法3:深層学習では、出力層をReLu活性化関数に設定できます。
  3. 予測結果を特定の範囲(a, b)内に収める方法

    • 方法1:すべての<aの予測結果を強制的にaにし、すべての>bの予測結果を強制的にbにします。
    • 方法2:予測対象を z = log((y-a)/(b-y)) に変更し、予測後に y = ((b-a)exp(z)/(1+exp(z)))+a を使用します。
    • 方法3:深層学習では、出力層をシグモイド活性化関数に設定し、係数(b-a)とバイアスaの線形層を追加します。

三、異常値と欠損値の処理方法

  1. 異常値の識別方法

    • 方法1:3シグマ法、通常は外部変数の影響がなく、季節変動が弱い時系列に使用されます。
    • 方法2:STL分解法、通常は外部変数の影響がない時系列に使用されます。
    • 方法3:全データを使用してモデルを訓練し、訓練セットをモデルに適合させ、誤差が大きい値を異常値としてマークします。
  2. 異常値と欠損値の処理方法

    • 方法1:直接削除、Prophetアルゴリズムと機械学習アルゴリズムに適用されます。
    • 方法2:平均値で置き換え、通常は外部変数の影響がなく、季節変動が弱い時系列に使用されます。
    • 方法3:Prophetアルゴリズムを使用して履歴データを適合させ、異常値と欠損値を補完します。