术语表

交叉验证

了解交叉验证在机器学习中的强大作用,以提高模型准确性、防止过度拟合并确保性能稳定。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

交叉验证是机器学习(ML)中的一项重要统计技术,用于评估模型在独立数据集上的泛化程度。交叉验证将数据分成多个子集或 "折叠",而不是将数据单一地分成训练集和测试集。模型在一些折叠集上反复训练,然后在剩余的折叠集上进行评估。与简单的训练/测试拆分相比,这一过程能更可靠地估计模型在未见数据上的性能,从而大大降低过拟合的风险,即模型对训练数据的学习效果太好,包括其噪声。

交叉验证的工作原理

使用最广泛的方法是 K 折交叉验证法。该过程包括以下步骤

  1. 洗牌和分割:随机洗牌整个数据集,并将其分成大小相等的 "K "个折叠(子集)。
  2. 迭代训练和验证: 模型训练 K 次。在每次迭代 "i"(从 1 到 K)中
  3. 性能汇总:对 K 次迭代中每次记录的性能指标进行平均,从而对模型的泛化能力做出一个更可靠的估算。

许多流行的 ML 库(如Scikit-learn)都提供了各种交叉验证策略的高效实现,包括分层 K-折(对于不平衡数据集至关重要)和留空 CV。

为什么要使用交叉验证?

交叉验证是可靠模型评估的基石,主要有以下几个原因:

  • 更可靠的性能评估:通过对多个验证集的结果取平均值,CV 可以减少与单一训练/测试分值相关的方差,从而更稳定地衡量模型在实践中的表现。这有助于提高研究的可重复性
  • 高效利用数据:它能更好地利用有限的数据集,因为每个数据点都是不同折叠的训练数据和验证数据。这在数据收集昂贵或困难的情况下尤为有益。
  • 检测过拟合/欠拟合:它通过揭示训练性能与平均验证性能之间的差异,帮助识别过于复杂(过拟合)或过于简单(欠拟合)的模型。
  • 稳健的超参数调整:交叉验证为选择最佳超参数提供了更可靠的依据。可以根据不同超参数集的平均交叉验证性能对其进行评估,从而建立具有更好泛化能力的模型。Ultralytics 提供的超参数调整工具可以结合 CV 原理。

交叉验证与简单的训练/验证分离

简单的训练/验证分割只需将数据分割一次:一部分用于训练,一部分用于验证。虽然很容易实现,但其主要缺点是性能评估在很大程度上取决于哪些特定数据点恰好属于验证集。特别 "容易 "或 "困难 "的验证集都可能导致过于乐观或悲观的性能估计。

交叉验证通过系统地使用不同的子集进行验证来克服这一问题,确保每个数据点都能准确地参与一次评估过程。这样就能对模型的鲁棒性进行更稳定、更可靠的评估。值得注意的是,最终测试数据集在训练和基于交叉验证的调整过程中都没有出现过,仍应保留用于最终评估所选模型。Ultralytics 提供了使用Ultralytics YOLO 实施K 折交叉验证的详细指导。

实际应用

交叉验证是在不同领域构建可靠的人工智能系统所不可或缺的:

  1. 医学图像分析:在开发用于医学图像分析的 卷积神经网络 (CNN)时,例如使用脑肿瘤数据集等数据集检测脑部扫描中的肿瘤,在考虑进行临床试验或寻求监管部门批准(如美国食品及药物管理局)之前,CV 可用于严格评估模型在不同患者数据中的诊断准确性和泛化能力。
  2. 自动驾驶汽车:对于物体检测模型,如 Ultralytics YOLO等物体检测模型而言,CV 有助于确保在Argoverse 等复杂数据集中常见的各种环境条件(照明、天气、道路类型)下检测行人、骑车人和其他车辆的可靠性能。这种稳健的评估通常以平均精度(mAP)等指标来衡量,在安全关键型系统(如人工智能汽车解决方案中的系统)中部署模型之前至关重要。

其他应用包括评估图像分割模型、情感分析等自然语言处理(NLP)任务以及金融建模中的风险评估。Ultralytics HUB等平台通常集成或促进此类评估技术,以简化开发生命周期。

阅读全部