术语表

交叉验证

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

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

了解更多

交叉验证是机器学习(ML)中的一项重要技术,用于评估模型对未见过的新数据的泛化程度。它有助于确保模型不只是在记忆训练数据,即所谓的 "过拟合"问题,而是在学习适用范围更广的模式。这种技术包括将可用数据分成多个子集或 "折叠"。模型在一部分数据上进行训练,然后在剩余部分上进行验证,这一过程会重复多次,并使用不同的子集进行训练和验证。

模型评估的重要性

与使用单一的训练-测试分割相比,交叉验证能更可靠地估计模型的性能。通过在不同的数据子集上对模型进行训练和验证,有助于降低由于偶然性导致模型仅在特定数据集上表现良好的风险。当数据集有限时,这一点尤为重要,因为它可以最大限度地利用可用数据进行训练和验证。这种方法还有助于调整超参数,使实践者能够选择最佳设置,在不同折叠中获得最佳性能。从交叉验证中获得的洞察力可以指导模型设计和训练的改进,最终产生更强大、更可靠的模型。

交叉验证的类型

有几种类型的交叉验证方法,分别适用于不同的情况:

K 倍交叉验证

在 K 折交叉验证中,数据集被分成大小相等的 K 折。模型在 K-1 个折叠上进行训练,然后在剩余的折叠上进行验证。这一过程重复 K 次,每个折叠作为验证集一次。然后对所有 K 次迭代的准确率F1 分数等性能指标求平均值,从而对模型的性能进行综合评估。

分层 K 折交叉验证

分层 K-Fold 是 K-Fold 交叉验证的一种变体,它能确保每个折叠保持与原始数据集相同的类别比例。这对于某个类别明显多于其他类别的不平衡数据集尤其有用。通过保留每个折叠中的类别分布,分层 K-Fold 有助于确保模型的性能不会因类别不平衡而发生偏移。

留空交叉验证(LOOCV)

在 "留一弃一 "交叉验证法中,每个数据点只作为验证集使用一次,其余数据用于训练。这种方法计算成本较高,但能提供全面的评估,尤其是对小数据集而言。当数据集非常小,每个数据点对训练和验证都至关重要时,这种方法尤其有用。

在现实世界人工智能/移动语言项目中的应用

交叉验证被广泛应用于各种实际应用中,以确保机器学习模型的可靠性和稳健性。例如

  1. 医学诊断:在医学诊断中,交叉验证可用于评估根据患者数据预测疾病的模型的性能。通过在不同的患者数据子集上对模型进行训练和验证,研究人员可以确保模型在不同的患者群体中都准确可靠。这对于做出明智的医疗决策和改善患者预后至关重要。了解有关医疗保健领域人工智能的更多信息。

  2. 欺诈检测:在金融业,交叉验证有助于建立强大的欺诈检测系统。通过在历史交易数据上训练模型并在不同子集上进行验证,金融机构可以确保其模型准确识别欺诈活动,同时最大限度地减少误报。这有助于保护客户和维护金融系统的完整性。进一步了解人工智能在金融领域的应用

交叉验证与其他评估技术的比较

虽然交叉验证是一种强大的技术,但了解它与其他评估方法的区别也很重要:

  • 训练-测试分割:在简单的训练-测试分割中,数据被分为两部分:一部分用于训练,另一部分用于测试。虽然这种方法更快、更简单,但如果测试集不能代表整体数据,就会导致性能估计值差异很大。交叉验证通过使用多个训练-测试分割来缓解这一问题。了解有关训练数据验证数据测试数据的更多信息。

  • 引导:引导是指对数据集进行重复采样,并替换以创建多个训练集。虽然这种方法有助于估计模型性能的变异性,但计算量大,在模型选择方面可能不如交叉验证有效。

  • 搁置法:与训练-测试分离法类似,搁置法也是留出一部分数据用于验证。不过,与交叉验证法不同的是,这种方法不涉及多次迭代训练和验证,这可能会降低性能估计的可靠性。

工具和图书馆

一些工具和库支持在机器学习项目中实施交叉验证。在Python 中,scikit-learn 库为各种交叉验证技术提供了全面的函数,包括 K-Fold 和分层 K-Fold。此外,像 TensorFlowPyTorch等框架提供了将交叉验证集成到模型训练管道中的实用工具。对于Ultralytics YOLO 的用户,有关实施 K-Fold 交叉验证的详细指导可参阅K-Fold 交叉验证文档。

阅读全部