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

news2024/11/18 13:29:22

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

在本文中,我们收集了时间序列的常用的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【博客578】LVS NAT配合MASQUERADE实现FULLNAT的场景,及此场景下net.ipv4.vs.conntrack参数的重要作用

LVS NAT配合MASQUERADE实现FULLNAT的场景,及此场景下net.ipv4.vs.conntrack参数的重要作用 1、LVS基本原理: 流程: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROU…

第6章 线程通信

6.2.1 管道 管道是一个线性字节数组,类似文件,使用文件读写进行访问;在程序里面,创建管道需要使用popen()或者pipe(); 管道的一个重要特点是使用管道的两个线程之间必须存在某种关系, 例如,使用popen需要提供另一端进程的文件名,使用pipe的两个线程分别隶属于父子进…

Linux常用命令——fgrep命令

在线Linux命令查询工具 fgrep 为文件搜索文字字符串 补充说明 fgrep命令是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行。fgrep 命令特别搜索 Pattern 参数,它们是固定的字符串。如果在 File 参数中指定一个以上的…

dp刷题(三)编辑距离(Hard)

编辑距离_牛客题霸_牛客网 描述 给定两个单词word1和word2,请计算将word1转换为word2至少需要多少步操作。 你可以对一个单词执行以下3种操作: a)在单词中插入一个字符 b)删除单词中的一个字符 c)替换单词中的一个字…

C#,图像二值化(14)——全局阈值的最佳迭代算法(Iterate Thresholding)及源代码

1、图像二值化 图像二值化是将彩色图像转换为黑白图像。大多数计算机视觉应用程序将图片转换为二进制表示。图像越是未经处理,计算机就越容易解释其基本特征。 二值化过程 在计算机存储器中,所有文件通常以灰度级的形式存储,灰度级具有从0…

Vue基础入门小demo——记事本

文章目录 📋前言 🎯demo介绍 🎯完整代码 🎯最终效果 🎯案例分析 📋前言 记事本(不是操作系统的那个记事本,是一个简单的网页版本记事本)是一个较全面的Vue指令集合案…

迁移学习简要

什么是迁移学习 迁移学习是一种机器学习方法,就是把任务为A的开发模型作为其的初始点,重新使用在任务为B的开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务。虽然大多数机器学习的新 算法都是为了解决单个任务而设计的…

Exynos_4412——IIC控制器和MPU6050

目录 一、Exynos_4412下的IIC控制器 二、IIC寄存器 三、MPU6050原理 MPU6050 MPU6050的主要参数 MPU6050通信接口 MPU6050官方芯片手册 MPU6050寄存器 四、MPU6050寄存器读写时序 向MPU6050写一个字节数据 向MPU6050读一个字节数据 五、IIC编程 六、小项目 Exynos…

Linux内核中断子系统

查看中断控制相关的设备树节点 *********************gpiof控制器*************************pinctrl: pin-controller50002000 {#address-cells <1>;#size-cells <1>;compatible "st,stm32mp157-pinctrl";interrupt-parent <&exti>;gpiof…

数据结构与算法三【树】

二叉树性质 满二叉树 深度为k&#xff0c;有2k−12^{k}-12k−1个结点的二叉树&#xff0c;为满二叉树。 完全二叉树 完全二叉树的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面…

【jQuery】常用API——jQuery选择器

一、 jQuery基础选择器原生JS获取元素方式很多&#xff0c;很杂&#xff0c;而且兼容性情况不一致&#xff0c;因此jQuery给我们做了封装&#xff0c;使荻取元素统一标准。$(“选择器”); //里面选择器直接写CSS选择器即可&#xff0c;但是要加号<script src"../jquery…

Ubuntu18.04系统 部署python3.9.0 源码编译安装及pip配置全过程记录

1.Ubuntu系统镜像下载和基本配置 1.1 镜像下载 镜像下载&#xff1a;https://cn.ubuntu.com/download/desktop 1.2 配置静态IP 配置固定IP方式&#xff1a; Ubuntu18之前在/etc/network/interfaces进行配置&#xff0c;Ubuntu18及之后版本在/etc/netplan/*.yaml进行配置&am…

Node.JS(1)

目录 命令行窗口&#xff08;cmd窗口、小黑屏、终端、shell&#xff09; 环境变量 命令行窗口&#xff08;cmd窗口、小黑屏、终端、shell&#xff09; winR快捷键-->cmd 常用指令 dir 列出当前目录下的所有文件 cd 目录名 进入到指定的目录 md 目录名 创建一个文件…

redis安装和使用说明

Redis安装说明大多数企业都是基于Linux服务器来部署项目&#xff0c;而且Redis官方也没有提供Windows版本的安装包。因此课程中我们会基于Linux系统来安装Redis.此处选择的Linux版本为CentOS 7.Redis的官方网站地址&#xff1a;https://redis.io/1.单机安装Redis1.1.安装Redis依…

数字验证学习笔记——SystemVerilog芯片验证23 ——数据采样

一、数据采样 当你coverpoint指定采样一个变量或表达式时&#xff0c;SV会创建很多“仓&#xff08;bin&#xff09;”来记录每个数值被捕捉到的次数。这些bin是衡量功能覆盖率的基本单位。covergroup中可以定义多个coverpoint&#xff0c;coverpoint中可以自定义多个cover bi…

SAP灵活工作流场景模板创建

目录 1. 创建流程对象容器 2. 编辑模板中的灵活块 3. 设置工作流启动事件 4. 设置工作流运行时事件 5. 设置工作流输出结果&#xff08;可选&#xff09; 6. 工作流控制类 7. 创建流程活动 8. 创建流程条件 9. 代理规则 9. 值帮助 10. 参考时间 11. 电子邮件模版 …

[ AWS - SAA ] 解决方案架构师之设计弹性架构 - 选择可靠的弹性存储(如何选择 SSD vs. HDD)

本系列博文会围绕AWS Well-Architected 和六大支柱进行讲解&#xff0c;这些领域的内容对成为AWS亚马逊云科技上的 解决方案架构师&#xff08;SAA&#xff09; 非常重要。 本文主要介绍AWS亚马逊云中&#xff0c;关于弹性架构设计中存储设备的一些讲解。 本文的部分内容适用于…

哈希切割 + 位图 + 布隆过滤器 —— 海量数据面试题

目录 题目一&#xff1a;给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址&#xff1f; 哈希切割 题目二&#xff1a;给定100亿个整数&#xff0c;设计算法找到只出现一次的整数&#xff1f; 解法一&#xff1a;哈希切割 解法二&#xf…

【论文精读】Guided-MVS

今天读的是一篇发表在IROS2022上的MVS文章&#xff1a;Multi-View Guided Multi-View Stereo&#xff0c;作者是来自于意大利University of Bologna的Matteo Poggi。 论文链接&#xff1a;arxiv 代码链接&#xff1a;https://github.com/andreaconti/multi-view-guided-multi-v…

SpringCloud Netflix复习之OpenFeign

文章目录写作背景Feign核心组件介绍Encoder和DecoderLoggerContractFeign.Builder上手实战开启FeignClient调用请求日志给FeignClient注入自定义拦截器Feign支持文件上传配置Feign开启Gzip压缩Feign配置超时时间Feign整合Ribbon支持负载均衡核心源码部分FeignClient注入到Sprin…