@ Peter-Flom'un cevabı altında bıraktığım bir yorumu açıklığa kavuşturmak istedim ama muhtemelen bir cevapta yazmaya değer. Neredeyse dikey verilerde PCA çalıştırarak boyutları ne ölçüde azaltabilirsiniz? Cevap, PCA'yı korelasyon veya kovaryans matrisi üzerinde gerçekleştirip gerçekleştirmediğinize bağlıdır .
Korelasyon matrisinde PCA kullanıyorsanız, bu sadece kimlik matrisinden biraz farklı olacağından, tüm yönleri "eşit derecede bilgilendirici" hale getiren küresel bir simetri vardır. Değişkenlerinizin varyanslarını PCA öncesi bire yeniden ölçeklendirmek, aynı sonucu üretecek matematiksel olarak eşdeğer bir yaklaşımdır. PCA çıktısı, diğerlerinden biraz daha düşük varyansa sahip bazı bileşenleri tanımlasa da, bu (popülasyonda sıfır korelasyon varsayarsak), örnekteki şans varyasyonundan başka bir şeye atfedilebilir, bu nedenle bunları karıştırmak için iyi bir neden olmaz bileşenler. Aslında, bileşenlerin standart sapmaları arasındaki bu eşitsizlik, örneklem boyutunu artırdığımız için büyüklükte azalmalıdır. Bunu bir simülasyonda doğrulayabiliriz.
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)
}
Çıktı:
> 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
Bununla birlikte, korelasyon matrisi yerine kovaryans matrisini kullanarak PCA yaparsanız (eşdeğer olarak: PCA'yı uygulamadan önce standart sapmaları 1'e ölçeklemezsek), cevap değişkenlerinizin yayılmasına bağlıdır. Değişkenleriniz aynı varyansa sahipse, yine de küresel simetriye sahibiz, bu nedenle "ayrıcalıklı yön" yoktur ve boyutsal azalma sağlanamaz.
> 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
Bununla birlikte, yüksek ve düşük varyans değişkenlerinin bir karışımıyla, simetri daha çok bazı geniş eksenlere ve diğerlerinin inceltildiği bir elipsoide benzer. Bu durumda, yüksek varyans değişkenlerine (elipsoidin geniş olduğu yerde) yüklenen yüksek varyans bileşenleri ve düşük varyans değişkenlerine (elipsoidin dar olduğu yönlerde) yüklenen düşük varyans bileşenleri olacaktır.
> 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
Değişkenler çok farklı varyanslara sahipse (geometrik olarak tekrar bir elipsoid ancak tüm eksenler farklıdır), o zaman diklik, ilk PC'nin en yüksek varyans değişkenine çok fazla yüklenmesini sağlar ve bu şekilde devam eder.
> 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
Son iki durumda, boyutsal indirgeme elde etmek için atmayı düşünebileceğiniz düşük varyans bileşenleri vardı, ancak bunu yapmak, ilk etapta en düşük varyans değişkenlerini atmakla tamamen eşdeğerdir . Esas olarak, diklik, düşük varyans değişkenlerine sahip düşük varyans bileşenlerini tanımlamanıza izin verir, bu nedenle boyutsallığı bu şekilde azaltmayı düşünüyorsanız, bunu yapmak için PCA kullanmanın fayda sağlayacağı açık değildir.
Notlar: Değişkenlerin birim varyansına yeniden ölçeklendirilmediği durumu tartışmak için harcanan süre - yani korelasyon matrisi yerine kovaryans kullanmak - bu yaklaşımın bir şekilde daha önemli olduğunu ve kesinlikle bunun bir göstergesi olmadığını göstermemelidir. daha iyi". Durumun simetrisi daha ince ve dolayısıyla daha uzun tartışma gerektiriyor.