クロスバリデーション
メニューを表示するにはスワイプしてください
トレイン・テスト分割には2つの欠点があります。
- 学習データが少なくなるため、モデルの品質が低下する可能性がある;
- ランダムな分割に依存するため、結果が不安定になる。 これを解決するために、クロスバリデーションを使用します。
まず、全データセットを5つの等しい部分、すなわちフォールドに分割します。
次に、1つのフォールドをテストセットとして使用し、残りのフォールドを組み合わせて学習セットを作成します。
あらゆる評価プロセスと同様に、トレーニングセットはモデルの学習に使用され、テストセットはその性能を測定するために使用されます。
このプロセスは、各フォールドが一度テストセットとして使用され、残りのフォールドがトレーニングセットを構成するように繰り返されます。
交差検証では、分割ごとに複数の精度スコアが得られます。
その平均値はモデルの平均的な性能を表します。
Pythonでは、これは cross_val_score() で計算されます。
注意
**任意の分割数(folds)**を選択可能。例えば、10分割の場合は9つで学習し、1つでテストを実施。
この設定は、cv の cross_val_score() パラメータで指定。
1234567891011import 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値をテスト)。
これにより、一貫して最も良い性能を示す選択肢を決定可能。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 4. 章 4
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 4. 章 4