问答交流

一个深度学习时序数据划分的问题

由bqq7x7pv创建,最终由bqq7x7pv 被浏览 1 用户

整体的数据集依然采用滚动训练的方法划分不同时间的训练和测试数据,接下来提到的时序数据窗口划分会对每一个滚动训练的数据进行。

1、在深度学习的时间序列中一般采用时间窗口的方式抓取数据,比如15天的数据预测下一天的标签。我现在有的一个问题是,我的数据集是每一支股票按照时间序列进行排序的,比如是2020-2022年的stock_1的数据然后接下来是2020-2022年的stock_2的数据····。对于训练数据的时间窗口的抓取是进行了shuffle的,随机确定时间的起始值。这种情况下,有可能会抓取到不同的两只股票的数据,而且这个数据是在时序上不连续的(比如现在的这个时间窗口的开始点是stock_1这个股票的倒数第五天,假设是一个15天的时间窗口,那么这里面的数据就会包括stock_1倒数5天的数据,和stock_2前10天的数据),这样对模型的训练是否有问题?

2、避免我没说清楚我再描述一下,假设现在的时间窗口大小是15天,特征有10个,一个batch的size是32, 那么X的shape=(32, 15, 10),y则是第16天股票的价格或者涨跌(0 | 1),y的shape=(32,)。每一个样本的shape=(15,10),对应一个标量。这就是我的训练的数据集。

3、然后我的时间窗口的函数是一个生成器,每一个训练的epoch中设置step_of_one_epoch=100,即个epoch中会生成出100个batch给模型进行参数更新,每一个batch里有32个样本。

4、验证集的时间窗口的设置和训练集一样,只是不再进行shuffle

5、测试集的数据抓取不太一样,测试集的数据是对每一支股票抓取15天的窗口数据,预测下一天的标签值。假设有100支股票,就有100个15天的窗口数据(100, 15, 14),然后输出的perdition就是一个vector,shape=(100,),然后把这个vector给到对应的股票,作为预测值。这样就得到了回测的数据(前15天没有预测值)。然后进行交易。

我主要的问题还是集中在数据集那个时间窗口获取数据方面,请老师和大佬有空解答一下,谢谢!

标签

深度学习
{link}