PCA के लिए आपका डेटा केंद्रित (या de-meaning) क्या अंतर करता है? मैंने सुना है कि यह गणित को आसान बनाता है या यह पहला पीसी को चर के माध्यम से हावी होने से रोकता है, लेकिन मुझे लगता है कि मैं अभी तक अवधारणा को मजबूती से समझने में सक्षम नहीं हूं।
उदाहरण के लिए, यहां शीर्ष उत्तर डेटा को प्रतिगमन और पीसीए में अवरोधन से कैसे मुक्त किया जाता है? यह बताता है कि केंद्र बिंदु के मुख्य अक्ष के बजाय मूल के माध्यम से पहला PCA कैसे खींचेगा। मेरी समझ के आधार पर कि कोवरियन मैट्रिक्स के आइजनवेक्टर से पीसी कैसे प्राप्त किया जाता है, मैं नहीं समझ सकता कि ऐसा क्यों होगा।
इसके अलावा, मेरी खुद की गणना के साथ और बिना केंद्रित करने के लिए थोड़ा समझ में आता है।
iris
आर में डेटासेट में सेटोसा के फूलों पर विचार करें । मैंने निम्न प्रकार के नमूने कोवरियनस मैट्रिक्स के आइजनवेक्टर और ईजेनवेल्यूल्स की गणना की।
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
यदि मैं पहले डेटासेट को केंद्र में रखता हूं, तो मुझे बिल्कुल वही परिणाम मिलते हैं। यह काफी स्पष्ट प्रतीत होता है, क्योंकि केंद्रक कोवरियस मैट्रिक्स को बिल्कुल भी नहीं बदलता है।
df.centered <- scale(df,scale=F,center=T)
e.centered<- eigen(cov(df.centered))
e.centered
इस prcomp
कार्य का परिणाम केन्द्रित और अवैतनिक दोनों प्रकार के डेटा के समान ही इस ईजेंवल्यू-ईजेनवेक्टर संयोजन में होता है।
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
हालाँकि, prcomp
फ़ंक्शन में डिफ़ॉल्ट विकल्प है center = TRUE
। इस विकल्प को अक्षम डेटा के लिए निम्न PC में परिणामित करना ( झूठ के लिए सेट p.centered
होने पर वही रहता 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
यह बिना डेटा के सहसंयोजक मैट्रिक्स पर अपने स्वयं के आइजनवेक्टर गणनाओं से अलग क्यों है? क्या इसका गणना से कोई लेना-देना है? मैंने उल्लेख किया है कि prcomp
पीसी की गणना करने के लिए eigenvalue अपघटन के बजाय SVD विधि नामक कुछ का उपयोग करता है। फ़ंक्शन princomp
उत्तरार्द्ध का उपयोग करता है, लेकिन इसके परिणाम समान हैं prcomp
। क्या मेरा मुद्दा इस पोस्ट के शीर्ष पर मेरे द्वारा वर्णित उत्तर से संबंधित है?
संपादित करें: इस मुद्दे को सहायक @ttnphns द्वारा मंजूरी दे दी गई थी। इस सवाल पर नीचे उनकी टिप्पणी देखें: यदि पहले डेटा को केंद्रित नहीं किया गया था, तो एक सहसंयोजक मैट्रिक्स के eigenvectors की गणना करने का क्या मतलब है? और इस जवाब में: https://stats.stackexchange.com/a/22520/3277 । संक्षेप में: एक सहसंयोजक मैट्रिक्स का तात्पर्य पहले से ही डेटा को केंद्रित करना है। PCA केंद्रित डेटा SVD या eigendecomposition का उपयोग करता है , और सहसंयोजक मैट्रिक्स तब बराबर होता है ।
through the origin, rather than the main axis of the point cloud
। पीसीए हमेशा मूल को छेदता है। यदि डेटा केंद्रित थे, तो मूल = केन्द्रक।
Based on my understanding of how the PC's are obtained from the covariance matrix's eigenvectors...
आपके द्वारा लिंक किए गए उत्तर में टिप्पणी पढ़ें। Covariances डेटा पर केंद्रित है, PCA "covariances पर" = केंद्रित डेटा पर PCA। यदि आप मूल चर को केंद्र में नहीं रखते हैंX
, तो ऐसे डेटा पर आधारित पीसीएX'X/n [or n-1]
मैट्रिक्स पर = पीसीए होगा । महत्वपूर्ण अवलोकन भी देखें: आंकड़े . stackexchange.com/a/22520/3277