如何标准化神经网络和决策森林的数据

数据挖掘 神经网络 决策树 正常化
2021-09-19 02:58:45

我有一个包含 20000 个样本的数据集,每个样本有 12 个不同的特征。每个样本都属于 0 类或 1 类。我想训练一个神经网络和一个决策森林来对样本进行分类,以便我可以比较结果和两种技术。

我偶然发现的第一件事是数据的正确标准化。一项功能在范围内[0,106],另一个在[30,40]并且有一个特征主要取值 8,有时取值为 7。因此,当我在不同的来源中阅读时,输入数据的正确归一化对于神经网络至关重要。正如我发现的那样,有很多可能的方法来规范化数据,例如:

  1. Min-Max Normalization:输入范围线性变换为区间[0,1](或者[1,1],有关系吗?)
  2. Z-Score Normalization:数据被转换为具有零均值和单位方差:
    ynew=yoldmeanVar

我应该选择哪种归一化?决策森林也需要标准化吗?通过 Z-Score 归一化,我的测试数据的不同特征不在同一范围内。这会是个问题吗?是否应该使用相同的算法对每个特征进行归一化,以便我决定对所有特征使用 Min-Max 或对所有特征使用 Z-Score?

是否存在数据映射到的组合[1,1]并且均值为零(这意味着数据的非线性变换,因此输入数据的方差和其他特征发生变化)。

我感到有点失落,因为我找不到回答这些问题的参考资料。

2个回答

我不同意其他评论。

首先,我认为没有必要为决策树规范化数据。决策树通过为每个不同的数据划分计算分数(通常是熵)来工作(Xxi,X>xi). 对不改变数据顺序的数据应用转换没有区别。

随机森林只是一堆决策树,所以它不会改变这个基本原理。

神经网络是另一回事。首先,就预测而言,它没有区别。神经网络可以很容易地对抗你的归一化,因为它只是缩放权重并改变偏差。最大的问题在于训练。

如果你使用像弹性反向传播这样的算法来估计神经网络的权重,那么它没有区别。原因是因为它使用梯度的符号,而不是它的大小,当在最小化误差的方向上改变权重时。neuralnet顺便说一下,这是 R 中包的默认算法。

什么时候会有所作为?当您使用带有 sigmoid 激活函数的传统反向传播时,它可能会使 sigmoid 导数饱和。

考虑 sigmoid 函数(绿色)及其导数(蓝色):

乙状结肠

如果你不规范化你的数据会发生什么是你的数据乘以随机权重,你会得到类似的东西 s(9999)=0. sigmoid 的导数(大约)为零,并且训练过程不会继续进行。你最终得到的神经网络只是一个具有随机权重的神经网络(没有训练)。

这是否有助于我们了解最好的归一化函数是什么?但是当然!首先,使用以数据为中心的归一化至关重要,因为大多数实现将偏差初始化为零。我会在 -0.5 和 0.5 之间标准化,XminXmaxXminX0.5. 标准分数也不错。

实际的归一化不是很关键,因为它只影响优化过程的初始迭代。只要它居中并且您的大部分数据都低于 1,那么这可能意味着您必须使用稍微更少或更多的迭代来获得相同的结果。但结果是一样的,只要你避免我提到的饱和问题。

这里没有讨论的东西是正则化如果您在目标函数中使用正则化,则标准化数据的方式影响生成的模型。我假设您已经对此很熟悉了。如果您知道一个变量更容易导致过度拟合,那么您对数据的规范化应该考虑到这一点。这当然完全独立于所使用的神经网络。

  1. 没有明确的答案我建议使用不同的方法扩展您的数据,然后使用相同的模型来预测您的保留集的结果(RF 在这里可以正常工作)。这至少应该向您展示哪种缩放方法最适合您的预测问题。
  2. 您无需为随机森林扩展数据
  3. 只要从一开始就一直按比例缩放,各个范围就不应该成为问题。这只是说明变量之间存在差异,只是比以前更紧凑。
  4. 的 - 您的所有数据都应该使用相同的方法进行缩放。否则,转换后的数据集中的值可能与数据本身无关,而是与用于缩放的算法有关。

希望这会有所帮助。