全文链接:http://tecdat.cn/?p=22251  

归一化数据是数据迷信中的一项常见工作。有时它能够让咱们放慢梯度降落的速度或进步模型的准确性,在某些状况下,它相对是至关重要的。

一些归一化技术,如取对数,在大多数状况下可能无效,但在这种状况下,我决定尝试对任何数据都无效的办法,不论它最后是如何散布的。我上面要介绍的办法是基于逆变换抽样:次要思维是依据数据的统计个性,结构这样的函数F,所以F(x)是正态分布。上面是如何做的。

我所说的算法是基于逆变换抽样法。这种办法被宽泛用于伪随机数生成器,从任何给定的散布中生成数字。有了均匀分布的数据,你总是能够把它转化为散布,有任何给定的累积密度函数(或简称CDF)。CDF显示了散布的数据点中有多大比例小于给定值,基本上示意了散布的所有统计个性。

具备零平均数和单位方差的正态分布的CDF。它显示,简直所有的点都大于-4,小于4,其中50%的点小于0

其次要思维是,对于任何间断散布的数据x,CDF(x)是均匀分布的。换句话说,要想得到均匀分布的数据,只需取每个点的CDF。这句话的数学证实超出了本文的范畴,然而上述操作实质上只是对所有数值进行排序,并将每个数值替换为其数字,这给了它一个直观的感觉。

将一些凌乱的数据转化为对立的数据

在下面的图中,你能够看到它是如何工作的。我生成了一些凌乱的散布数据,而后计算了它的CDF(红线),并用它转换了数据。当初数据是均匀分布的。

计算CDF比它看起来更容易。记住,CDF是比给定数据小的一部分。

一般来说,CDF是一个双射函数,这意味着转换是可逆的。咱们能够利用这一事实将失去的均匀分布转化为咱们想要的任何散布,例如正态分布。为了做到这一点,咱们须要计算咱们想得到的散布的反CDF。一般来说,这不是最简略的工作。咱们须要的函数被称为百分点函数,简称PPF。侥幸的是,任何次要散布的PPF都能够通过SciPy库取得,人们不须要本人去计算它。

具备零平均数和单位方差的正态分布的PPF。它显示第50个百分位数是0,超过60%的点位于-1和1之间。

上面是对它的解释:对于0和1之间的任何参数x,PPF返回点适宜x'th百分位的最大值。同时,作为CDF的反函数,它看起来像第一张图片中的函数,只是旋转了90°。

从均匀分布中取得正态分布

当初咱们有了一个丑陋的正态分布,如愿以偿。最初,要做一个函数来转换咱们的初始数据,咱们所要做的就是把这两个操作合并到一个函数中。

将初始芜杂的散布转化为均值为零、方差为单位的正态分布

上图中的红线代表最终的变换函数。

请留神,最初的变换总是枯燥的。这意味着没有两个点在转换后被调换。如果一个点的初始特征值大于另一个点的初始特征值,在转换之后,转换后的值对该点来说也会更大。这一事实使得该算法能够利用于数据迷信工作。

总而言之,与更常见的办法不同,本文形容的算法不须要对初始散布进行任何假如。同时,输入的数据极其准确地遵循正态分布。这种办法已被证实能够进步模型的准确性,这些模型假设输出数据分布。