逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法

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

归一化数据是数据科学中的一项常见任务。有时它可以让我们加快梯度下降的速度或提高模型的准确性,在某些情况下,它绝对是至关重要的。

一些归一化技术,如取对数,在大多数情况下可能有效,但在这种情况下,我决定尝试对任何数据都有效的方法,不管它最初是如何分布的。我下面要介绍的方法是基于逆变换抽样:主要思想是根据数据的统计特性,构造这样的函数F,所以F(x)是正态分布。下面是如何做的。

逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法_第1张图片

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

逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法_第2张图片

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

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

逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法_第3张图片

将一些混乱的数据转化为统一的数据

在上面的图中,你可以看到它是如何工作的。我生成了一些混乱的分布数据,然后计算了它的CDF(红线),并用它转换了数据。现在数据是均匀分布的。

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

一般来说,CDF是一个双射函数,这意味着转换是可逆的。我们可以利用这一事实将得到的均匀分布转化为我们想要的任何分布,例如正态分布。为了做到这一点,我们需要计算我们想得到的分布的反CDF。一般来说,这不是最简单的任务。我们需要的函数被称为百分点函数,简称PPF。幸运的是,任何主要分布的PPF都可以通过SciPy库获得,人们不需要自己去计算它。

逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法_第4张图片

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

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

逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法_第5张图片

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

现在我们有了一个漂亮的正态分布,如愿以偿。最后,要做一个函数来转换我们的初始数据,我们所要做的就是把这两个操作合并到一个函数中。

逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法_第6张图片

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

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

请注意,最后的变换总是单调的。这意味着没有两个点在转换后被调换。如果一个点的初始特征值大于另一个点的初始特征值,在转换之后,转换后的值对该点来说也会更大。这一事实使得该算法可以应用于数据科学任务。

总而言之,与更常见的方法不同,本文描述的算法不需要对初始分布进行任何假设。同时,输出的数据极其精确地遵循正态分布。这种方法已被证明可以提高模型的准确性,这些模型假定输入数据分布。

你可能感兴趣的:(逆变换抽样将数据标准化和R语言结构化转换:BOX-COX、凸规则变换方法)