PCA (SVD और eigen अपघटन के लिए) में कैसे अंतर पड़ता है?


30

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 का उपयोग करता है , और सहसंयोजक मैट्रिक्स तब बराबर होता है ।XXX/(n1)


5
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
ttnphns

2
through the origin, rather than the main axis of the point cloud। पीसीए हमेशा मूल को छेदता है। यदि डेटा केंद्रित थे, तो मूल = केन्द्रक।
ttnphns 12

धन्यवाद, अवलोकन ने विशेष रूप से मेरे लिए स्पष्ट चीजों की मदद की। तो यह बस नामकरण सम्मेलनों का एक मुद्दा है? मुझे लगा कि पीसीए सहसंयोजक मैट्रिक्स के आसपास की गणना है, जबकि इसे आम तौर पर एक केंद्रित डेटासेट (जहां सहसंयोजक मैट्रिक्स है) पर की गई गणना के रूप में परिभाषित किया गया है । यह एक भ्रामक सम्मेलन की तरह लगता है। शेष भाग। XX
ज़िनिट

1
कई स्रोत आपके डेटा को केंद्रित करने के महत्व पर जोर देते हैं और फिर यह समझाने के लिए जाते हैं कि सहसंयोजक मैट्रिक्स के eigenvectors कैसे रुचि रखते हैं, इस तथ्य को अनदेखा कर रहे हैं कि अर्थ पहले से ही केंद्रित है। विकिपीडिया पर पीसीए प्रविष्टि यह अंतर नहीं बनाती है: दीर्घवृत्त के अक्षों को खोजने के लिए, हमें पहले डेटा को मूल के आसपास केंद्रित करने के लिए डेटासेट से प्रत्येक चर के माध्य को घटाना होगा। फिर, हम डेटा के सहसंयोजक मैट्रिक्स की गणना करते हैं, और इस सहसंयोजक मैट्रिक्स के स्वदेशी और संबंधित eigenvectors की गणना करते हैं। S
जेनीट

प्रधान घटक विश्लेषण देखें : केंद्रित बनाम संयुक्त राष्ट्र के पीसीए (जो आमतौर पर समान नहीं हैं) की चर्चा के लिए एक समीक्षा और हालिया घटनाक्रम
यिबो यांग

जवाबों:


33

जैसा कि आपने खुद पर टिप्पणी की थी और जैसा कि @ttnphns द्वारा टिप्पणियों में बताया गया है, कंप्यूटिंग कोविर्सियस मैट्रिक्स का अर्थ है कि केंद्रित: वैरिएशन, परिभाषा के अनुसार, औसत से औसत चुकता विचलन है । केंद्रित और गैर-केंद्रित डेटा में समान कोवरियन मैट्रिस होंगे। इसलिए यदि PCA द्वारा हम निम्नलिखित प्रक्रिया को समझते हैं: तो सेंटिंग से कोई फर्क नहीं पड़ता।

DataCovariance matrixEigen-decomposition,

[विकिपीडिया:] दीर्घवृत्त की कुल्हाड़ियों को खोजने के लिए, हमें पहले डेटा को मूल के आसपास केंद्रित करने के लिए डेटासेट से प्रत्येक चर के माध्य को घटाना होगा। फिर, हम डेटा के सहसंयोजक मैट्रिक्स की गणना करते हैं ...

और इसलिए आप यह देखना सही है कि यह बहुत सटीक सूत्रीकरण नहीं है।

जब लोग "गैर-केंद्रित डेटा पर पीसीए" के बारे में बात करते हैं, तो उनका मतलब है कि सहसंयोजक मैट्रिक्स के बजाय eigen- अपघटन मैट्रिक्स पर किया जाता है। यदि केंद्रित है, तो यह बिल्कुल कोविरेस मैट्रिक्स होगा। अगर नहीं तो नहीं। तो अगर पीसीए द्वारा हम निम्नलिखित प्रक्रिया को समझते हैं: एक्सXX/(n1)X

Data XMatrix XX/(n1)Eigen-decomposition,

तब केन्द्रित होना बहुत मायने रखता है और @ttnphns द्वारा वर्णित और सचित्र प्रभाव है कि कैसे डेटा को केंद्रित करने से प्रतिगमन और पीसीए में अवरोधन से छुटकारा मिलता है?

यह "अजीब" प्रक्रिया का उल्लेख करने में भी अजीब लग सकता है, हालांकि यह विचार करें कि पीसीए को डेटा मैट्रिक्स ही विलक्षण मूल्य अपघटन (SVD) के माध्यम से बहुत आसानी से किया जा सकता है। मैं इसका विस्तार से वर्णन यहां करता हूं: एसवीडी और पीसीए के बीच संबंध। PCA करने के लिए SVD का उपयोग कैसे करें? इस मामले में प्रक्रिया इस प्रकार है:X

Data XSingular value decomposition.

यदि केंद्रित है तो यह covariance मैट्रिक्स के माध्यम से किए गए मानक PCA के बराबर है। लेकिन यदि नहीं, तो यह ऊपर वर्णित "गैर-केंद्रित" पीसीए के बराबर है। चूंकि एसवीडी पीसीए निष्पादित करने के लिए एक बहुत ही सामान्य और बहुत सुविधाजनक तरीका है, इसलिए व्यवहार में कॉलिंग फ़ंक्शन से पहले डेटा को याद रखना काफी महत्वपूर्ण हो सकता है । मैं निश्चित रूप से यह करने के लिए भूल की वजह से कीड़े का मेरा हिस्सा था।Xsvd


1
मुझे आपके उत्तर के लिए एक क्लीनर तर्क बनाने की सलाह मिली है। चूँकि आपके दो पहले (eigen) उदाहरणों में आप अपघटन MSCP मैट्रिक्स के बारे में बोल रहे हैं X'X/(n-1)और SSCP मैट्रिक्स के नहीं X'X- यह svd उदाहरण में होगा, समतुल्यता दिखाने के X/sqrt(n-1)बजाय X(जैसा कि आप वर्तमान में बोलते हैं)। [निश्चित रूप से अंतर केवल स्केल भाग (eigenvalues) में है, न कि eigenvectors, लेकिन यह बेहतर रूप से बेहतर है, मैं सोचता हूं।] मेरा दूसरा बिंदु यह याद दिलाना होगा कि जैसे ही Xकोई जगह लेता है Besser सुधार n-1अनावश्यक हो जाता है, nस्वागत है।
ttnphns 23

1
दोनों अच्छे अंक, @ttnphns। मैं इस बारे में सोचूंगा कि मैं उन्हें अपने उत्तर में कैसे शामिल कर सकता हूं: मैं चाहता था कि यह जवाब व्यापक दर्शकों द्वारा समझा जा सके और इसलिए अनावश्यक गणितीय विवरणों में जाने से बचने की कोशिश की।
अमीबा का कहना है कि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.