バックテスト

learn menu
By Joannès Vermorel, last revised August 2013

時系列予測の文脈において、バックテストとは既存の過去データを使用して予測手法の精度を評価するプロセスを指します。このプロセスは通常、過去データに存在する複数の日付に対して反復的に繰り返されます。バックテストは、最も精度の高い予測モデルを評価するために役立つ、将来の予測の精度を推定するために使用されます。

バックテストの仕組み

バックテストのプロセスは、過去データでカバーされる期間内の閾値日のリストを選択することから始まります。以下の図では、閾値はT1、T2、T3、T4と表されています。

バックテストは、過去データを使用して時系列に依存する統計モデルの予測精度を評価するプロセスです。

そして、各閾値に対して、

  • 過去データは閾値で切り捨てられます。
  • 予測モデルは切り捨てられたデータに対してトレーニングされ、適用されます。
  • 予測結果は元の切り捨てられていないデータと比較されます。

最後に、すべての閾値にわたって平均予測誤差が算出されます。

この平均誤差は、モデルが「真の」予測(将来の予測)を生成する際に関連付けられる誤差の推定と解釈することができます。適切な閾値のセットを選択するには、通常、問題に関連するノウハウが必要です。一般的な指針として、閾値の数を増やすことは、過学習問題に対するプロセスのレジリエンスを向上させる傾向があります。

在庫最適化の目的で、通常数百のSKUが関与するため、非常に高い信頼性で予測手法が他よりも優れているかどうかを判断するために、わずかな閾値のみが必要です。

よくある間違い:一度学習して多くの予測を行う

バックテストは、通常、計算リソースの観点から非常に集中的です。なぜなら、各閾値ごとに新しい予測モデルをトレーニングする必要があるからです。その結果、私たちは通常、予測モデルを一度だけトレーニングし、通常は全範囲の過去データを活用してバックテストの反復を行う実践者を目撃します。このアプローチの認識される利点は、バックテストの大幅な高速化です。

しかし、このような「トリック」は誤ったものであり、過学習の問題を引き起こします。実際には、暗黙的に「将来のデータ」が予測モデルに提供されるため、学習フェーズ中に行われる変数の推定は、モデルにこの「将来」に関する情報を埋め込むことになります。その結果、バックテストから測定される精度は、モデルの一般化能力ではなく、むしろその「記憶」能力、つまりトレーニングデータセットで見つかった同一の状況を再現する能力を反映します。

Lokadの注意点

バックテストは、Lokadの予測技術の中心にあります。私たちは、各時系列ごとにバックテストを使用して、最終的な予測を提供するために使用するモデルを選択します。ただし、この記事で紹介されている単純なバックテストのビジョンは、小売業や製造業で見つかるすべての状況に適しているわけではありません。例えば、新しく立ち上げられた製品の場合、時系列は短すぎて有意なバックテストを行うことができないかもしれません。プロモーションや製品の立ち上げには、専用のアプローチが必要です。