了解交叉验证如何提高模型泛化能力并防止过拟合。探索如何使用 Ultralytics YOLO26 实现 K-Fold 评估以实现稳健的 ML。
交叉验证是一种稳健的统计重采样过程,用于评估在有限数据样本上 机器学习 (ML) 模型的性能。与将数据划分为单个训练集和测试集的标准留出法不同,交叉验证涉及将 数据集 划分为多个子集,以确保每个数据点都用于训练和验证。这种技术对于评估统计分析结果如何泛化到独立数据集至关重要,有助于检测模型可能记忆训练示例而非学习可泛化模式的 过拟合 问题。
该技术最广泛使用的变体是K折交叉验证。在此过程中,整个数据集被随机划分为k个大小相等的组,即“折”。然后,训练过程重复k次。在每次迭代中,一个折作为验证数据用于测试模型,而剩余的k-1个折则作为训练数据。
最终性能指标通常通过平均每次循环获得的分数来计算,例如准确率、精确率或平均精确度 (mAP)。这种方法显著减少了与单次训练-测试分割试验相关的方差,提供了对泛化误差更可靠的估计。它确保评估不会因测试数据的任意选择而产生偏差。
交叉验证在处理较小数据集或进行严格的 超参数调优 时特别有用。尽管像 PyTorch 这样的现代深度学习框架简化了训练循环,但管理折叠需要仔细的数据准备。
以下示例演示了如何迭代预生成的yaml配置文件,以使用YOLO26模型进行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 开发生命周期中,为 偏差-方差权衡提供了关键见解。
区分交叉验证与其他评估术语非常重要:
管理来自多个折叠的工件、指标和模型可能很复杂。Ultralytics 平台 通过提供集中式实验 track,简化了这一过程,使团队能够轻松比较不同折叠的性能并可视化 模型评估洞察。

开启您的机器学习未来之旅