Cross-Validation
交差検証がモデルの汎化性能を向上させ、オーバーフィッティングを防ぐ仕組みを学びます。Ultralytics YOLO26でK-Fold評価を実装し、堅牢なMLを実現する方法を探ります。
交差検証は、限られたデータサンプルで機械学習(ML)モデルの性能を評価するために使用される、堅牢な統計的リサンプリング手法です。データを単一のトレーニングセットとテストセットに分割する標準的なホールドアウト法とは異なり、交差検証ではデータセットを複数のサブセットに分割し、すべてのデータポイントがトレーニングと検証の両方に使用されるようにします。この手法は、統計分析の結果が独立したデータセットにどの程度一般化できるかを評価するうえで重要です。また、モデルが一般化可能なパターンを学習するのではなく、トレーニング例を記憶してしまう過学習の検出にも役立ちます。
K分割交差検証の仕組み#
この手法で最も広く使用されているバリエーションは、K分割交差検証です。このプロセスでは、データセット全体をランダムに、同じサイズのk個のグループ、つまり「fold」に分割します。その後、トレーニングプロセスをk回繰り返します。各反復では、1つのfoldがモデルをテストするための検証データとして機能し、残りのk-1個のfoldがトレーニングデータとして使用されます。
最終的な性能指標は通常、各ループで得られた正解率、適合率、平均適合率(mAP)などのスコアを平均して算出します。このアプローチにより、トレーニングとテストの分割を1回行う場合に伴う分散が大幅に低減され、汎化誤差をより信頼性の高い形で推定できます。また、テストデータの恣意的な選択によって評価が偏らないようにします。
Ultralyticsを使用した実装#
交差検証は、より小規模なデータセットを扱う場合や、厳密なハイパーパラメータチューニングを実施する場合に特に有用です。PyTorchなどの最新のディープラーニングフレームワークがトレーニングループを容易にする一方で、foldの管理には慎重なデータ準備が必要です。
次の例では、YOLO26モデルを使用した5分割交差検証実験のために、あらかじめ生成されたYAML設定ファイルを反復処理する方法を示します。ここでは、データセットをすでに5つの個別の設定ファイルに分割しているものとします。
from ultralytics import YOLO
# List of dataset configuration files representing 5 folds
fold_yamls = [f"dataset_fold_{i}.yaml" for i in range(5)]
for i, yaml_file in enumerate(fold_yamls):
# Load a fresh YOLO26 Nano model for each fold
model = YOLO("yolo26n.pt")
# Train the model, saving results to a unique project directory
results = model.train(data=yaml_file, epochs=20, project="cv_experiment", name=f"fold_{i}")分割の生成を自動化する方法について詳しくは、K分割交差検証のガイドを参照してください。
実世界での利用例#
交差検証は、データが不足している、収集コストが高い、または安全性が極めて重要で高い信頼性が求められる業界で不可欠です。
- 医療診断: 医用画像解析では、希少疾患のデータセットが小規模であることがよくあります。単一の検証分割では、難しい症例やまれな病理所見が偶然除外される可能性があります。交差検証を使用することで、ヘルスケアにおけるAIを開発する研究者は、利用可能なすべての患者スキャンに対して診断モデルをテストし、さまざまな人口統計や機器の種類にわたってシステムが機能することを検証できます。
- 精密農業: 屋外環境では、環境条件が大きく変化します。作物病害検出用にトレーニングされたモデルが、晴天の日には良好に動作しても、曇天の画像がトレーニングセットにしか含まれていなければ、曇り空の下では失敗する可能性があります。交差検証により、モデルがこのような変動に対して堅牢であることを確認でき、農家は天候にかかわらず一貫したモニタリングを行うために自動機械学習(AutoML)ツールを活用できます。
モデル開発における戦略的な利点#
交差検証をAI開発ライフサイクルに組み込むことで、バイアスと分散のトレードオフに関する重要な洞察が得られます。
-
安定性評価: fold間で性能指標が大きく変動する場合、モデルがトレーニングに使用された特定のデータポイントに強く依存していることを示しており、分散が大きいことが示唆されます。
-
データ効率: すべての観測値が最終的にトレーニングと検証の両方に使用されるため、限られたデータを最大限に活用できます。
-
ハイパーパラメータ最適化: 最終的なテストセットを「のぞき見る」ことなく、最適な学習率、バッチサイズ、またはデータ拡張戦略を選択するための信頼性の高いベンチマークを提供します。
関連概念との違い#
交差検証とその他の評価用語を区別することが重要です。
- ホールドアウト検証との比較: ホールドアウトでは、単一の分割(例: 80/20)を使用します。ImageNetのような大規模なデータセットには高速で適していますが、小規模なデータセットでは交差検証よりも統計的な堅牢性に劣ります。
- ブートストラップとの比較: ブートストラップでは復元抽出によるランダムサンプリングを行いますが、K分割交差検証では復元抽出を行わずにデータを分割します(各サンプルはちょうど1つのfoldに含まれます)。
複数のfoldから得られるアーティファクト、指標、モデルの管理は複雑になる可能性があります。Ultralytics Platformは、実験トラッキングを一元化して提供することでこの作業を簡素化し、チームが異なるfold間の性能を比較し、モデル評価に関する洞察を簡単に可視化できるようにします。









