[機械学習]バリデーション手法 徹底解説 Part.1

logo_Python

本記事 Part.1 では、”よく用いられる”バリデーション手法とその挙動について紹介するとともに、 応用としてバリデーション手法を組み合わせた手法も軽く紹介します!

目次

はじめに

バリデーションは、モデルが未知のデータにどれぐらい対応できるかを試す手法であり、モデリングに用いるデータに適したバリデーション手法を選ぶことが重要です。

本記事 Part.1 では、”よく用いられる”バリデーション手法とその挙動について紹介するとともに応用としてバリデーション手法を組み合わせた手法も軽く紹介します。

 

なぜやるのか

過学習とその回避

過学習は、モデルが訓練データの特定の特徴に過剰に適応し、新しいデータに対してはうまく機能しない状態を指します。バリデーションを通じて、モデルの過学習についての一つの基準として機能し、適切なバリデーションを設定することで過学習を抑えることができます。

モデルの汎化能力の評価

バリデーションでは、モデルが見たことのないデータに対してどれだけ正確に予測できるかを評価します。これにより、モデルの「汎化能力」、つまり未知のデータに対する性能を測ることができます。

基本的なバリデーション手法

ホールドアウト法(Holdout Method):
  • データセットをトレーニングセットとテストセットに一度だけ分割。
  • 通常、データの70-80%をトレーニングに、残りの20-30%をテストに使用。
K分割交差検証(K-Fold Cross-Validation):
  • データセットをK個のサブセットに分割。
  • それぞれのサブセットを1回ずつテストセットとして使用し、残りをトレーニングセットとして使用。
  • 各サイクルでモデルの性能を評価し、最終的に平均性能を算出。
  • Kは5または10が使用される。
グループK分割交差検証(Group K-Fold):
  • データセット内のグループを表すIDなどの識別子を用いて元のデータをK個のサブセットに分割。
  • データセットにグループ依存性が存在する場合において、特定のグループのデータに過剰適合することを防ぎ、モデルの汎化能力をより公平かつ正確に評価すること。
層化K分割交差検証(Stratified K-Fold Cross-Validation):
  • 多クラス分類において、各クラスの頻度が異なる場合は往々にして存在し、その場合、ランダムに分割する手法では各クラスに偏りが生じてしまう。
  • そのため、各クラスのサンプルが均等に分布するようにK分割交差検証を行う。
  • データセット内のクラスの分布が不均等な場合に特に有効。
リーブ・ワン・アウト法(Leave-One-Out Cross-Validation):
  • 1つのデータポイントをテストデータとし、残りをトレーニングデータとして使用。
  • これをデータセット内の全てのデータポイントに対して繰り返す。
  • 非常に小さなデータセットの場合に適している。

応用:組み合わせについて

目的

グループ化されたデータの特性を考慮しつつ、クラス間の分布のバランスを取ること。

応用例

患者ごとにグループ化された医療データがあり、クラス(病状)の分布が不均一な場合。このような場合、各患者グループを分割し(Group K-Fold)、さらに各分割内でクラスの比率を均等に保つ(Stratified K-Fold)ことが考えられる。

終わりに

Part.1では基本的なバリデーション方法について紹介しました。

次回Part.2では実装編として、今回紹介した基本的な手法をコードを用いて紹介します。

[blogcard url=”https://blog.since2020.jp/data_analysis/%e6%a9%9f%e6%a2%b0%e5%ad%a6%e7%bf%92%e3%83%90%e3%83%aa%e3%83%87%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e6%89%8b%e6%b3%95-%e5%be%b9%e5%ba%95%e8%a7%a3%e8%aa%ac-part-2/”]

参照

[blogcard url=”https://scikit-learn.org/stable/modules/cross_validation.html”]

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次