web-dev-qa-db-ja.com

sklearnでウォークフォワードテストを実装する方法は?

Sklearnでは、GridSearchCVはパイプラインをパラメーターとして使用して、相互検証を通じて最適な推定量を見つけることができます。ただし、通常の相互検証は次のようになります。 enter image description here

時系列データを相互検証するために、トレーニングデータとテストデータは次のように分割されることがよくあります。 enter image description here

つまり、テストデータは常にトレーニングデータよりも前にある必要があります。

私の考えは:

  1. パイプラインの便利さを楽しむことができるように、k-foldの独自のバージョンクラスを作成してGridSearchCVに渡します。問題は、GridSearchCVにトレーニングおよびテストデータの指定されたインデックスを使用させることが難しいように思われることです。

  2. GridSearchCVに似た新しいクラスGridSearchWalkForwardTestを作成します。ソースコードgrid_search.py​​を調べていますが、少し複雑であることがわかりました。

どんな提案でも大歓迎です。

27
PhilChang

独自の実装の代わりに、または説明したとおりのCVメソッドを実装するための基礎として、 時系列分割 を使用できると思います。

少し掘り下げた後、誰かがmax_train_sizeをTimeSeriesSplitに追加したようです このPR これはあなたが望むことをしているようです。

5
Matthijs Brouns

私の意見では、独自のGridSearchWalkForwardTestを実装してみるべきだと思います。私は一度GridSearchを使用してトレーニングを行い、同じGridSearchを自分で実装しましたが、同じ結果が得られませんでした。

最後にやったのは、自分の機能を使うことです。トレーニングとテストセットをより細かく制御でき、トレーニングするパラメーターをより細かく制御できます。

1
hoaphumanoid

私は数ヶ月前にこれらすべてに関していくつかの仕事をしました。

あなたはこの質問/回答でそれをチェックすることができます:

ローリングウィンドウの改訂-パラメータとしてウィンドウのローリング量を追加-ウォークフォワード分析

1
Ezarate11