9个时间序列交叉验证方法的介绍和对比

简介: 在本文中,我们收集了时间序列的常用的9种交叉验证方法。这些包括样本外验证(holdout)或流行的K-fold交叉验证的几个扩展。

评估性能对预测模型的开发至关重要。交叉验证是一种流行的技术。但是在处理时间序列时,应该确保交叉验证处理了数据的时间依赖性质。在之前的文章中,我们也做过相应的介绍。

TimeSeriesSplits通常是评估预测性能的首选方法。这种方法也称为时间序列交叉验证。但是我们这里列出的其他方法可能会有更好的结果。

Holdout

Holdout是估计预测效果最简单的方法。它的工作原理是进行一次分割(图1)。该序列的第一部分用于训练模型。这个模型在保留的观测中进行检验。

一般情况下训练集大小通常设置为观察总数的70%,可以使用scikit-learn中的train_test_split函数应用Holdout。

如果时间序列大小不大,使用单个分割可能会导致不可靠的估计。

时间序列交叉验证

进行多次拆分是个好主意。这样做可以在数据的不同部分上测试模型。一种方法是使用时间序列交叉验证。下面是该技术的可视化描述:

时间序列被分成K个连续的数据块。每个块首先用于测试模型,然后重新训练它。除了第一块,它只用于训练。时间序列交叉验证就是scikit-learn中TimeSeriesSplit实现。

带间隙的时间序列交叉验证

可以在上述技术中增加训练和验证之间的间隙(图3)。这有助于增加两个样本之间的独立性。使用TimeSeriesSplit类中的gap参数引入这个间隙。

滑动时间序列交叉验证

另一种应用时间序列交叉验证的方法是滑动窗口(图4)。在迭代之后老的数据块被丢弃。

这种方法可能在两种情况下有用:

  • 数据量巨大
  • 旧的观察已经过时了

这种变体也可以应用于训练样本和验证样本之间的间隙。

蒙特卡洛交叉验证

蒙特卡罗交叉验证是TimeSeriesSplit的另一种方法。下图是这种技术的直观图示。

与TimeSeriesSplits不同,每个迭代中的验证原点是随机选择的。

K-Fold交叉验证

K-fold交叉验证(图6)是一种用于评估模型性能的流行技术。它的工作原理是变换观察结果,并将它们分配给K个相等大小的折。然后每折都被用作验证而剩下的其他数据进行训练。

这种方法的主要优点是所有的观测结果都在某个时刻被用于验证。

但是整个过程是在观测是独立的假设下进行的。这对时间序列来说是不成立的。所以最好选择一种尊重观察的时间顺序的交叉验证方法。

但是在某些情况下,K-fold交叉验证对时间序列是有用的。例如,当时间序列是平稳的或样本量很小时。你可以在参考文献[1]中了解更多。

Blocked K-Fold交叉验证

一些专门设计的技术用于扩展时间序列的K-Fold交叉验证。

其中一种方法是阻塞K-Fold交叉验证。这个过程与之前相似,但是没有了打乱的部分。观察的顺序在每个块内保持不变,但在它们之间的关系被打破了。

这种方法对于平稳时间序列是很方便的。可以在参考文献[2]和[3]中查看更多详细信息。

hv-Blocked K-Fold交叉验证

可以尝试通过在两个样本之间引入间隔来增加训练和验证之间的独立性。这就是一种称为hv-Blocked K-Fold交叉验证的方法。

改进的K-Fold交叉验证

改进的K-Fold交叉验证保留了过程中的打乱部分(图9)。但是它删除了接近验证样本的任何训练观察值。

改进的K-Fold交叉验证依赖于创造间隙而不是阻塞。但是这种技术的主要问题是许多训练观察被删除了。这可能会导致拟合不足的问题。

总结

本文概述了9种可用于时间序列不同的交叉验证的方法,这里建议:

首选技术是蒙特卡洛交叉验证(列表中的第5个)。时间序列交叉验证(及其变体)是一个很好的选择。如果时间序列大小较大,通常直接Holdout,因为评估过程更快。

但是没有绝对,其他技术在的特定情况下也是很有用,还是需要根据具体情况具体分析。

本文引用:

[1] Bergmeir, Christoph, Rob J. Hyndman, and Bonsoo Koo. “A note on the validity of cross-validation for evaluating autoregressive time series prediction.” Computational Statistics & Data Analysis 120 (2018): 70–83.

