如何标准化我的数据(使用 Keras LSTM 进行单变量时间序列预测)?

数据挖掘 喀拉斯 时间序列 lstm 正常化
2022-03-05 03:26:51

X=(X1,....,Xn)单变量时间序列。当我将数据拆分为训练和测试数据时,我想知道如何标准化我的数据。让我解释一下我是如何转变的X这样我就可以拟合 LSTM 神经网络。X我制作了一个新的输入数据及其相应的输出数据。所以,我们有: X=((X1,...,Xm),...,(Xnm,...,Xn1))
Y=(Xm+1,...,Xn)
CardX=CardY
让我们设置p我的测试集的大小。如果我使用 Python 的符号,我们有:
Xtrain=X[:p]
Xtest=X[p:]
同上Y...现在,我想知道如何标准化我的数据。我认为标准化X在将数据拆分为训练集和测试集之前可能会导致过度拟合,因为我们的转换涉及所有Xi. 基本上,我不确定总和(平均值,标准差)会淹没信息。在这种情况下,我认为最好只计算训练集中的均值和标准差,并使用它们来标准化训练集和测试集。对我来说,单独标准化它们是没有意义的,因为CardXtest<<CardXtrain. 但可能是我错了。我也想知道要不要标准化YX要不就X. 当我使用 MLP 神经网络时,我曾经只是对输入数据进行归一化。

所以,首先感谢您的阅读,如果您有任何想法或意见,有任何问题要问,请告诉我。我可以解释更多,这取决于你:)

PS我没有找到“标准化”标签,因此我使用了名为标准化的标签。

1个回答

欢迎卡卡罗托!首先,仅对训练集进行标准化,然后使用统计数据对其他集进行标准化。根据经验,我们应该记住,测试集在训练时不会退出......(尽管我们可以访问它)在训练时,如果网络没有看到我们(人类)做的测试集…

如果测试集选得好,那么整个数据集、训练集和测试集应该来自相同的概率密度函数,如果提供了足够的数据,你从训练集得到的统计数据将接近pdf 的统计数据(假设这些统计数据的估计量无偏,平均值和标准差应该是这种情况)

根据我的经验,只对输入数据进行标准化。对于输出数据,如果我知道边界(它们甚至存在……),我通常会对其进行缩放(最小-最大缩放器)。通常对我有用的另一个有用的技巧是不向网络提供输入数据而不是其相对差异,例如:

X=(0,X1X0,X2X0,,XmX0)