假设我有一个维数据集,其中维大致正交(相关性为零)。
在以下方面是否有任何效用:
- 可视化
- 表示(用于分类器效率)
- 或其他标准
对数据执行降维?
假设我有一个维数据集,其中维大致正交(相关性为零)。
在以下方面是否有任何效用:
对数据执行降维?
我想澄清我在@Peter-Flom 的回答下留下的评论,但可能值得写在答案中。通过对近正交数据运行 PCA,您可以在多大程度上减少维度?答案是“这取决于”您是对相关矩阵还是协方差矩阵执行 PCA。
如果您在相关矩阵上使用 PCA,那么由于这与单位矩阵仅略有不同,因此存在球对称性,它使所有方向都“具有相同的信息量”。将变量的方差重新调整为 PCA 之前的方差是一种数学上等效的方法,它会产生相同的结果。虽然 PCA 输出将识别出一些方差比其他分量略低的分量,但这可以归因于(如果我们假设总体中的相关性为零)只不过是样本中的偶然变化,因此不是抛弃这些的好理由组件。事实上,当我们增加样本量时,组件标准偏差之间的这种差异应该会减少。我们可以在模拟中确认这一点。
set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
x1 <- rnorm(n, mean=0, sd=sd1)
x2 <- rnorm(n, mean=0, sd=sd2)
x3 <- rnorm(n, mean=0, sd=sd3)
x4 <- rnorm(n, mean=0, sd=sd4)
prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}
输出:
> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion 0.2882 0.5505 0.7887 1.0000
>
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion 0.2504 0.5006 0.7505 1.0000
但是,如果您使用协方差矩阵而不是相关矩阵进行 PCA(等效地:如果我们在应用 PCA 之前不将标准差缩放为 1),那么答案取决于变量的分布。如果您的变量具有相同的方差,那么我们仍然具有球对称性,因此没有“特权方向”并且无法实现降维。
> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion 0.2507 0.5009 0.7508 1.0000
然而,在混合了高方差和低方差变量的情况下,对称性更像是一个具有一些宽轴和一些细轴的椭球体。在这种情况下,高方差变量(椭圆体较宽)上将加载高方差分量,而低方差变量(椭圆体在其方向较窄)上将加载低方差分量。
> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion 0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.460 0.888 0.000 0.000
x2 -0.888 0.460 0.000 0.000
x3 0.000 0.000 -0.747 -0.664
x4 0.000 0.000 0.664 -0.747
如果变量具有非常不同的方差(几何上又是一个椭圆体,但所有轴都不同),那么正交性允许第一台 PC 非常重地加载最高方差变量,依此类推。
> pc1234 <- princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion 0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.000 0.000 -0.001 1.000
x2 0.001 -0.001 1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000 0.003 -0.001 0.000
在最后两种情况下,您可能会考虑丢弃低方差分量以实现降维,但这样做完全等同于首先丢弃最低方差变量。本质上,正交性允许您识别具有低方差变量的低方差分量,因此如果您打算以这种方式降低维度,则不清楚使用 PCA 这样做是否会受益。
注意事项:讨论变量未重新调整为单位方差的情况(即使用协方差而不是相关矩阵)的时间长度不应被视为这种方法更重要的指示,当然也不是更好”。这种情况的对称性更加微妙,因此需要更长的讨论时间。
如果所有 N 个变量都是大致正交的,那么降维将做相对较小的降维。例如在R
set.seed(123)
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
x4 <- rnorm(100)
x5 <- rnorm(100)
x6 <- rnorm(100)
x7 <- rnorm(100)
x8 <- rnorm(100)
x9 <- rnorm(100)
x10 <- rnorm(100)
df1 <- cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)
pcsol <- princomp(df1)
loadings(pcsol)
本质上,“正交”意味着“已经是最小尺寸”。