「通常の」相互検証に精通していますが、単純な線形回帰関数で相互検証を使用しながら時系列予測を行いたいと思います。2つの質問を明確にするために簡単な例を書き留めます。1つはトレーニング/テストの分割について、もう1つは目的が異なるnについて予測することである場合にモデルをトレーニング/テストする方法について1つの質問で、nの予測ステップで、前進。
(1)データ
次のように、タイムポイント1、...、10のデータがあるとします。
timeseries = [0.5,0.3,10,4,5,6,1,0.4,0.1,0.9]
(2)教師あり学習に役立つ形式にデータを変換する
私が理解している限り、「ラグ」、つまりデータのシフトを使用して、教師あり学習に適したデータセットを作成できます。
input = [NaN,0.5,0.3,10,4,5,6,1,0.4,0.1]
output/response = [0.5,0.3,10,4,5,6,1,0.4,0.1,0.9]
ここでは、出力ベクトルを作成するために、時系列を1つずつシフトしています。私が理解している限り、線形回帰モデルの入力として入力を使用し、応答の出力を使用できます(NaNは、ランダムな値に置き換えて近似できます)。
(3)質問1:相互検証(「バックテスト」)
今2スプリットを実行したいのですが、テストセットだけでなく列車もシフトする必要がありますか?
つまり次のようなものです:
列車セット:
独立変数:[NaN、0.5,0.3,10,4,5]
出力/応答変数:[0.5,0.3,10,4,5,6]
テストセット:
独立変数:[1,0.4,0.1]
出力/応答変数:[0.4,0.1,0.9]
(ii)質問2:異なるラグを事前に予測する:
明らかなように、従属変数への従属変数を1だけシフトしました。ここで、5つのタイムステップを事前に予測できるモデルをトレーニングしたいとします。このラグを1に保ちながら、モデルを使用してn + 1を予測できます。 、...、n + 5、...または、独立変数から従属変数へのシフトを5に変更しますか?違いは何ですか?