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 iris
veri 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
prcomp
Her 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, prcomp
iş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.centered
aynı 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ı? prcomp
Bilgisayarları hesaplamak için özdeğer ayrışımı yerine SVD yöntemi adı verilen bir şey kullandığını belirtmiştim . İşlev princomp
ikincisini kullanır, ancak sonuçları aynıdır prcomp
. Sorunum, bu yazının başında tanımladığım cevapla mı ilgili?
through the origin, rather than the main axis of the point cloud
. PCA her zaman kökenini deler. Veriler ortalanmışsa, köken = centroid.
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ızX
, 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 .