最适合处理偏态特征的标准化/变换方法?

我在尝试预处理生物数据以训练神经网络,尽管我已经广泛搜索并反复了解了各种标准化方法,但仍然无法确定在何种情况下应该使用哪种方法。特别是,我有许多输入变量呈现正偏态,我一直在尝试确定是否有最适合的标准化方法。

我还担心这些输入的性质是否会影响网络的性能,因此我尝试了数据变换(特别是 logarithm 变换)。然而,一些输入包含许多零值,同时也可能是很小的十进制值,似乎对 log(x + 1)(或从1到0.0000001的任何数字)变换非常敏感,结果分布未能接近正态分布(仍然偏态或变成双峰分布,具有在最小值处的尖锐峰值)。

这些对神经网络来说是否相关?即,我是否应该使用特定的特征变换/标准化方法来处理偏态数据,还是应该忽略它,选择一种标准化方法并继续前进?

对此事宜的任何建议将不胜感激!

谢谢!


回答:

由于你的输入向量中的特征性质各不相同,你应该为每个特征使用不同的标准化算法。网络应该在每个输入上接收统一的数据以获得更好的性能。

正如你所述,有些数据是偏态的,我认为你可以运行一些算法来“标准化”它。如果应用对数变换不起作用,或许可以尝试其他函数和方法,例如秩变换

如果小十进制值完全出现在某个特定特征中,那么只需以特定方式对其进行标准化,使它们转换到你的工作范围内:我认为是 [0, 1] 或 [-1, +1]。

如果一些输入包含许多零值,可以考虑从主神经网络中移除它们,并创建一个额外的神经网络,该网络将处理非零特征的向量。或者,你可以尝试运行主成分分析(例如,通过结构为 N-M-N 的自关联记忆网络,M < N)来减少输入空间维度,从而消除零值成分(它们实际上会在新的组合输入中以某种方式被考虑)。顺便说一下,新的 M 个输入将自动被标准化。然后你可以将新的向量传递给你的实际工作神经网络。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注