8种交叉验证类型的深入解释和可视化介绍

简介: 8种交叉验证类型的深入解释和可视化介绍

640.png

交叉验证(也称为“过采样”技术)是数据科学项目的基本要素。它是一种重采样过程,用于评估机器学习模型并访问该模型对独立测试数据集的性能。

在本文中,您可以阅读以下大约8种不同的交叉验证技术,各有其优缺点:

  1. Leave p out cross-validation
  2. Leave one out cross-validation
  3. Holdout cross-validation
  4. Repeated random subsampling validation
  5. k-fold cross-validation
  6. Stratified k-fold cross-validation
  7. Time Series cross-validation
  8. Nested cross-validation

在介绍交叉验证技术之前,让我们知道为什么在数据科学项目中应使用交叉验证。

为什么交叉验证很重要?

我们经常将数据集随机分为训练数据和测试数据,以开发机器学习模型。训练数据用于训练ML模型,同一模型在独立的测试数据上进行测试以评估模型的性能。

随着分裂随机状态的变化,模型的准确性也会发生变化,因此我们无法为模型获得固定的准确性。测试数据应与训练数据无关,以免发生数据泄漏。在使用训练数据开发ML模型的过程中,需要评估模型的性能。这就是交叉验证数据的重要性。

数据需要分为:

  • 训练数据:用于模型开发
  • 验证数据:用于验证相同模型的性能

640.png

简单来说,交叉验证使我们可以更好地利用我们的数据。

1.Leave p-out cross-validation

LpOCV是一种详尽的交叉验证技术,涉及使用p观测作为验证数据,而其余数据则用于训练模型。以所有方式重复此步骤,以在p个观察值的验证集和一个训练集上切割原始样本。

已推荐使用p = 2的LpOCV变体(称为休假配对交叉验证)作为估计二进制分类器ROC曲线下面积的几乎无偏的方法。

2. Leave-one-out cross-validation

留一法交叉验证(LOOCV)是一种详尽的穷尽验证技术。在p = 1的情况下,它是LpOCV的类别。

640.gif

对于具有n行的数据集,选择第1行进行验证,其余(n-1)行用于训练模型。对于下一个迭代,选择第2行进行验证,然后重置来训练模型。类似地,这个过程重复进行,直到n步或达到所需的操作次数。

以上两种交叉验证技术都是详尽交叉验证的类型。穷尽性交叉验证方法是交叉验证方法,以所有可能的方式学习和测试。他们有相同的优点和缺点讨论如下:

优点:简单,易于理解和实施

缺点:该模型可能会导致较低的偏差、所需的计算时间长

3.Holdout cross-validation

保留技术是一种详尽的交叉验证方法,该方法根据数据分析将数据集随机分为训练数据和测试数据。

640.png

在保留交叉验证的情况下,数据集被随机分为训练和验证数据。通常,训练数据的分割不仅仅是测试数据。训练数据用于推导模型,而验证数据用于评估模型的性能。

用于训练模型的数据越多,模型越好。对于保留交叉验证方法,需要从训练中隔离大量数据。

优点:和以前一样,简单,易于理解和实施

缺点:不适合不平衡数据集、许多数据与训练模型隔离

4. k-fold cross-validation

在k折交叉验证中,原始数据集被平均分为k个子部分或折叠。从k折或组中,对于每次迭代,选择一组作为验证数据,其余(k-1)个组选择为训练数据。

640.gif

该过程重复k次,直到将每个组视为验证并保留为训练数据为止。

640.png

模型的最终精度是通过获取k模型验证数据的平均精度来计算的。

640.png

LOOCV是k折交叉验证的变体,其中k = n。

优点:

  • 该模型偏差低
  • 时间复杂度低
  • 整个数据集可用于训练和验证

缺点:不适合不平衡数据集。

5. Repeated random subsampling validation

重复的随机子采样验证(也称为蒙特卡洛交叉验证)将数据集随机分为训练和验证。数据集的k倍交叉验证不太可能分成几类,而不是成组或成对,而是在这种情况下随机地成组。

迭代次数不是固定的,而是由分析决定的。然后将结果平均化。

640.png

重复随机二次抽样验证

640.png

优点:训练和验证拆分的比例不取决于迭代或分区的数量

缺点:某些样本可能无法选择用于训练或验证、不适合不平衡数据集

6. Stratified k-fold cross-validation

对于上面讨论的所有交叉验证技术,它们可能不适用于不平衡的数据集。分层k折交叉验证解决了数据集不平衡的问题。

