2

我开始开发一些 LSTM 模型,现在有一些关于标准化的问题。

假设我有一些时间序列数据,大致介于 +500 和 -500 之间。将数据从 -1 缩放到 1 是否更现实,或者 0 到 1 是更好的方法,我对其进行了测试,0 到 1 似乎更快。有错误的方法吗?还是只是学起来比较慢?

第二个问题:我什么时候对数据进行规范化?我将数据分为训练数据和测试数据,我是否必须分别缩放/规范化这些数据?也许训练数据的范围仅在 +300 到 -200 之间,而测试数据的范围在 +600 到 -100 之间。我猜那不是很好。

但另一方面......如果我对整个数据帧进行缩放/规范化并在此之后对其进行拆分,则数据可以很好地用于训练和测试,但是如何处理真正的新传入数据?该模型被训练为缩放数据,所以我也必须缩放新数据,对吗?但是如果新数据是 1000 呢?归一化会将其变成大于 1 的值,因为它的数字比之前的所有数字都大。

长话短说,我什么时候对数据进行规范化以及全新的数据会发生什么?

我希望我能弄清楚我的问题是什么:D

非常感谢!

4

1 回答 1

2

想知道如何处理现实以及tbh ...

严肃地说:

1.如何规范化数据

通常,神经网络受益于来自高斯标准分布(均值0和方差1)的数据。

批量标准化(简化)等技术有助于神经网络在整个网络中具有这种特性,因此通常是有益的。

您提到的还有其他方法,可以可靠地告诉您只需检查和测量哪些问题和指定架构的帮助。

2. 测试数据呢?

应该从您的训练数据集中收集除以每个实例的平均值和方差(或您通过前面提到的任何归一化方案收集的任何其他统计数据)。如果您从测试中获取它们,您将执行数据泄漏(有关测试分布的信息被合并到训练中)并且您可能会产生错误的印象,您的算法比实际执行得更好。

因此,只需计算训练数据集的统计数据,并将它们也用于传入/验证/测试数据。

于 2019-09-24T08:46:15.020 回答