-
週別/月別の時系列予測
- 通常、ビジネスシーンでは週別の時系列は年間周期(52週)、月別の時系列は年間周期(12ヶ月)があります。
- ETS、Arima、Prophet、機械学習、深層学習が使用可能です。
- 各時系列の履歴データが1年未満の場合、ETS、Arimaアルゴリズムを推奨します。
- 各時系列の履歴データが1年以上で、時系列が少ない場合、Prophetアルゴリズムを推奨します。
- 履歴データが1年以上のものと未満のものが混在し、時系列が多い場合、機械学習または深層学習アルゴリズムを推奨します。機械学習アルゴリズムを使用する場合、特徴量には少なくとも過去1週/1月、52週/12月の観測値と外部変数の値を含める必要があります。
-
日別の時系列予測
- 通常、ビジネスシーンでは日別の時系列は二重周期性(週単位の7日と年単位の365日)があります。
- Prophet、機械学習、深層学習が使用可能です。
- 各時系列の履歴データが1年未満の場合、Prophetアルゴリズムを推奨し、週単位の周期性のみを考慮します。モデル設定は
yearly_seasonality = False, weekly_seasonality = True
とします。 - 各時系列の履歴データが1年以上で、時系列が少ない場合、Prophetアルゴリズムを推奨し、二重周期性を考慮します。モデル設定は
yearly_seasonality = True, weekly_seasonality = True
とします。 - 履歴データが1年以上のものと未満のものが混在し、時系列が多い場合、機械学習または深層学習アルゴリズムを推奨します。機械学習アルゴリズムを使用する場合、特徴量には少なくとも過去1日、7日、365日の観測値と外部変数の値を含める必要があります。
- 各時系列の履歴データが1年未満の場合、Prophetアルゴリズムを推奨し、週単位の周期性のみを考慮します。モデル設定は
-
分別、時間別の時系列予測
- 分別、時間別のデータはsub daily dataとも呼ばれます。
- 通常、ビジネスシーンではsub dailyの時系列は三重周期性(天、週、年単位)があります。
- Prophet、機械学習、深層学習が使用可能です。
- sub dailyの予測精度がそれほど高くなくても、日別、週別の予測精度が高い場合、まず日別の数字を予測し、比例で簡単に分割することを考慮します。
- アルゴリズム選択方法は「日別の時系列予測」を参考にします。
- Prophetアルゴリズムを使用して直接sub dailyを予測する場合、三重周期性を設定する必要があります。例えば、時間別のデータの場合、
yearly_seasonality = True, weekly_seasonality = True, add_seasonality(name='daily', period=24)
と設定します。
-
結果を整数にする方法
- 方法1:結果を四捨五入して整数にします。
- 方法2:深層学習では、予測結果を負の二項分布またはポアソン分布に設定できます(例:DeepAR)。
-
予測結果を0以上にする方法
- 方法1:すべての<0の予測結果を強制的に0にします。
- 方法2:予測対象を
z = log(y)
に変更し、予測後にy = exp(z)
を使用します。 - 方法3:深層学習では、出力層をReLu活性化関数に設定できます。
-
予測結果を特定の範囲(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:3シグマ法、通常は外部変数の影響がなく、季節変動が弱い時系列に使用されます。
- 方法2:STL分解法、通常は外部変数の影響がない時系列に使用されます。
- 方法3:全データを使用してモデルを訓練し、訓練セットをモデルに適合させ、誤差が大きい値を異常値としてマークします。
-
異常値と欠損値の処理方法
- 方法1:直接削除、Prophetアルゴリズムと機械学習アルゴリズムに適用されます。
- 方法2:平均値で置き換え、通常は外部変数の影響がなく、季節変動が弱い時系列に使用されます。
- 方法3:Prophetアルゴリズムを使用して履歴データを適合させ、異常値と欠損値を補完します。