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

bookクロスバリデーション

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

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

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

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

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

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

このプロセスは、各フォールドが一度テストセットとして使用され、残りのフォールドがトレーニングセットを構成するように繰り返されます。

交差検証では、分割ごとに複数の精度スコアが得られます。 その平均値はモデルの平均的な性能を表します。 Pythonでは、これは cross_val_score() で計算されます。

Note
注意

**任意の分割数(folds)**を選択可能。例えば、10分割の場合は9つで学習し、1つでテストを実施。 この設定は、cvcross_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())
copy

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

question mark

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

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

すべて明確でしたか?

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

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

セクション 4.  4

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 4.  4
some-alt