在分层k倍交叉验证中,数据集被划分为k个组或折叠,以使验证数据具有相等数量的目标类标签实例。这样可以确保在验证或训练数据中不会出现一个特定的类,尤其是在数据集不平衡时。

640.png

分层k折交叉验证,每折具有相等的目标类实例

最终分数是通过取各折分数的平均值来计算的

优点:对于不平衡的数据集,效果很好。

缺点:现在适合时间序列数据集。

7. Time Series cross-validation

数据的顺序对于与时间序列相关的问题非常重要。对于与时间相关的数据集,将数据随机拆分或k折拆分为训练和验证可能不会产生良好的结果。

对于时间序列数据集,根据时间将数据分为训练和验证,也称为前向链接方法或滚动交叉验证。对于特定的迭代,可以将训练数据的下一个实例视为验证数据。

640.png

如上图所述,对于第一个迭代,第一个3行被视为训练数据,下一个实例T4是验证数据。选择训练和验证数据的机会将被进一步迭代。

8. Nested cross-validation

在进行k折和分层k折交叉验证的情况下,我们对训练和测试数据中的错误估计差。超参数调整是在较早的方法中单独完成的。当交叉验证同时用于调整超参数和泛化误差估计时,需要嵌套交叉验证。

嵌套交叉验证可同时应用于k折和分层k折变体。

结论

交叉验证用于比较和评估ML模型的性能。在本文中,我们介绍了8种交叉验证技术及其优缺点。k折和分层k折交叉验证是最常用的技术。时间序列交叉验证最适合与时间序列相关的问题。

这些交叉验证的实现可以在sklearn包中找到。有兴趣的读者可以阅读sklearn文档以获取更多详细信息。

https://scikit-learn.org/stable/modules/cross_validation.html

目录
相关文章
|
机器学习/深度学习 算法 数据挖掘
交叉验证之KFold和StratifiedKFold的使用(附案例实战)
交叉验证之KFold和StratifiedKFold的使用(附案例实战)
3700 0
|
11月前
|
机器学习/深度学习 算法 测试技术
Optuna v4.5新特性深度解析:GPSampler实现约束多目标优化
Optuna v4.5发布,新增GPSampler对约束多目标优化的支持,结合高斯过程与log EHVI获取函数,显著提升在材料科学、机器学习等领域的黑盒优化效率,减少无效评估,加速收敛。
607 12
Optuna v4.5新特性深度解析:GPSampler实现约束多目标优化
|
6月前
|
数据采集 数据处理 决策智能
【预测模型】GA-XGBoost回归+SHAP分析+新数据预测!Matlab代码实现
✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。 🔥 内容介绍 1 研究背景与意义 回归预测是数据驱动决策的核心技术,广泛应用于工业过程参数预测、环境质量评估、金融风险预测等领域。传统回归模型面临三大核心挑战: 模型超参数优
292 0
|
数据安全/隐私保护
jupyterlab远程服务器配置
jupyterlab远程服务器配置
704 0
|
安全 算法 小程序
关于Sectigo证书那些事儿
Sectigo(原Comodo CA)成立于1998年,是全球领先的证书颁发机构之一,SSL证书市场占有率近40%。其提供SSL证书、代码签名证书、邮件安全证书及文档签名证书等丰富数字证书产品,支持多平台兼容。Sectigo以高安全性、全球信任、高性价比著称,广泛应用于网站加密、软件签名、邮件保护和文档验证等领域,助力企业保障在线业务安全与可信。近期动态包括收购Entrust可信CA业务、与IONOS战略合作及获网络安全奖项等。
|
机器学习/深度学习
《揭秘机器学习中的交叉验证:模型评估的基石》
交叉验证是机器学习中评估模型性能的关键技术,旨在提高模型的可靠性和泛化能力。通过将数据集划分为多个子集,交叉验证有效抵御过拟合风险,最大化数据利用效率,并精准筛选最优模型。常见的方法包括K折交叉验证、留一交叉验证、分层交叉验证和嵌套交叉验证,每种方法适用于不同场景,确保模型在实际应用中表现优异。
1702 1
|
NoSQL Java Redis
Redlock分布式锁高并发下有什么问题
Redlock分布式锁在高并发场景下可能面临的问题主要包括:网络延迟、时钟偏移、单点故障、宕机重启问题、脑裂问题以及效率低等。接下来,我将使用Java代码示例来说明其中一些问题。
605 12
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
775 10
|
数据可视化 数据挖掘 数据处理
ChatGPT数据分析应用——热力图分析
ChatGPT数据分析应用——热力图分析
1189 1

热门文章

最新文章