Explore cross-validation to prevent overfitting and boost model reliability. Learn how to implement K-Fold splits with YOLO26 to ensure your AI generalizes well.
交叉验证是一种稳健的统计重采样程序,用于评估机器学习(ML)模型在有限数据样本上的表现。与将数据分割为单一训练集和测试集的标准保留法不同,交叉验证将数据集划分为多个子集,确保每个数据点均用于训练和验证。 该技术对于评估统计分析结果能否推广至独立数据集至关重要,有助于detect 模型是否出现过拟合——即模型可能记忆训练样本而非学习可推广的模式。
该技术最广泛应用的变体是K折交叉验证。在此过程中, 整个数据集被随机划分为k个等分组,即"折"。训练过程 随后重复k次。每次迭代中,单个折作为验证数据 用于测试模型,其余k-1个折则作为训练数据。
最终的性能指标通常通过取各轮次得分的平均值来计算,例如准确率、精确率或 平均平均精度(mAP)。这种方法显著降低了训练-测试集拆分单次试验相关的方差,从而提供更可靠的泛化误差估计。它确保评估结果不会因测试数据的任意选择而产生偏差。
交叉验证在处理较小数据集或进行严格的超参数调优时尤为有用。尽管现代深度学习框架如PyTorch PyTorch 虽能简化训练流程,但折叠管理仍需精心准备数据。
以下示例演示了如何使用YOLO26模型,对预先生成的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-折交叉验证指南。
在数据稀缺、采集成本高昂或需要满足安全关键可靠性的行业中,交叉验证不可或缺。
将交叉验证整合到 人工智能开发生命周期中, 可为偏置-方差权衡提供关键洞见。
区分交叉验证与其他评估术语至关重要:
管理来自多个折叠的工件、指标和模型可能相当复杂。Ultralytics 通过提供集中化的实验追踪功能简化了这一过程,使团队能够轻松比较不同折叠中的性能表现,并直观呈现模型评估洞察。