クロス検証は非常に重要です!

クロス検証は非常に重要です!

まず、クロス検証がなぜ必要なのかを理解する必要があります。

クロス検証は、予測モデルのパフォーマンスと一般化能力を評価するための機械学習と統計の一般的な手法です。クロス検証は、データが限られている場合や、新しい未知のデータに対するモデルの一般化能力を評価する場合に特に役立ちます。

では、クロス検証は具体的にいつ使用されるのでしょうか?

  • モデルのパフォーマンス評価: クロス検証は、モデルが未知のデータに対してどの程度適切に機能するかを推定するのに役立ちます。データの複数のサブセットでモデルをトレーニングおよび評価することにより、クロス検証では、単一のトレーニングとテストの分割よりも堅牢なモデル パフォーマンスの推定値が得られます。
  • データ効率: データが限られている場合、クロス検証では利用可能なすべてのサンプルを最大限に活用し、すべてのデータを同時にトレーニングと評価に使用することで、モデルのパフォーマンスをより信頼性の高い方法で評価します。
  • ハイパーパラメータの調整: クロス検証は、モデルに最適なハイパーパラメータを選択するためによく使用されます。データのさまざまなサブセットに対してさまざまなハイパーパラメータ設定を使用してモデルのパフォーマンスを評価することで、全体的なパフォーマンスが最適になるハイパーパラメータ値を特定できます。
  • 過剰適合の検出: クロス検証は、モデルがトレーニング データに過剰適合しているかどうかを検出するのに役立ちます。モデルが検証セットよりもトレーニング セットで大幅に優れたパフォーマンスを発揮する場合、過剰適合を示している可能性があり、正規化やより単純なモデルの選択などの調整が必要になります。
  • 一般化評価: クロス検証により、モデルが未知のデータに対してどの程度一般化されるかを評価します。データの複数の分割でモデルを評価することにより、ランダム性や特定のトレーニングとテストの分割に依存せずに、データ内の基本的なパターンを捕捉するモデルの能力を評価するのに役立ちます。

クロス バリデーションの一般的な考え方は、図 5 フォールド クロス バリデーションに示されています。各反復で、新しいモデルは 4 つのサブデータセットでトレーニングされ、最後に予約されたサブデータセットでテストされて、すべてのデータが利用されていることを確認します。平均スコアや標準偏差などの指標を通じてモデルのパフォーマンスの真の測定値を提供します

すべてはK折りクロスから始まります。

Kフォールド

K 倍交差が Sklearn に統合されました。ここでは 7 倍交差を例に挙げます。

 from sklearn.datasets import make_regression from sklearn.model_selection import KFold x, y = make_regression(n_samples=100) # Init the splitter cross_validation = KFold(n_splits=7)

もう 1 つの一般的な操作は、分割を実行する前にシャッフルすることです。これにより、サンプルの元の順序が破壊され、過剰適合のリスクがさらに最小限に抑えられます。

 cross_validation = KFold(n_splits=7, shuffle=True)

このようにして、単純な k 分割交差検証が実装されます。ソース コードを読むことを忘れないでください。 !

階層化Kフォールド

StratifiedKFold は分類問題用に特別に設計されています。

一部の分類問題では、データが複数のセットに分割されても、ターゲット分布は変更されないままである必要があります。たとえば、ほとんどの場合、クラス比が 30 対 70 のバイナリ ターゲットは、トレーニング セットとテスト セットで同じ比率を維持する必要があります。通常の KFold では、分割前にデータがシャッフルされるとクラス比が維持されないため、このルールは破られます。

この問題を解決するために、Sklearn では分類専用の別のスプリッター クラスである StratifiedKFold が使用されます。

 from sklearn.datasets import make_classification from sklearn.model_selection import StratifiedKFold x, y = make_classification(n_samples=100, n_classes=2) cross_validation = StratifiedKFold(n_splits=7, shuffle=True, random_state=1121218)

KFold に似ていますが、クラスの比率はすべての分割と反復にわたって一貫して維持されるようになりました。

シャッフルスプリット

場合によっては、トレーニング/テスト セットの分割プロセスを複数回繰り返すだけで済むこともあり、これはクロス検証と非常によく似ています。

論理的には、異なるランダム シードを使用して複数のトレーニング/テスト セットを生成することは、十分な反復で堅牢なクロス検証手順に似ているはずです。

Sklearn は次のインターフェースも提供します:

 from sklearn.model_selection import ShuffleSplit cross_validation = ShuffleSplit(n_splits=7, train_size=0.75, test_size=0.25)

時系列分割

