为预测任务打乱时间序列数据是否有效?

数据挖掘 时间序列 预测建模 线性回归
2021-09-14 11:40:44

我有一个时间序列数据集,记录了一些参与者的可穿戴传感器的日常特征和他们的日常情绪状态。

目标是使用一天的日常特征,并通过线性回归等机器学习模型预测参与者第二天的情绪状态。

我认为交叉验证可能是我评估性能的好方法。但是,随机改组数据可以吗?

有人告诉我,因为我使用的是时间序列数据集并且我正在尝试执行预测任务,所以随机打乱数据会导致未来和过去的一些混淆,这使得我的模型毫无意义。但是,我认为我仍然可以使用随机打乱数据集的策略,因为学习模型不是时间序列模型,并且对于每一步,模型只从一个标签值而不是一系列标签中学习。

2个回答

这取决于您如何制定问题。

假设您有一个时间序列的测量值X,并试图预测Y未来的一些衍生值序列(情绪):

X = [x0, x1, x2,.....]
Y = [y0, y1, y2,.....]

现在,如果您的模型没有记忆,也就是说,它只是映射xN -> yN,那么模型并不关心它看到的顺序x和顺序y。前馈神经网络、线性回归器等是无记忆模型。

但是,如果您的模型有记忆,也就是说,它将一系列特征映射到下一天的心情xN-2, xN-1, XN... -> yN-2, yN-1, yN...,那么排序很重要。这里的模型正在跟踪它以前看到的内容。模型的内部参数随着它看到的每个新示例而变化并持续存在。当前预测取决于上次预测。循环神经网络有记忆,所以顺序很重要。

您可以通过重组数据集来解决内存需求。您可以连接连续的特征并立即将它们映射到第二天的情绪(xN-2, xN-1, xN) -> yN这样,您的输入特征将包含有关过去的信息,但模型不会关心顺序,因为所有时间信息都编码在新特征中,而不是模型中。您的新数据集将如下所示:

Xnew = [(x0, x1, x2), (x1, x2, x3), (x2, x3, x4),...]
Y    = [         y2,           y3,           y4,...]

你说你使用线性回归。这里有两种可能性: 控制有和没有 y 的“滞后”的时间特征(另见 hazrmard 的答案)。

如果是一个人的“情绪”,你可以假设今天的情绪(除其他外)还取决于昨天的情绪。所以我认为以某种方式添加(或测试)滞后y = b0 + b1X + b2y(t-1)可能是有用的。

在这种情况下,我不会随机打乱数据,因为时间序列也与模型训练和测试相关。