Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ クロスバリデーション | モデリング
Pythonによる機械学習入門

クロスバリデーション

メニューを表示するにはスワイプしてください

トレイン・テスト分割には2つの欠点があります。

  1. 学習データが少なくなるため、モデルの品質が低下する可能性がある;
  2. ランダムな分割に依存するため、結果が不安定になる。 これを解決するために、クロスバリデーションを使用します。

まず、全データセットを5つの等しい部分(フォールド)に分割します。

folds_split

次に、1つのフォールドをテストセットとして使用し、残りのフォールドを組み合わせてトレーニングセットを作成。

CV ステップ 2

他の評価プロセスと同様に、トレーニングセットはモデルの学習に使用され、テストセットはその性能を測定するために使用。

クロスバリデーションステップ3

このプロセスは、各分割が一度ずつテストセットとして使用され、残りの分割がトレーニングセットとなるように繰り返されます。

CV ステップ3

クロスバリデーションは、分割ごとに複数の精度スコアを生成。 それらの平均値は、モデルの平均的な性能を示す。 Pythonでは、cross_val_score()で計算。

Note
ノート

**任意の分割数(folds)**を選択可能。例えば、10分割の場合は9つで学習し、1つでテストを実施。 これはcvcross_val_score()パラメータで設定。

cross_val_score
1234567891011
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())

クロスバリデーションはより信頼性が高いですが、モデルがn回学習および評価されるため、処理速度は遅くなります。 クロスバリデーションはハイパーパラメータチューニングで広く利用されており、各ハイパーパラメータ値ごとに繰り返し実行されます。例えば、k-NNで複数のk値をテストする場合などです。 これにより、一貫して最も良い性能を示す選択肢を選ぶことができます。

question mark

なぜクロスバリデーションは、機械学習モデルの性能評価においてトレイン・テスト分割よりも好まれる場合があるのでしょうか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  4
some-alt