交差検証の目的は、過学習を防ぐために汎化誤差を測ること。交差検証は、過学習を検知できるわけではない。ハイパーパラメータの設定次第で、交差検証が過学習の一因となってしまう。
k-分割交差検証
交差検証では有名なものの一つ。金融の分野では、観測値が定常な過程から抽出されると仮定できず、選択バイアスにつながる可能性があるため、良いパフォーマンスにつながるとは限らない。詳細な解説もありましたがここでは割愛します。
解決策として、重複する訓練データに対してパージングとエンバーゴを行い、scikit-learnKのKFoldクラスを拡張する。
- パージング:訓練、テストに含まれる、ラベルと時間が重複しているラベルを持つ全ての観測データを除去
- エンバーゴ:訓練・テストの関す奥データの直後の観測データを除去
詳しい実装や説明があり、とてもわかりやすかったです。また、sklearnの交差検証法のバグについても説明がありました。OSSで普通に動くことを期待してしまうところですが、不具合があることがあるという事実を知ることができ、理論と実装の確認の大切さを再確認しました。