2016-10-19 10 views
0

モデルパラメータの選択では、交差検証を使用してグリッド探索を行い、どのパラメータが他のパラメータより優れているかをテストします。時系列データのモデルパラメータ選択

this oneのような一般的なトレーニングデータには適していますが、データが相互に時間的関係を持っていたり、数日以上の在庫を売っているような場合は、クロスバリデーションを直接行うのは間違っていますか?

クロス検証では、訓練データでランダムに分割されたkFoldが使用されます。これは時系列データを意味し、最近の曜日情報は昔の訓練に使用されます。

私の質問は、パラメータ選択や時系列データのクロスバリデーションを行う方法ですか?

答えて

0

はい、バックテスティングまたはローリング予測を使用するのが一般的です。以前のN時間期間またはNまでの期間のいずれかを訓練し、期間N + k(k> = 1 )、または将来の期間の範囲でテストすることもできます。 (例えば、過去60ヶ月のデータをトレーニングし、次に12ヶ月を予測する)。しかし、詳細は実際に使用しているモデルと問題のドメインによって異なります。 Rob Hyndman氏はa concrete exampleと答えています。「kaggleコンテスト時系列データのクロスバリデーション」を検索すると、さらに多くの情報を見つけることができます。

場合によっては、時間別に層別化されたランダムな分割を実行することが理にかなっています。その後、列車分割について上記のようにローリングトレーニングとCV評価を実行し、ランダムテストホールドアウトについてローリングテスト評価を別々に実行します。いくつかのケースでは

、あなたは時間がちょうど別の特徴値である通常のランダムCV(多くの場合、多くの設計時の機能としてエンコードなどcos(hour_of_day % 24)sin(hour_of_day % 24)cos(hour_of_week % 168)、など)を実行して逃げることができます。これは、XGBoostなどのモデルではうまく機能する傾向があり、列車/テスト計画でモデルをエンコードするのではなく、データの時間依存性をモデルが検出できるようになります。

+0

ありがとう:)私は2番目と3番目の段落について疑問に思っています:時々、テスト情報の後ろに日付から来るかもしれない訓練データがあるかもしれませんが、時々私たちは日付情報を無視して、どのようなシナリオで私はこれを行うことができ、まだCV結果を信じていますか? – linpingta

+0

すべての観測値が完全に独立しているときはいつでも、これを行うのが安全だと思います(しかし、時系列データではなく、日付属性を持つデータだけです)。現在の観測値が以前のデータに関係していたり​​影響を受けたりしている場合は、そのデータを無視すると漏れが発生します。 –

関連する問題