Cross-Validation
了解交叉验证如何提高模型泛化能力并防止过拟合。发现如何使用 Ultralytics YOLO26 实现 K-Fold 评估以获得稳健的 ML。
交叉验证是一种稳健的统计重采样过程,用于评估 机器学习 (ML) 模型在有限数据样本上的表现。与将数据拆分为单一训练集和测试集的标准留出法不同,交叉验证涉及将 数据集 划分为多个子集,以确保每个数据点都能同时用于训练和验证。该技术对于评估统计分析结果如何推广到独立数据集至关重要,有助于检测 过拟合 现象,即模型可能记住了训练样本而非学习到可推广的模式。
Link to this sectionK 折交叉验证的机制#
该技术最广泛使用的变体是 K 折交叉验证。在此过程中,整个数据集被随机分为 k 个大小相等的组,即“折”。随后训练过程重复 k 次。在每次迭代中,其中一折作为 验证数据 用于测试模型,而其余的 k-1 折则用作 训练数据。
最终的性能指标通常通过计算每次循环所得分数的平均值来得出,例如 准确率 (accuracy)、精确率 (precision) 或 平均精度均值 (mAP)。这种方法显著降低了因单次训练-测试拆分试验带来的方差,从而为 泛化误差 提供了更可靠的估计。它确保了评估不会因对 测试数据 的任意选择而产生偏差。
Link to this section使用 Ultralytics 进行实现#
交叉验证在处理较小数据集或执行严格的 超参数调优 时特别有用。虽然像 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 折交叉验证 指南。
Link to this section实际应用#
在数据稀缺、收集成本高昂或需要安全关键可靠性的行业中,交叉验证是不可或缺的。
- 医学诊断: 在 医学图像分析 中,罕见疾病的数据集往往很小。单一的验证拆分可能会意外排除困难病例或罕见病理。通过使用交叉验证,开发 医疗 AI 的研究人员可以确保他们的诊断模型已针对所有可用的患者扫描件进行了测试,从而验证系统在不同人群和设备类型下的有效性。
- 精准农业: 在户外环境中,环境条件千差万别。一个针对 作物病害检测 训练的模型在晴天可能表现良好,但如果那些图像仅包含在训练集中,它在阴天可能会失效。交叉验证确保模型对这些变化具有鲁棒性,帮助农民依靠 自动机器学习 (AutoML) 工具实现无论天气如何都能进行持续监测。
Link to this section模型开发中的战略优势#
将交叉验证集成到 AI 开发生命周期 中,可以提供对 偏差-方差权衡 的关键洞察。
-
稳定性评估: 如果性能指标在不同折之间差异显著,则表明模型对用于训练的特定数据点高度敏感,暗示其具有高方差。
-
数据效率: 它最大化了有限数据的效用,因为每个观测值最终都用于训练和验证。
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.
- 与自助法对比: 自助法 (Bootstrapping) 涉及有放回的随机采样,而 K 折交叉验证是在无放回的情况下对数据进行分区(每个样本恰好存在于一折中)。
管理来自多折的制品、指标和模型可能非常复杂。Ultralytics 平台 通过提供集中的实验跟踪简化了这一过程,允许团队比较不同折之间的性能并轻松可视化 模型评估见解。






