1. ホールドアウト法(Holdout Method)
教師データとテストデータを分ける方法。最も基本的な方法
良い点
- シンプルで理解しやすい:データを単純にトレーニングセットとテストセットに分けるだけなので、実装が簡単で直感的に理解しやすい。
- モデルの性能評価が直感的:モデルの評価が一回のテストで行われるため、性能評価がシンプルで直感的。
悪い点
- 評価のバリエーションが少ない:1回のデータ分割での評価となるため、分割方法に依存して性能評価が変動しやすく、偏った評価になる可能性がある。
- データ量の有効利用が難しい:データセットが小さい場合、トレーニングデータとテストデータに分けると、それぞれのデータ量が少なくなり、モデルの学習と評価が十分に行えない可能性がある。
2. n-fold クロスバリデーション(n-fold CV)
良い点
- より安定した評価:データをn個のフォールドに分け、各フォールドを1回ずつテストセットとして使用するため、複数回の評価結果を平均することで、評価の分散を減らし、より安定した性能評価が得られる。
- データの有効利用:全データが一度はテストデータとして使用されるため、データ量が少ない場合でも有効にデータを活用できる。
- 偏りの低減:複数の分割を用いることで、特定のデータ分割に依存した偏りを低減できる。
悪い点
- 計算コストが高い:モデルをn回学習させる必要があるため、計算リソースと時間が多くかかる。
- 実装の複雑さ: 各フォールドごとの分割と評価を行うため、実装が単純なトレーニング・テスト分割よりも複雑になる。
ホールドアウト法とn-foldクロスバリデーションの他にも、いくつかのクロスバリデーションの方法があります。以下にいくつかの主要なクロスバリデーションの方法を紹介します。
3. Leave-One-Out Cross-Validation (LOO CV)
データセットの各サンプルを一つずつテストデータとして使用し、残りの全データをトレーニングデータとして使用する。これをデータセットのサンプル数(n)だけ繰り返す。
良い点
- 全てのデータポイントがテストデータとして使用されるため、評価が非常に厳密。
- データセットが小さい場合に特に有効。
悪い点
- 計算コストが高い(n回のモデル学習と評価が必要)。
- 大規模なデータセットでは実用的でない。
3. Stratified k-Fold Cross-Validation
データセットをk個のフォールドに分割する際に、各フォールド内のクラス分布が全体のクラス分布と同じになるように分割する。これにより、各フォールドが均衡したクラス分布を持つことが保証される。
良い点
- クラスの不均衡があるデータセットでも、各フォールドが代表的なサンプルを含むため、より安定した評価が可能。
悪い点
- 実装がやや複雑になる。
4. Leave-p-Out Cross-Validation (LpO CV)
方法 データセットのすべての可能なサイズpのサブセットをテストセットとして使用し、残りをトレーニングセットとして使用します。
良い点
- 非常に厳密な評価が可能。
悪い点
- 計算コストが極めて高くなるため、実用的でないことが多い。
5. Monte Carlo Cross-Validation (Repeated Random Subsampling Validation)
データセットをランダムにトレーニングセットとテストセットに分割し、これを複数回繰り返す。各反復ごとに異なるランダムな分割を使用する。
良い点
- 繰り返しにより評価の安定性が向上する。
- 任意の分割比率を使用できる。
悪い点
- 結果が分割に依存する可能性があるため、多くの反復が必要。
6. Time Series Cross-Validation (Rolling Window Cross-Validation)
時系列データに適用される方法で、一定の時間窓を使用してトレーニングセットとテストセットをスライドさせながらモデルを評価します。
良い点
- 時系列データにおいて、未来のデータを予測するために過去のデータを使用するという現実的なシナリオを模倣。
悪い点
- 計算コストが高い。
- 窓のサイズやステップの選択が重要。