探索机器学习中交叉验证的强大功能,以提高模型准确性、防止过度拟合并确保稳健的性能。
交叉验证是机器学习(ML)中使用的一种稳健的统计方法。 交叉验证是机器学习 (ML) 模型的性能,并评估其对独立数据集的泛化程度。与标准评估 方法不同,交叉验证涉及将数据划分为若干子集,在其中一些子集上训练模型,然后在另一些子集上验证模型。 模型,然后在其他子集上进行验证。这种迭代过程有助于识别模型是否 是否存在过拟合问题,确保其学习到的模式 适用于新的、未见过的数据,而不仅仅是记住训练数据中的噪音。 训练数据中的噪音。
这种技术最广泛使用的变体是 K 折交叉验证。这种方法将整个数据集 分为k 个大小相等的片段或 "褶皱"。然后将训练和评估过程重复 k次。在每次迭代过程中,一个特定的折叠作为 验证数据进行测试,而其余 k-1 个折叠用于训练。
这种方法可确保每个数据点都被准确地用于训练和验证一次,从而提供偏差较小的模型泛化误差估计值。 对模型泛化误差的估计偏差较小。
区分标准验证拆分和交叉验证非常重要。在传统的工作流程中 数据被静态地分为训练数据、验证数据和 测试数据。这种单一的 如果选择的验证集异常简单或困难,这种单一的分割方式就会产生误导。
交叉验证通过对多个拆分的性能进行平均,从而降低了这一风险,使其成为模型选择的首选方法。 模型选择和 超参数调整的首选方法,尤其是在可用数据集较小的情况下。 特别是当可用数据集较小时。虽然像 Scikit-Learn 等框架为经典 ML 但深度学习工作流程通常会手动或通过特定的数据集配置来实现这些循环。
from ultralytics import YOLO
# Example: Iterating through pre-prepared K-Fold dataset YAML files
# A fresh model is initialized for each fold to ensure independence
yaml_files = ["fold1.yaml", "fold2.yaml", "fold3.yaml", "fold4.yaml", "fold5.yaml"]
for k, yaml_path in enumerate(yaml_files):
model = YOLO("yolo11n.pt") # Load a fresh YOLO11 model
results = model.train(data=yaml_path, epochs=50, project="kfold_demo", name=f"fold_{k}")
在可靠性要求极高且数据稀缺的行业中,交叉验证至关重要。
在人工智能开发生命周期中,实施交叉验证具有显著优势。 在人工智能开发生命周期中具有显著优势。它允许 更积极地优化学习率和 其他设置进行更积极的优化,而不必担心根据单一验证集定制模型。此外,它还有助于 偏差与方差之间的权衡,帮助 工程师找到最佳点,即模型既要足够复杂以捕捉数据模式,又要足够简单以保持对新输入的有效性。 对新输入有效。
如需了解实际实施细节,您可以参考以下指南 使用Ultralytics进行 K 折交叉验证、 该指南详细介绍了如何构建数据集和训练循环,以实现最高效率。

