深度学习初学者指南
上QQ阅读APP看书,第一时间看更新

3.4 改变数据的分布

目前已经证明了改变目标数据的分布,特别是对于回归的情形,可以对学习算法性能的提升有积极的帮助(Andrews,D.F.,et al.,1971)。

我们将在这里讨论一个特别有用的变换,名为分位数变换。这种方法的目的是观察数据,并对其进行适当的操作,使其直方图要么服从正态分布,要么服从均匀分布。可以通过对分位数的估算来实现这个效果。

我们可以使用下面的命令来变换上一节中的相同数据:

这将有效地将数据映射到一个新的分布,即正态分布。

在这里,术语正态分布指的是一个类似高斯分布的概率密度函数(PDF)。这是任何统计教科书中都能找到的经典分布。从图形上看,正态分布就像一个钟形。

注意,我们还使用了fit_transform()方法,它同时执行fit()和transform(),这很方便。

从图3.5可以看出,与胆固醇数据相关的变量很容易被转化为钟形的正态分布。然而,对于,由于数据大量存在于某个特定的区域,导致分布虽然呈钟形,但是带有长尾,这种情况并不理想。

图3.5 正常转换的列x5和x10的散点图及其类高斯直方图

将数据转换成均匀分布与上述过程非常相似,只需要在QuantileTransformer()构造函数的一行中做一个小的更改,具体如下:

现在数据转换成均匀分布,如图3.6所示。

从图中我们可以看到,每个变量的数据已经服从均匀分布。再次说明,数据在特定区域的聚集,会导致数值大量集中在同一个空间中,这是不理想的。这项工作还在数据分布中创建了一个通常难以处理的缺口,除非使用一些技术实现对数据的增强,我们将在下一节中讨论这个问题。

图3.6 均匀变换列x5和x10的散点图及其均匀分布直方图