在将它们投入RNN之前,我应该将其功能标准化吗?

时间:2017-04-18 08:46:17

标签: 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  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

我的问题是,正在预处理数据,比如我的情况下必须使用标准的StandardScaler吗?为什么?

(欢迎您编辑我的问题)

3 个答案:

答案 0 :(得分:9)

规范化您的训练数据将是有益的。具有不同功能的不同功能将输入到您的模型中将导致网络对功能进行不均衡的加权。这可能导致某些特征错误地优先于表示中的其他特征。

尽管有关数据预处理的整个讨论对于何时需要以及如何正确地标准化每个给定模型和应用程序域的数据存在争议,但机器学习中存在一个普遍的共识,即运行平均减法以及一般的规范化预处理步骤很有帮助。

平均减法的情况下,从数据中减去每个单独特征的平均值,可以将其解释为从几何角度围绕原点居中数据。每个维度都是如此。

在平均减法步骤之后

归一化数据导致数据维度的归一化到大致相同的比例。请注意,如上所述,在此步骤之后,不同的功能将失去彼此之间的任何优先级。如果您有充分的理由认为功能中的不同比例具有网络可能需要真正了解数据集中的基础模式的重要信息,那么规范化将是有害的。标准方法是将输入缩放为均值为0 方差为1

进一步的预处理操作可能对特定情况有帮助,例如对您的数据执行 PCA 美白。查看CS231n (Setting up the data and the model)的精彩笔记,以便进一步参考这些主题,以及更详细地阐述上述主题。

答案 1 :(得分:1)

我找到了https://arxiv.org/abs/1510.01378 如果你进行标准化,它可以提高收敛性,从而缩短训练时间。

答案 2 :(得分:1)

绝对是的。大多数神经网络最适用于0-1或-1到1的数据(取决于输出函数)。此外,当某些输入更高时,其他网络将“认为”它们更重要。这可以使学习时间很长。网络必须首先降低此输入中的权重。