データ セットが時系列の場合、従来のクロス検証は使用できず、順序が完全に乱れます。この問題を解決するために、Sklearn は別のスプリッターである TimeSeriesSplit を提供します。

 from sklearn.model_selection import TimeSeriesSplit cross_validation = TimeSeriesSplit(n_splits=7)

図に示すように、検証セットは常にトレーニング セットのインデックスの後に配置されます。インデックスは日付であるため、誤って将来の日付で時系列モデルをトレーニングし、以前の日付の予測を行うことはできません。

非IIDデータのクロス検証

上記の方法はすべて、独立した同一に分布したデータ セットを扱います。つまり、データ生成プロセスは他のサンプルの影響を受けません。

ただし、場合によっては、データが IID 条件を満たさない、つまり一部のサンプル グループ間に依存関係があることがあります。これは、何千もの呼吸プロセス (吸入と呼気) 中の人工肺の空気圧値を記録し、各呼吸のすべての瞬間を記録する Google Brain Ventilator Pressure などの Kaggle のコンペティションで発生しました。各呼吸プロセスには約 80 行のデータがあり、これらの行は相互に関連しています。この場合、分割が「呼吸プロセスのちょうど真ん中で発生する」可能性があるため、従来のクロス検証は機能しません。

これらのデータを「グループ化」する必要があるのは、グループ内のデータが関連しているためだと理解できます。たとえば、医療データが複数の患者から収集される場合、各患者には複数のサンプルがあり、これらのデータは患者間の個人差の影響を受ける可能性が高いため、グループ化も必要です。

多くの場合、特定のグループでトレーニングされたモデルが他の未知のグループにうまく一般化できることを期待するため、クロス検証を実行するときに、これらのグループ データに「タグ」を付けて、それらを区別する方法を伝えます。

Sklearn は、このような状況を処理するためのいくつかのインターフェースを提供します。

  • グループK折りたたみ
  • 階層化グループKフォールド
  • グループから退出
  • グループを退出
  • グループシャッフル分割

クロスバリデーションの考え方とその実装方法を理解することを強くお勧めします。Sklearn のソースコードを読むことは、始めるのに良い方法です。さらに、独自のデータセットを明確に定義する必要があり、データの前処理が非常に重要です。

<<: 

>>: 

ブログ    
ブログ    

推薦する

リアルタイムの高忠実度レンダリング、PlenOctrees に基づく NeRF レンダリング速度が 3000 倍に向上

[[393143]]まばらな静止画像から任意の 3D オブジェクトとシーンの新しいビューを合成するこ...

...

プレーン AI: ディープラーニングを理解するのは本当に難しいのでしょうか?中学数学、たった10分

現在、AI が業界で重要な役割を果たしているため、ディープラーニングは重要な研究分野として、意味理解...

...

AIがデータ分析を拡張し、効率化する方法

今日のデータ主導の世界では、AI が業界全体を変革しています。 AI は大規模なデータ分析を加速し、...

蘇寧電子商取引プラットフォームにおけるAI技術+短編動画の応用

[51CTO.comより引用] 2018年5月18日〜19日、51CTO主催のグローバルソフトウェア...

李開復は「口を滑らせた」と言ったのか? AIデータのプライバシーが心配です!

[[341971]]シノベーションベンチャーズの会長兼CEOである李開復氏は9月12日、HICOO...

日常生活における人工知能の12の例

以下の記事では、私たちの日常生活に登場する人工知能の12の例を確認することができます。人工知能 (A...

ウルトラマンが解雇されるのは今回が初めてではない! YCを去った人物は「創設者から去るように言われた」

ウルトラマンニウフルが「追い出される」のは初めてではないでしょうか? ? !予想外にも、OpenAI...

機械学習から最も恩恵を受ける4つの業界

機械学習は、将来性が最も高く、業界に最大のメリットをもたらす AI の分野です。関連レポートによると...

C# はデジタル変換のための中国語アルゴリズムを記述します

C# はデジタル変換のための中国語アルゴリズムを記述します最近、プロジェクト上の理由により、C# で...

転換点までのカウントダウン:AI サーバーが市場を完全に支配するにはどれくらいの時間がかかるのでしょうか?

ハイパースケーラーとクラウド プロバイダーがインフラストラクチャの計画を検討する場合、まず全体的な動...

ドローンはサメに対する私たちの考え方を変えている、と研究で判明

Google で「サメ」と検索すると、サメ​​の目撃情報に関する最近のニュースの見出しがいくつか表示...

Python のデータクロール、分析、マイニング、機械学習、Python 分散コンピューティングに関するコンテンツ共有

01 データキャプチャ1. 背景調査1) robots.txt をチェックして、サイトのクロールにど...