Merkezleme PCA'da nasıl bir fark yaratır (SVD ve öz ayrıştırma için)?


30

PCA için verilerinizi merkezleme (veya anlamdan çıkarma) ne fark eder? Matematiği kolaylaştırdığını ya da ilk bilgisayarın değişkenlerin araçlarına hâkim olmasını engellediğini duydum, ancak henüz kavramı tam olarak kavrayamadığımı hissediyorum.

Örneğin, buradaki en üstteki cevap Verileri merkezlemek regresyon ve PCA'daki engellemeden nasıl kurtulur? Merkezlenmenin ilk PCA'yı nokta bulutunun ana ekseni yerine orijin içinden nasıl çekeceğini açıklar. PC'lerin kovaryans matrisinin özvektörlerinden nasıl elde edildiğine dair anlayışıma dayanarak, bunun neden olacağını anlayamıyorum.

Dahası, merkezlemeli ve merkezsiz olarak yaptığım hesaplamalar çok mantıklı gelmiyor.

R'deki irisveri setindeki setosa çiçeklerini göz önünde bulundurun. Örnek kovaryans matrisinin özvektörlerini ve özdeğerlerini aşağıdaki gibi hesapladım.

data(iris)
df <- iris[iris$Species=='setosa',1:4]
e <- eigen(cov(df))
> e
$values
[1] 0.236455690 0.036918732 0.026796399 0.009033261

$vectors
            [,1]       [,2]       [,3]        [,4]
[1,] -0.66907840  0.5978840  0.4399628 -0.03607712
[2,] -0.73414783 -0.6206734 -0.2746075 -0.01955027
[3,] -0.09654390  0.4900556 -0.8324495 -0.23990129
[4,] -0.06356359  0.1309379 -0.1950675  0.96992969

Önce veri kümesini ortalarsam, aynı sonuçları alırım. Merkezleme, kovaryans matrisini hiç değiştirmediği için bu oldukça açık görünüyor.

df.centered <- scale(df,scale=F,center=T)
e.centered<- eigen(cov(df.centered))
e.centered

prcompHer iki merkezli uncentered veri kümesi için fonksiyon tam olarak bu özdeğer-özvektör kombine sonuçlar, hem de.

p<-prcomp(df)
p.centered <- prcomp(df.centered)
Standard deviations:
[1] 0.48626710 0.19214248 0.16369606 0.09504347

Rotation:
                     PC1        PC2        PC3         PC4
Sepal.Length -0.66907840  0.5978840  0.4399628 -0.03607712
Sepal.Width  -0.73414783 -0.6206734 -0.2746075 -0.01955027
Petal.Length -0.09654390  0.4900556 -0.8324495 -0.23990129
Petal.Width  -0.06356359  0.1309379 -0.1950675  0.96992969

Ancak, prcompişlevin varsayılan seçeneği vardır center = TRUE. Bu seçeneğin devre dışı bırakılması, merkezlenmemiş veriler için aşağıdaki PC'lerle sonuçlanır ( false olarak ayarlandığında p.centeredaynı kalır center):

p.uncentered <- prcomp(df,center=F)
> p.uncentered
Standard deviations:
[1] 6.32674700 0.22455945 0.16369617 0.09766703

Rotation:
                    PC1         PC2        PC3         PC4
Sepal.Length -0.8010073  0.40303704  0.4410167  0.03811461
Sepal.Width  -0.5498408 -0.78739486 -0.2753323 -0.04331888
Petal.Length -0.2334487  0.46456598 -0.8317440 -0.19463332
Petal.Width  -0.0395488  0.04182015 -0.1946750  0.97917752

Bu neden merkezlenmemiş verilerin kovaryans matrisi üzerindeki kendi özvektör hesaplarımdan farklı? Hesaplama ile ilgisi var mı? prcompBilgisayarları hesaplamak için özdeğer ayrışımı yerine SVD yöntemi adı verilen bir şey kullandığını belirtmiştim . İşlev princompikincisini kullanır, ancak sonuçları aynıdır prcomp. Sorunum, bu yazının başında tanımladığım cevapla mı ilgili?

XXX/(n1)


5
Based on my understanding of how the PC's are obtained from the covariance matrix's eigenvectors...Lütfen bağladığınız cevaptaki yorumları okuyun. Kovaryans, verilerin merkezlenmesini, PCA "kovaryanslarda" = PCA'nın merkezlenmiş veri olduğunu belirtir. Orijinal değişkenleri ortalamazsanız X, bu verilere dayanan PCA, X'X/n [or n-1]matristeki = PCA olacaktır . Ayrıca bakınız: Genel bakış: stats.stackexchange.com/a/22520/3277 .
ttnphns

2
through the origin, rather than the main axis of the point cloud. PCA her zaman kökenini deler. Veriler ortalanmışsa, köken = centroid.
ttnphns

XX

1
S

Temel bileşen analizi bölümüne bakınız : merkezlenmiş ve merkezlenmemiş PCA'nın (genellikle aynı olmayan) bir tartışması için gözden geçirme ve son gelişmeler .
Yibo Yang

Yanıtlar:


33

DataCovariance matrixEigen-decomposition,

[Vikipedi:] Elipsin eksenlerini bulmak için, önce veriyi her bir değişkenin ortalamasını veri kaynağından çıkarmalı ve verileri orijin etrafında ortalamalıyız. Sonra verinin kovaryans matrisini hesaplıyoruz ...

Ve bunun çok doğru bir formülasyon olmadığını gözlemlemekte haklısın.

XX/(n1)X

Data XMatrix XX/(n1)Eigen-decomposition,

o zaman merkezleme çok önemlidir ve @ tnnfns tarafından açıklanan ve gösterilen efekti vardır . Verileri merkezlemek regresyon ve PCA'daki engellemeden nasıl kurtulur?

X

Data XSingular value decomposition.

Xsvd


1
Cevabınız için daha temiz bir mantık yapmak için bir tavsiyem var. İlk iki (öz) örneğinizde X'X/(n-1), SSCP matrisinden değil, MSCP matrisinden bahsediyorsunuz - bu, (şu anda bahsettiğiniz gibi) yerine X'Xayrışmak için denkliği gösteren svd örneğinde olacaktır . [Tabii ki ben düşünürdüm, fark sadece ölçek parçası (özdeğerler) değil özvektörler içindedir, ama daha iyi didaktik olduğunu.] Benim ikinci nokta hatırlatmak olacağını en kısa merkezleme olarak Bessel düzeltmesi hiçbir gerçekleşir gereksiz hale gelir, hoş geldin. X/sqrt(n-1)XXn-1n
ttnphns,

1
Her iki iyi nokta, @ttnphns. Onları cevabımı nasıl birleştirebileceğimi düşüneceğim: Bu cevabın daha geniş bir kitle tarafından anlaşılabilir olmasını istedim ve böylece gereksiz matematiksel ayrıntılara girmekten kaçınmaya çalıştım.
amip diyor Reinstate Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.