tldr
バリデーションの手法について勉強しました。
バリデーション手法
hold-out法
学習データの一部を学習に使わず、バリデーション用に取っておく方法。
学習データとテストデータがランダムに分割されているということを前提とした方法。
時系列データは別の方法をとる。
クロスバリデーション (CV)
学習データを分割し、hold-out法の手続きを複数回繰り返すことで、各回のバリデーションの学習に用いるデータの量を保ちつつ、バリデーションの評価に用いるデータを学習データ全体とする方法。
分割されたデータをfoldと呼び、分割数をfold数と呼びます。
fold数を増やすほど学習データの量を確保できる。反面、計算時間が増える。だいたいの場合、fold数は4-5で良い。
stratified k-fold
分類タスクの場合に、foldごとに含まれるクラスの割合を等しくすることがしばしば行われ、これを層化抽出 (stratified sampling) と呼ぶ。
group k-fold
分析コンペによっては、学習データとテストデータがランダムに分割されていない場合があります。
leave-one-out
データ数が多い場合にfold数を極端に大きくすることでバリデーションデータが各1件になる手法。
時系列データのバリデーション手法
時系列データのタスクでは、学習データとテストデータは時系列に沿って分割されているケースが多い。
つまり、学習データにはテストデータと同じ期間のデータが含まれない。
このようなケースでは、単純にランダムに分割してしまうと、バリデーションデータと同じ期間のデータで学習できてしまい、モデルの性能を過大評価する可能性が高い。
hold-out法
テストデータに近い期間のデータをバリデーションデータとする。