Bagaimana pemusatan membuat perbedaan dalam PCA (untuk dekomposisi SVD dan eigen)?

30

Apa perbedaan pemusatan (atau de-makna) data Anda untuk PCA? Saya pernah mendengar bahwa itu membuat matematika lebih mudah atau mencegah PC pertama dari yang didominasi oleh variabel, tetapi saya merasa seperti saya belum dapat memahami konsep ini dengan kuat.

Misalnya, jawaban teratas di sini Bagaimana cara memusatkan data menyingkirkan intersep dalam regresi dan PCA? menjelaskan bagaimana tidak memusatkan akan menarik PCA pertama melalui asal, bukan sumbu utama dari cloud titik. Berdasarkan pemahaman saya tentang bagaimana PC diperoleh dari vektor eigen matriks kovarians, saya tidak bisa mengerti mengapa ini akan terjadi.

Selain itu, perhitungan saya sendiri dengan dan tanpa pemusatan tampaknya tidak masuk akal.

Pertimbangkan bunga setosa dalam irisdataset di R. Saya menghitung vektor eigen dan nilai eigen dari matriks kovarian sampel sebagai berikut.

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

Jika saya memusatkan dataset terlebih dahulu, saya mendapatkan hasil yang persis sama. Ini tampaknya cukup jelas, karena pemusatan tidak mengubah matriks kovarians sama sekali.

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

The prcomphasil fungsi persis ini kombinasi eigen-vektor eigen juga, untuk kedua dataset terpusat dan uncentered.

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

Namun, prcompfungsi tersebut memiliki opsi default center = TRUE. Menonaktifkan opsi ini menghasilkan PC berikut untuk data yang tidak dimasukkan ( p.centeredtetap sama bila centerdisetel ke false):

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

Mengapa ini berbeda dari perhitungan vektor eigen saya sendiri pada matriks kovarians dari data yang tidak terpusat? Apakah ada hubungannya dengan perhitungan? Saya telah melihat disebutkan bahwa prcompmenggunakan sesuatu yang disebut metode SVD daripada dekomposisi nilai eigen untuk menghitung PC. Fungsi princompmenggunakan yang terakhir, tetapi hasilnya identik dengan prcomp. Apakah masalah saya terkait dengan jawaban yang saya jelaskan di bagian atas posting ini?

XXX/(n-1)

Zenit
sumber
5
Based on my understanding of how the PC's are obtained from the covariance matrix's eigenvectors...Silakan baca komentar di jawaban yang Anda tautkan. Kovarian menyiratkan pemusatan data, PCA "on covariances" = PCA pada data terpusat. Jika Anda tidak memusatkan variabel asli X, PCA berdasarkan data tersebut akan = PCA pada X'X/n [or n-1]matriks. Lihat juga ikhtisar penting: stats.stackexchange.com/a/22520/3277 .
ttnphns
2
through the origin, rather than the main axis of the point cloud. PCA selalu menembus asalnya. Jika data terpusat, asal = centroid.
ttnphns
XX
1
S
Lihat Analisis komponen utama: tinjauan dan perkembangan terkini untuk diskusi PCA terpusat dan tidak terpusat (yang umumnya tidak sama).
Yibo Yang

Jawaban:

33

DSebuahtSebuahMatriks kovarianEigen-dekomposisi,
maka pemusatan tidak membuat perbedaan.

[Wikipedia:] Untuk menemukan sumbu elips, pertama-tama kita harus mengurangi rata-rata setiap variabel dari dataset untuk memusatkan data di sekitar asal. Kemudian, kami menghitung matriks kovarian data ...

Jadi Anda benar untuk mengamati bahwa ini bukan formulasi yang sangat akurat.

XX/(n-1)X berpusat maka ini akan menjadi matriks kovarian. Jika tidak maka tidak. Jadi jika dengan PCA kami memahami prosedur berikut:

Data XMatriks XX/(n-1)Eigen-dekomposisi,

kemudian memusatkan banyak hal dan memiliki efek yang dijelaskan dan diilustrasikan oleh @ttnphns di Bagaimana memusatkan data menyingkirkan intersep dalam regresi dan PCA?

X

Data XDekomposisi nilai singular.

Xsvd

amuba kata Reinstate Monica
sumber
1
Saya punya saran untuk jawaban Anda untuk membuat logika yang lebih bersih. Karena dalam dua contoh (eigen) pertama Anda, Anda berbicara tentang matriks MSCP dekomposisi X'X/(n-1)dan bukan matriks SSCP X'X- itu akan ada dalam contoh svd, yang menunjukkan kesetaraan, untuk diuraikan X/sqrt(n-1)alih-alih X(seperti yang saat ini Anda bicarakan). [Tentu saja perbedaannya hanya pada bagian skala (nilai eigen) bukan vektor eigen, tetapi lebih baik secara didaktik, saya akan berpikir.] Poin kedua saya adalah untuk mengingatkan bahwa begitu pemusatan Xtidak terjadi, koreksi Bessel n-1menjadi tidak perlu, nsama-sama
ttnphns
1
Keduanya poin bagus, @ttnphns. Saya akan berpikir tentang bagaimana saya dapat memasukkan mereka ke dalam jawaban saya: Saya ingin jawaban ini dapat dimengerti oleh khalayak yang lebih luas dan berusaha menghindari masuk ke rincian matematika yang tidak perlu.
Amuba kata Reinstate Monica