Machine learning 我应该在将功能放入RNN之前对其进行规范化吗?

Machine learning 我应该在将功能放入RNN之前对其进行规范化吗?,machine-learning,neural-network,deep-learning,recurrent-neural-network,Machine Learning,Neural Network,Deep Learning,Recurrent Neural Network,我正在播放一些关于递归神经网络的演示 我注意到我的数据在每一列中的比例都有很大的不同。因此,我正在考虑在将数据批放入RNN之前做一些预处理工作。结束栏是我希望在未来预测的目标 open high low volume price_change p_change ma5 ma10 \ 0 20.64 20.64 20.37 163623.62 -0.08 -0.39 20.772 20.721 1 20.92

我正在播放一些关于递归神经网络的演示

我注意到我的数据在每一列中的比例都有很大的不同。因此,我正在考虑在将数据批放入RNN之前做一些预处理工作。结束栏是我希望在未来预测的目标

     open   high    low     volume  price_change  p_change     ma5    ma10  \
0  20.64  20.64  20.37  163623.62         -0.08     -0.39  20.772  20.721
1  20.92  20.92  20.60  218505.95         -0.30     -1.43  20.780  20.718
2  21.00  21.15  20.72  269101.41         -0.08     -0.38  20.812  20.755
3  20.70  21.57  20.70  645855.38          0.32      1.55  20.782  20.788
4  20.60  20.70  20.20  458860.16          0.10      0.48  20.694  20.806

     ma20      v_ma5     v_ma10     v_ma20  close
0  20.954  351189.30  388345.91  394078.37  20.56
1  20.990  373384.46  403747.59  411728.38  20.64
2  21.022  392464.55  405000.55  426124.42  20.94
3  21.054  445386.85  403945.59  473166.37  21.02
4  21.038  486615.13  378825.52  461835.35  20.70
我的问题是,在我的案例中,是否有必要使用sklearn中的StandardScaler对数据进行预处理?为什么

(欢迎您编辑我的问题)

我找到了这个
如果您将其正常化,可能会提高收敛性,从而减少训练时间。

肯定是的。大多数神经网络在数据为0-1或-1:1时工作得最好(取决于输出函数)。此外,当一些输入高于其他输入时,网络会“认为”它们更重要。这可以让学习变得很长。网络必须首先在此输入中降低权重。

这将有助于规范化您的训练数据。将不同比例的不同功能馈送到您的模型将导致网络对这些功能的权重不相等。这可能导致表示中某些功能的优先级错误地高于其他功能

尽管关于数据预处理的整个讨论在何时确实需要以及如何正确规范化每个给定模型和应用领域的数据方面存在争议,但机器学习中的普遍共识是,运行平均减法以及常规规范化预处理步骤很有用

平均值减法的情况下,从数据中减去每个特征的平均值,可以从几何角度解释为数据围绕原点居中。这对每个维度都是正确的

对均值减法步骤后的数据进行归一化将导致数据维度归一化到大致相同的尺度。请注意,如上所述,在此步骤之后,不同的功能将失去任何优先顺序。如果您有充分的理由认为功能中的不同比例包含网络可能需要的重要信息,以真正了解数据集中的底层模式,那么规范化将是有害的。标准方法是将输入的平均值调整为0方差调整为1


在特定情况下,进一步的预处理操作可能会有所帮助,例如对数据执行PCA美白。请查看的精彩笔记,以进一步了解这些主题以及对上述主题的更详细解释。

谢谢,我会看一看。我试过使用列[open high low](它们的比例相似)作为我的功能并训练RNN,结果看起来不错。但许多其他技术需要规范化,这就是我在这里提出问题的原因DD TY始终需要对输入和输出数据进行规范化,以提高收敛性,不这样做可能会导致学习失败。@MatiasValdenegro我应该在X_列和y_列上都进行规范化吗?是的,这些是您的输入和输出数据,对吗?@MatiasValdenegro是的。我有一个包含所有数据的大数据框(问题描述),经过一些处理后,我将其分为X_列、y_列、X_测试、y_测试。我应该在拆分它们之前还是之后执行规范化?