バックテスト

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

時系列予測の文脈において、バックテストの概念は、既存の履歴データを用いて予測手法の精度を評価するプロセスを指します。このプロセスは通常、反復的に行われ、履歴データに含まれる複数の日付にわたって繰り返されます。バックテストは、将来の予測精度を推定するために使用され、どの予測モデルが最も正確と見なされるべきかを評価するのに役立ちます。

バックテストの仕組み

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

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

次に、それぞれの閾値について、

  • 履歴データはその閾値で切り捨てられ、
  • 切り捨てられたデータに対して予測モデルが訓練され適用され、
  • 予測結果は元の切り捨てられていないデータと比較されます。

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

この平均誤差は、モデルが将来に対して 真の 予測を行う際に伴う誤差の推定値と解釈することができます。適切な閾値のセットを選ぶには、通常、対象となる問題に関連するノウハウが必要です。一般的な経験則として、閾値の数を増やすことは、レジリエンスを向上させ、Overfitting問題に対するプロセスの耐性を高める傾向があります。

在庫最適化の目的では、通常数百のSKUsが関与するため、予測手法が他の手法より優れているかを非常に高い信頼性で判断するために、ほんの少数の閾値のみが必要とされます。

よくある間違い:一度学習して、何度も予測する

バックテストは通常、各閾値ごとに新しい予測モデルを訓練する必要があるため、計算資源の点で非常に負荷が高いものです。その結果、履歴データ全体を活用して予測モデルを一度のみ訓練し、その後バックテストの繰り返しを行う実務者がしばしば見受けられます。このアプローチの見かけ上の利点は、バックテストの大幅な高速化です。

しかしながら、このような トリック は誤ったものであり、重大なオーバーフィッティング問題を引き起こします。実際、暗黙のうちに、将来のデータ が予測モデルに提供されるため、学習段階で行われる変数推定は、そのモデルに 将来 に関する情報を組み込ませる原因となります。その結果、バックテストで測定された精度は、モデルの一般化能力を反映するものではなく、むしろその 記憶 能力、つまり訓練データセットに見られる同一の状況を再現する能力を示すものとなります。

Lokadの落とし穴

バックテストは、Lokadのテクノロジーの中核を成しています。私たちは各時系列ごとにこれを用いて、最終的な予測を提供するために使用されるモデルを選定しています。しかしながら、この記事で示されたシンプルなバックテストの視点は、小売業や製造業に見られるすべての状況に適しているわけではありません。例えば、新製品の場合、時系列がバックテストを十分に行うには短すぎる場合があります。Promotionsや製品の発売も、専用のアプローチを必要とします。