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


16

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

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

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

有人可以用简单的英文给我解释为什么您首先在Iris数据集的前四列上使用log函数。我知道它与使数据相对有关,但对日志,中心和刻度的确切功能感到困惑。

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

数据是物理测量,因此合理的初始策略是按对数比例工作。贯穿整个过程。


Answers:


19

虹膜数据集是学习PCA的一个很好的例子。就是说,描述萼片和花瓣的长度和宽度的前四列不是强烈偏斜数据的示例。因此,对数转换数据不会太大改变结果,因为通过对数转换,主成分的最终旋转几乎没有变化。

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

我们执行PCA是为了深入了解数据集的一般结构。我们将居中,缩放和对数转换(有时是对数转换)过滤掉一些琐碎的效果,这些效果可能会主导我们的PCA。PCA的算法将依次查找每个PC的旋转,以最小化残差平方,即从任何样本到PC的垂直距离平方的总和。大价值往往具有很高的杠杆作用。

想象将两个新样本注入虹膜数据。一朵花,花瓣长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)

在此处输入图片说明


2
不错的演示和情节。
shadowtalker,2015年

3

好吧,另一个答案给出了一个示例,该示例使用对数转换来减少极值或离群值的影响。
当您尝试分析由乘法而不是加法构成的数据时,会出现另一个普遍的论点-PCA和FA模型通过其数学运算(例如加法组成)进行分析。乘性在最简单的情况下,成分会在物理数据(如表面和物体的体积)中发生(功能上),这取决于(例如)长度,宽度,深度三个参数。可以重现早期PCA的一个历史性例子的构成,我认为它被称为“瑟斯通的Ball-(或'Cubes'-)问题”等。一旦我处理了该示例的数据,并发现对数转换后的数据为使用三个一维度量的体积和表面数据组成提供了一个更好,更清晰的模型。

除了这些简单的示例,如果我们在社会研究中考虑数据交互,那么我们通常会认为它们以及对更多基本项目的乘积构成度量。因此,如果我们专门研究交互,对数转换可能是获取分解数学模型的一种特殊有用工具。


您能否列出一些参考文献,以更好地解释“乘法”构成?非常感谢!
Amatya

1
@Amatya-我没有找到“ thurstone-box-problem”,而是一个(德语)关于立方体的现场讨论pca,其中包含宽度,长度,高度作为基本项目,表面和体积作为乘积组合的其他项目。也许包含的定义公式就足够了。参见sgipt.org/wisms/fa/Quader/q00.htm
Gottfried Helms,

1
啊,我忘了-我关于这个的古老讨论go.helms-net.de/stat/fa/SGIPT_Quader.htm
Gottfried Helms,

@GottfriedHelms我仍然不太真正理解为什么要标准化变量,还需要对它们进行对数转换。我了解减少极端离群值的有害影响的一般原理,但是如果我们已经对其进行了标准化(居中,缩放),则似乎对其进行对数转换实际上会使数据失真。
Yu Chen

@ YuChen-任何对数转换都会将乘积组成转换为加法组成,而加法组成是所有类型的组件和因子分析的基本假设(除了线性等)。因此,如果您的数据中包含乘法运算,则应该考虑对数转换。
Gottfried Helms
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.