[2] Bergmeir, C., & Benítez, J. M. (2012). On the use of cross-validation for time series predictor evaluation. Information Sciences, 191, 192–213.

[3] Cerqueira, Vitor, Luis Torgo, and Igor Mozetič. “Evaluating time series forecasting models: An empirical study on performance estimation methods.” Machine Learning 109.11 (2020): 1997–2028.

[4] Racine, J. (2000). Consistent cross-validatory model-selection for dependent data: hv-block cross-validation.Journal of Econometrics, 99(1), 39–61.

[5] Arlot, Sylvain, and Alain Celisse. “A survey of cross-validation procedures for model selection.” Statistics surveys 4 (2010): 40–79.

https://avoid.overfit.cn/post/6e8c6d96d4954f8589e6118cb351139d

作者:Vitor Cerqueira

目录
相关文章
|
机器学习/深度学习 数据采集 数据处理
掌握时间序列特征工程:常用特征总结与 Feature-engine 的应用
本文介绍了时间序列特征工程,包括滚动统计量、滞后特征、差分和变换等技术,用于提升机器学习模型性能。文章还推荐了Python库`feature-engine`,用于简化特征提取,如处理缺失值、编码分类变量和进行时间序列转换。示例代码展示了如何使用`feature-engine`提取时间戳信息、创建滞后特征和窗口特征。通过创建管道,可以高效地完成整个特征工程流程,优化数据预处理并提高模型效果。
2332 15
|
Serverless 数据处理 索引
Pandas中的shift函数:轻松实现数据的前后移动
Pandas中的shift函数:轻松实现数据的前后移动
2576 0
|
存储 算法 NoSQL
还分不清 Cookie、Session、Token、JWT?看这一篇就够了
Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点,接下来就让我们一起看看吧,本文转载至http://juejin.im/post/5e055d9ef265da33997a42cc
50777 16
|
安全 Linux iOS开发
Anaconda下载及安装保姆级教程(详细图文)
Anaconda下载及安装保姆级教程(详细图文)
36937 1
Anaconda下载及安装保姆级教程(详细图文)
|
机器学习/深度学习 算法 数据挖掘
交叉验证之KFold和StratifiedKFold的使用(附案例实战)
交叉验证之KFold和StratifiedKFold的使用(附案例实战)
3359 0
|
Windows
已解决Win11报错 OSError: [WinError 1455] 页面文件太小,无法完成操作。
Win11报错 OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading "D:\aaaa\envs\gs\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll" or one of its dependencies.
12886 0
已解决Win11报错 OSError: [WinError 1455] 页面文件太小,无法完成操作。
|
3月前
|
机器学习/深度学习 传感器 算法
Python | K折交叉验证的参数优化的支持向量机回归(SVR)预测及可视化算法
本教程系统讲解基于Python的SVR回归预测,涵盖数据处理、模型训练、K折交叉验证及贝叶斯、随机、网格搜索等参数优化方法,适用于多领域回归任务,附完整代码与可视化实现。
397 5
|
Linux iOS开发 MacOS
【MCP教程系列】阿里云百炼MCP全面配置指南:涵盖NPX、UVX、SSE及Streamable HTTP
本文详细介绍如何在阿里云百炼平台及Windows、Linux、MacOS系统中正确配置MCP服务的JSON文件。内容涵盖三种MCP服务配置:npx(基于Stdio)、uvx(Python工具运行)和SSE(服务器发送事件)。同时解析Streamable HTTP作为新一代传输方案的优势与应用,帮助用户掌握每个参数的具体用途及使用方法,解决配置过程中可能遇到的问题,提供完整示例和扩展信息以优化设置体验。
5969 11
|
机器学习/深度学习 自然语言处理 监控
深入探索:深度学习在时间序列预测中的强大应用与实现
时间序列分析是数据科学和机器学习中一个重要的研究领域,广泛应用于金融市场、天气预报、能源管理、交通预测、健康监控等多个领域。时间序列数据具有顺序相关性,通常展示出时间上较强的依赖性,因此简单的传统回归模型往往不能捕捉其中复杂的动态特征。深度学习通过其非线性建模能力和层次结构的特征提取能力,能够有效地捕捉复杂的时间相关性和非线性动态变化模式,从而在时间序列分析中展现出极大的潜力。
1136 0

热门文章

最新文章