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

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

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

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

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

谢谢!


回答:

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

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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