为什么在执行主成分分析之前对数据进行对数转换?

机器算法验证 r 主成分分析 数据转换 对数
2022-01-29 16:51:16

我在这里学习教程:http ://www.r-bloggers.com/computing-and-visualizing-pca-in-r/以更好地了解 PCA。

本教程使用 Iris 数据集并在 PCA 之前应用对数变换:

请注意,在以下代码中,我们按照 [1] 的建议对连续变量应用对数变换,并在调用中设置centerscale等于以在应用 PCA 之前对变量进行标准化。TRUEprcomp

有人可以用简单的英语向我解释为什么您首先在 Iris 数据集的前四列上使用 log 函数。我知道这与使数据相关,但我很困惑日志、中心和比例的功能到底是什么。

上面的参考文献 [1] 是Venables 和 Ripley,Modern Applied Statistics with S-PLUS,第 11.1 节简要说明:

这些数据是物理测量值,所以一个合理的初始策略是在对数尺度上工作。自始至终都这样做了。

2个回答

iris 数据集是学习 PCA 的一个很好的例子。也就是说,描述萼片和花瓣的长度和宽度的前四列并不是严重倾斜数据的示例。因此,对数据进行对数转换不会对结果产生太大影响,因为对数转换导致的主成分旋转几乎没有改变。

在其他情况下,对数转换是一个不错的选择。

我们执行 PCA 以深入了解数据集的一般结构。我们居中、缩放,有时还进行对数变换,以过滤掉一些可能支配我们的 PCA 的琐碎影响。PCA 的算法将依次找到每个 PC 的旋转以最小化残差平方,即从任何样本到 PC 的垂直距离平方和。大值往往具有高杠杆率。

想象一下将两个新样本注入到 iris 数据中。一朵花瓣长度为 430 厘米的花和一朵花瓣长度为 0.0043 厘米的花。两种花都非常异常,分别比平均示例大 100 倍和小 1000 倍。第一朵花的影响力是巨大的,以至于第一朵PC大多会描述大花与其他花的区别。由于那个异常值,物种的聚类是不可能的。如果数据经过对数转换,则绝对值现在描述了相对变化。现在小花是最不正常的。尽管如此,可以在一张图像中包含所有样本并提供物种的公平聚类。看看这个例子:

data(iris) #get data
#add two new observations from two new species to iris data
levels(iris[,5]) = c(levels(iris[,5]),"setosa_gigantica","virginica_brevis")
iris[151,] = list(6,3,  430  ,1.5,"setosa_gigantica") # a big flower
iris[152,] = list(6,3,.0043,1.5  ,"virginica_brevis") # a small flower

#Plotting scores of PC1 and PC" without log transformation
plot(prcomp(iris[,-5],cen=T,sca=T)$x[,1:2],col=iris$Spec)

在此处输入图像描述

#Plotting scores of PC1 and PC2 with log transformation
plot(prcomp(log(iris[,-5]),cen=T,sca=T)$x[,1:2],col=iris$Spec)

在此处输入图像描述

好吧,另一个答案举了一个例子,当使用对数变换来减少极值或异常值的影响时。
当您尝试分析由乘法组合而不是加法组合的数据时,会出现另一个普遍论点- PCA 和 FA 模型通过它们的数学这样的加法组合。乘法组成出现在最简单的物理数据中,例如表面和物体的体积(功能上)取决于(例如)三个参数长度、宽度、深度。可以重现早期 PCA 的一个历史例子的组成,我认为它被称为“瑟斯通的球-(或“立方体”-)问题”之类的。一旦我使用了该示例的数据并发现对数转换的数据为测量的体积和表面数据与三个一维测量的组合提供了一个更好、更清晰的模型。

除了这些简单的例子,如果我们在社会研究中考虑数据交互,那么我们通常认为它们以及更多基本项目的乘法组合测量。因此,如果我们专门研究交互作用,对数变换可能是一种特别有用的工具,可以得到分解的数学模型。