[Kaggle] ep.X - バリデーション

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法

テストデータに近い期間のデータをバリデーションデータとする。

クロスバリデーション

Kenta Kozuka
Kenta Kozuka
Software Engineer

東京で働くエンジニア

関連項目