時系列データと過学習について


最近LGBMの過学習をどう防ぐかが自分の中のホットトピックスです。

時系列データをどうtrainデータとvalidデータを分けるかについて気付きがありました。

これまで、時系列データであっても、random splitの方が良いんじゃないかと思ってました。
理由は分かりやすくいうと、ある日時を閾値にして分けると、春夏秋のtrainデータは冬の情報を持たずに学習するから不完全なモデルになるのではないかと。

ただ、random splitにも問題があることが分かった。
datetimeの粒度にもよりますが、例えばvalidデータの直前1分のデータがtrainデータにあるっていうことになるので、めちゃくちゃ過学習しやすい。

今の自分なりのベストプラクティスは、年の場合は春夏秋冬の四分割し、validをどれにするかで4パターンのmodelを作る。四つのモデルが出した予測値の平均を取る。

====

というメモを二週間ほど前に書いてたのですが、
以下の記事に自分の考えと全く同じことがまとまってたので、共有です!!

scikit-learnにも私の希望のようにvalidationするものがあるみたいです

https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.TimeSeriesSplit.html