时间序列滑动窗口和时间穿越问题

什么是时序数据

时序数据是指时间序列数据。时间序列数据是同一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同类的,要求具有可比性。简单的来说,就是按照时间为索引的数据列。

如何使用时序数据

对时间序列分析的目的是通过找出样本内时间序列的统计特性和发展规律性,基于规律构建时间序列模型,进行样本预测。

那么对于时序数据,我们通常会去分析数据的极值,中值,偏差,方差,同比,环比以及数据的周期性等特点,从而去总结数据的一些特征,进而对数据有一个大致的认识。

同时,我们还可以使用滑窗统计,即按照时间的顺序对每一个时间段的数据进行统计,从而得到每个时间段内目标体现的特征,进而从连续的时间片段中,通过对同一特征在不同时间维度下的分析,可以得到数据的变化趋势。

滑动窗口图片

从上图可以看出,滑动窗口便是按照将目标值按照时间进行排序,接着划定每个窗口长度以及大小,计算每个窗口内的特征,便可以得到目标值的变化趋势

什么是流水表和切片表

在金融行业中,通常获取的表有两种,流水表和切片表,

流水表的定义:流水表对于表的每一个修改都会记录,可以用于反映实际记录的变更。通常用于记录数据变更。

切片表的定义:切片表往往只反映某一个维度的相应数据。其表结构往往只有某一维度,或者某一个事实条件的数据,通常来说,切片分为按天切片,按月切片,按年切片,不同的切片反应了数据在不同时间跨度上的变化。

对流水表划窗和对切片表划窗

对于流水表,按照上述方法进行滑窗,即在一段时间窗口内进行特征统计,对不同窗口进行分析即可以得到数据的内在变化趋势。

对于切片表,由于其已经进行了切片,因此其滑窗只能按照最小切片间隔的整数倍进行滑窗

什么是时间穿越

所谓时间穿越,即用到了未来的数据。如下图所示,如果在统计窗口一的同时加入了窗口二内的数据,这就造成了穿越。

如果使用了穿越数据,那么很显然就会出现模型过拟合的现象。导致模型在训练集中效果却异常优异,但是在测试集或者上线后性能急剧下降。

究其根本原因,是因为在实际场景中,数据行为都是在快速变化的,相近时间内的行为存在一定的相似性,时间相差越远行为差异越大。这一点和一个稳定数据分布场景是完全不同的,如果数据分布在时间维度上是相对稳定的,那么时间因素就不是一个那么重要的因素,相互穿越带来的问题就会比较小。

因此我们在建模过程中为了模型的准确性和鲁棒性,需要避免时间穿越的问题。

如何避免穿越

因此,如果需要避免穿越,就不要使用未来数据即可,但是,在这之间有一些点需要注意,建模过程中常常误加入穿越数据。

  1. 如下图所示,如下图所示,如果我们需要计算TS点的数据,假设这个数据时T+3的数据,如果我们的滑动窗口时60天,那么我们的滑窗也应该是过去57天到过去三天。

原文地址:https://www.cnblogs.com/tjpeng/p/12368665.html

时间: 2024-10-01 04:34:37

时间序列滑动窗口和时间穿越问题的相关文章

tcp滑动窗口与拥塞控制

TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现.一.滑动窗口协议     所谓滑动窗口协议,自己理解有两点:1. "窗口"对应的是一段可以被发送者发送的字节序列,其连续的范围称之为"窗口":2. "滑动"则是指这段"允许发送的范围"是可以随着发送的过程而变化的,方式就是按顺序"滑动".在引入一个例子来说这个协议之前,我觉得很有必

CodeForces 279B Books (滑动窗口)

题意:给定n本书的阅读时间,然后你从第 i 本开始阅读,问你最多能看多少本书在给定时间内. 析:就是一个滑动窗口的水题. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream>

UVa 12174 Shuffle (滑动窗口)

题意:你正在使用的音乐播放器有一个所谓的乱序播放功能,即随机打乱歌曲的播放顺序.假设一共有s首歌, 则一开始会给这s首歌随机排序,全部播放完毕后再重新随机排序.继续播放,依次类推.注意,当s首歌播放完毕之前不会重新排序. 这样,播放记录里的每s首歌都是1~s的一个排列.给出一个长度为n的1≤s,n≤100000)的播放记录(不一定是从最开始记录的)xi(1≤xi≤s), 你的任务是统计下次随机排序所发生的时间有多少种有多少种可能性. 例如,s=4,播放记录是3,4,4,1,3,2,1,2,3,4

TCP/IP可靠的原理 滑动窗口 拥塞窗口

TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个"拨打电话"的过程,等到通信准备结束才开始传输数据,最后结束通话.所以TCP要比UDP可靠的多,UDP是把数据直接发出去,而不管对方是不是在收信,就算是UDP无法送达,也不会产生ICMP差错报文,这一经时重申了很多遍了. 把TCP保证可靠性的简单工作原理摘抄如下 应用数据被分割成TCP认为最适合发送的数据块.这和

tcp协议头窗口,滑动窗口,流控制,拥塞控制关系

参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 & 慢启动 快恢复 拥塞避免 http://blog.csdn.net/kinger0/article/details/48206999 TCP window Full http://blog.csdn.net/abccheng/article/details/50503457 名词解释 MTU:maximum transmission unit,最大

TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送.TIME_WAIT状态中所需要的时间是依赖于实现方法的.典型的值为30秒.1分钟和2分钟.等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放. [问题1]为什么连接的时候是三次握手,关闭的时候却是四次

Storm 实现滑动窗口计数和TopN排序

计算top N words的topology, 用于比如trending topics or trending images on Twitter. 实现了滑动窗口计数和TopN排序, 比较有意思, 具体分析一下代码 Topology 这是一个稍微复杂些的topology, 主要体现在使用不同的grouping方式, fieldsGrouping和globalGrouping  String spoutId = "wordGenerator"; String counterId = &

POJ 3320 Jessica&#39;s Reading Problem (滑动窗口)

题意:给定一个序列,求一个最短区间,使得这个区间包含所有的种类数. 析:最近刚做了几个滑动窗口的题,这个很明显也是,肯定不能暴力啊,时间承受不了啊,所以 我们使用滑动窗口来解决,要算出所有的种数,我用set来计算的,当然也可以用别的, 由于要记录种类数,所以使用map来记录,删除和查找方便,说到这,这不就是水题了么. 代码如下: #include <iostream> #include <cstdio> #include <algorithm> #include <

滑动窗口的最大值(STL的应用+剑指offer)

滑动窗口的最大值 参与人数:767时间限制:1秒空间限制:32768K 通过比例:21.61% 最佳记录:0 ms|8552K(来自 ) 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}: 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1