Cross-Validation
クロスバリデーションがどのようにモデルの汎化性能を向上させ、過学習を防ぐかを学びましょう。堅牢なMLのためにUltralytics YOLO26でK-Fold評価を実装する方法を解説します。
クロスバリデーションは、限られたデータサンプルで機械学習 (ML)モデルの性能を評価するために使用される、堅牢な統計的リサンプリング手法です。データを単一のトレーニングセットとテストセットに分割する標準的なホールドアウト法とは異なり、クロスバリデーションではデータセットを複数のサブセットに分割し、すべてのデータポイントがトレーニングとバリデーションの両方に使用されるようにします。この手法は、統計分析の結果が独立したデータセットに対してどのように一般化されるかを評価するために非常に重要であり、モデルが一般化可能なパターンを学習するのではなく、トレーニング例を暗記してしまう過学習 (overfitting)を検出するのに役立ちます。
Link to this sectionK-Foldクロスバリデーションのメカニズム#
The most widely used variation of this technique is K-Fold Cross-Validation. In this process, the entire dataset is randomly divided into k equal-sized groups, or "folds." The training process is then repeated k times. In each iteration, a single fold acts as the validation data for testing the model, while the remaining k-1 folds serve as the training data.
最終的な性能指標は、各ループから得られた精度 (accuracy)、適合率 (precision)、または平均精度 (mAP)などのスコアを平均して算出するのが一般的です。このアプローチにより、学習データとテストデータの分割を1回だけ行う場合に生じる分散を大幅に低減し、一般化誤差 (generalization error)のより信頼性の高い推定値を提供します。これにより、テストデータの恣意的な選択によって評価が偏ることを防ぎます。
Link to this sectionUltralyticsによる実装#
クロスバリデーションは、小さなデータセットを扱う場合や、厳密なハイパーパラメータチューニングを実行する場合に特に有用です。PyTorchのような現代のディープラーニングフレームワークはトレーニングループを容易にしますが、フォールドの管理には慎重なデータ準備が必要です。
The following example demonstrates how to iterate through pre-generated YAML configuration files for a 5-fold cross-validation experiment using the YOLO26 model. This assumes you have already split your dataset into five separate configuration files.
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-Foldクロスバリデーションに関するガイドを参照してください。
Link to this section実社会での応用#
クロスバリデーションは、データが希少である、収集にコストがかかる、または安全性が重要な信頼性が求められる業界において不可欠です。
- 医療診断: 医療画像解析において、稀な疾患のデータセットはしばしば小規模です。単一のバリデーション分割では、困難な症例や稀な病理を誤って除外してしまう可能性があります。クロスバリデーションを使用することで、ヘルスケアにおけるAIを開発する研究者は、診断モデルが利用可能なすべての患者スキャンに対してテストされることを保証し、システムが多様な人口統計や機器の種類全体で機能することを検証できます。
- 精密農業: 屋外環境では環境条件が大きく変動します。作物病害検出のためにトレーニングされたモデルは、晴天時にはうまく機能しても、トレーニングセットにそれらの画像しか含まれていなかった場合、曇天時には失敗する可能性があります。クロスバリデーションは、モデルがこのような変動に対して堅牢であることを保証し、農家が気象条件に関係なく一貫したモニタリングのために自動化機械学習 (AutoML)ツールを信頼できるようにします。
Link to this sectionモデル開発における戦略的利点#
クロスバリデーションをAI開発ライフサイクルに組み込むことで、バイアス・バリアンスのトレードオフに関する重要な洞察が得られます。
-
安定性評価: フォールド間で性能指標が大幅に変動する場合、モデルがトレーニングに使用された特定のデータポイントに対して非常に敏感であることを示しており、高いバリアンスを示唆しています。
-
データ効率: すべての観測値が最終的にトレーニングとバリデーションの両方に使用されるため、限られたデータの有用性を最大化します。
-
ハイパーパラメータの最適化: 最終的なテストセットを「覗き見」することなく、最適な学習率 (learning rate)、バッチサイズ (batch size)、またはデータ拡張 (data augmentation)戦略を選択するための信頼できるベンチマークを提供します。
Link to this section関連する概念との違い#
クロスバリデーションを他の評価用語と区別することが重要です。
- vs. Hold-out Validation: Hold-out involves a single split (e.g., 80/20). While faster and suitable for massive datasets like ImageNet, it is less statistically robust than cross-validation for smaller datasets.
- vs. ブートストラップ: ブートストラップは復元抽出を伴いますが、K-Foldクロスバリデーションは非復元抽出でデータを分割します(各サンプルは正確に1つのフォールドに属します)。
複数のフォールドからの成果物、指標、モデルの管理は複雑になる可能性があります。Ultralytics Platformは、一元化された実験トラッキングを提供することでこれを簡素化し、チームがさまざまなフォールド間でのパフォーマンスを比較し、モデル評価の洞察を簡単に視覚化できるようにします。






