पीसीए को रिवर्स कैसे करें और कई प्रमुख घटकों से मूल चर को फिर से संगठित करें?


113

प्रिंसिपल कंपोनेंट एनालिसिस (पीसीए) का इस्तेमाल डायमेंशन की कमी के लिए किया जा सकता है। इस तरह की आयामीता में कमी करने के बाद, मूल घटकों / विशेषताओं को कम संख्या में प्रमुख घटकों से कैसे पुन: निर्मित किया जा सकता है?

वैकल्पिक रूप से, कोई डेटा से कई प्रमुख घटकों को कैसे निकाल या छोड़ सकता है?

दूसरे शब्दों में, PCA को कैसे रिवर्स करें?


यह देखते हुए कि पीसीए एकवचन मूल्य अपघटन (एसवीडी) से निकटता से संबंधित है, एक ही प्रश्न निम्न प्रकार से पूछा जा सकता है: एचआरडी रिवर्स कैसे करें?


10
मैं इस प्रश्नोत्तर सूत्र को पोस्ट कर रहा हूं, क्योंकि मैं दर्जनों सवाल देखकर बहुत थक गया हूं और यह बात पूछ रहा हूं कि उन्हें डुप्लिकेट के रूप में बंद नहीं किया जा सकता क्योंकि हमारे पास इस विषय पर एक विहित धागा नहीं है। सभ्य जवाब के साथ कई समान सूत्र हैं लेकिन सभी में गंभीर सीमाएँ हैं, जैसे कि विशेष रूप से R. पर ध्यान केंद्रित करना
amoeba

4
मैं प्रयास की सराहना करता हूं - मुझे लगता है कि पीसीए के बारे में एक साथ जानकारी इकट्ठा करने की सख्त जरूरत है, यह क्या करता है, यह क्या नहीं करता है, एक या कई उच्च-गुणवत्ता वाले थ्रेड्स में। मुझे खुशी है कि आपने ऐसा करने के लिए इसे अपने ऊपर ले लिया है!
साइकोरैक्स

1
मुझे विश्वास नहीं है कि यह विहित उत्तर "क्लीनअप" अपने उद्देश्य को पूरा करता है। हमारे पास यहां एक उत्कृष्ट, सामान्य प्रश्न और उत्तर है, लेकिन प्रत्येक प्रश्न में पीसीए के बारे में कुछ सूक्ष्मताएं थीं जो यहां खो जाती हैं। अनिवार्य रूप से आपने सभी प्रश्नों को लिया है, उन पर पीसीए किया है, और निचले प्रमुख घटकों को त्याग दिया है, जहां कभी-कभी, समृद्ध और महत्वपूर्ण विवरण छिपा हुआ है। इसके अलावा, आप पाठ्यपुस्तक रेखीय बीजगणित संकेतन पर लौट आए हैं, जो कि आकस्मिक सांख्यिकीविदों के लिंगुआ फ्रेंका का उपयोग करने के बजाय कई लोगों को पीसीए अपारदर्शी बनाता है, जो आर। है
थॉमस ब्राउन

1
@ थोमस धन्यवाद मुझे लगता है कि हमारे पास असहमति है, इसे चैट या मेटा में चर्चा करने में खुशी होगी । बहुत संक्षेप में: (1) प्रत्येक प्रश्न का उत्तर व्यक्तिगत रूप से देना वास्तव में बेहतर हो सकता है, लेकिन कठोर वास्तविकता यह है कि ऐसा नहीं होता है। कई सवाल सिर्फ अनुत्तरित रह जाते हैं, जैसा कि शायद आपका होगा। (२) यहाँ का समुदाय कई लोगों के लिए उपयोगी सामान्य उत्तरों को दृढ़ता से पसंद करता है; आप देख सकते हैं कि किस तरह के उत्तर सबसे ज्यादा मिलते हैं। (३) मैथ्स के बारे में सहमत हूँ, लेकिन इसीलिए मैंने यहाँ आर कोड दिया! (४) लिंगुआ फ्रेंका के बारे में असहमत होना; व्यक्तिगत रूप से, मैं नहीं जानता कि आर।
अमीबा

@amoeba मुझे डर है कि मुझे नहीं पता कि चैट को कैसे कहा जाए क्योंकि मैंने पहले कभी मेटा चर्चाओं में भाग नहीं लिया।
थॉमस ब्राउन ने

जवाबों:


147

पीसीए सहसंयोजक मैट्रिक्स ("प्रमुख कुल्हाड़ियों") के eigenvectors की गणना करता है और उन्हें उनके eigenvalues ​​(व्याख्या किए गए विचरण की मात्रा) द्वारा सॉर्ट करता है। तब केंद्रित डेटा को प्रिंसिपल घटकों ("स्कोर") प्राप्त करने के लिए इन प्रमुख अक्षों पर अनुमानित किया जा सकता है। आयामीता में कमी के प्रयोजनों के लिए, कोई केवल प्रमुख घटकों का एक सबसेट रख सकता है और बाकी को त्याग सकता है। ( पीसीए के लिए एक आम आदमी के परिचय के लिए यहां देखें ।)

चलो होना के साथ डेटा मैट्रिक्स पंक्तियाँ (डेटा बिंदु) और कॉलम (चर, या सुविधाओं)। प्रत्येक पंक्ति से माध्य वेक्टर को घटाने के बाद , हमें केंद्रित डेटा मैट्रिक्स । Let कुछ eigenvectors का मैट्रिक्स है जिसे हम उपयोग करना चाहते हैं; ये अक्सर सबसे बड़े eigenvalues ​​के साथ eigenvectors होंगे। तब PCA अनुमानों ("स्कोर") का मैट्रिक्स केवल द्वारा दिया जाएगा । एन×पीएनपीXrawn×pnpμXVp×kkkn×kZ=XV

यह नीचे दिए गए आंकड़े पर चित्रित किया गया है: पहला उपप्लॉट कुछ केंद्रीकृत डेटा (वही डेटा जो मैं लिंक किए गए धागे में अपने एनिमेशन में उपयोग करता हूं ) और इसके अनुमानों को पहले प्रमुख अक्ष पर दिखाता हूं । दूसरा सबप्लॉट केवल इस प्रक्षेपण के मूल्यों को दर्शाता है; आयाम को दो से घटाकर एक कर दिया गया है:

यहाँ छवि विवरण दर्ज करें

आदेश में इस एक प्रमुख घटक से मूल दो चर को फिर से संगठित करने में सक्षम होने के लिए, हम इसे वापस करने के लिए मैप कर सकते हैं के साथ आयाम । वास्तव में, प्रत्येक पीसी के मूल्यों को उसी वेक्टर पर रखा जाना चाहिए जो प्रक्षेपण के लिए उपयोग किया गया था; सबप्लोट्स 1 और 3 की तुलना करें। परिणाम तब । मैं इसे ऊपर के तीसरे सबप्लॉट पर प्रदर्शित कर रहा हूं। अंतिम पुनर्निर्माण , हमें उस सदिश को जोड़ने की आवश्यकता है:pVX^=ZV=XVVX^rawμ

PCA reconstruction=PC scoresEigenvectors+Mean

ध्यान दें कि एक सीधे पहले सबप्लॉट से तीसरे में जा सकता है , मैट्रिक्स के साथ को गुणा करके ; इसे प्रक्षेपण मैट्रिक्स कहा जाता है । यदि सभी eigenvectors का उपयोग किया जाता है, तो पहचान मैट्रिक्स है (कोई आयामी कमी नहीं की जाती है, इसलिए "पुनर्निर्माण" सही है)। यदि केवल eigenvectors का एक सबसेट उपयोग किया जाता है, तो यह पहचान नहीं है।XVVpVV

यह पीसी स्पेस में एक मनमाना बिंदु लिए काम करता है; इसे माध्यम से मूल स्थान पर मैप किया जा सकता है ।zx^=zV

पीसी को छोड़ना (हटाना)

कभी-कभी कोई अग्रणी पीसी में से एक या कुछ को छोड़ना (निकालना) चाहता है, इसके बजाय अग्रणी पीसी को रखने और बाकी (जैसा कि ऊपर) को त्यागना चाहता है। इस मामले में सभी सूत्रों रहने बिल्कुल वैसा ही है, लेकिन सभी प्रमुख कुल्हाड़ियों से मिलकर चाहिए सिवाय लोगों को त्याग करना चाहता है के लिए। दूसरे शब्दों में, हमेशा वे सभी पीसी शामिल होने चाहिए जिन्हें कोई रखना चाहता है।VV

सहसंबंध पर पीसीए के बारे में चेतावनी

जब पीसीए सहसंबंध मैट्रिक्स पर किया जाता है (और सहसंयोजक मैट्रिक्स पर नहीं), तो कच्चे डेटा न केवल को घटाकर केंद्रित किया जाता है, बल्कि प्रत्येक कॉलम को इसके मानक विचलन द्वारा विभाजित करके । इस मामले में, मूल डेटा को फिर से संगठित करने के लिए, किसी को साथ के कॉलमों को बैक-स्केल करना और उसके बाद केवल वेक्टर वापस जोड़ना होगा ।XrawμσiX^ μσiμ


छवि प्रसंस्करण उदाहरण

यह विषय अक्सर छवि प्रसंस्करण के संदर्भ में सामने आता है। लेनना पर विचार करें - छवि प्रसंस्करण साहित्य में मानक छवियों में से एक (यह कहां से आता है यह जानने के लिए लिंक का पालन करें)। नीचे बाईं ओर, मैं इस छवि ( यहां उपलब्ध फ़ाइल ) का ग्रेस्केल संस्करण प्रदर्शित करता हूं ।512×512

लेनना छवि के दो ग्रेस्केल संस्करण।  दायीं ओर का हिस्सा दानेदार है लेकिन निश्चित रूप से पहचानने योग्य है।

हम इस स्केल इमेज को डेटा मैट्रिक्स । मैं इस पर पीसीए प्रदर्शन करता हूं और पहले 50 प्रमुख घटकों का उपयोग करके गणना करता हूं । परिणाम दाईं ओर प्रदर्शित होता है।एक्स कच्चे एक्स कच्चे512×512XrawX^raw


एसवीडी को वापस लाना

पीसीए एकवचन मूल्य अपघटन (एसवीडी) से बहुत निकट से संबंधित है, एसवीडी और पीसीए के बीच संबंध देखें PCA करने के लिए SVD का उपयोग कैसे करें? अधिक जानकारी के लिए। यदि एक मैट्रिक्स , SVD-ed as और एक -dimensional वेक्टर का चयन करता है जो "कम" क्षेत्र में बिंदु का प्रतिनिधित्व करता है। की आयाम, फिर इसे वापस करने के लिए मैप करने के लिए आयाम एक से गुणा करने के लिए की जरूरत है ।एक्स एक्स = यू एस वी k जेड यू कश्मीर पी एस 1 : कश्मीर , 1 : कश्मीर वी : , 1 : कश्मीरn×pXX=USVkzUkpS1:k,1:kV:,1:k


R, Matlab, Python और Stata में उदाहरण हैं

मैं फिशर आइरिस डेटा पर पीसीए का संचालन करूंगा और फिर पहले दो प्रमुख घटकों का उपयोग करके इसे फिर से संगठित करूंगा । मैं सहसंयोजक मैट्रिक्स पर पीसीए कर रहा हूं, सहसंबंध मैट्रिक्स पर नहीं, अर्थात मैं यहां चर नहीं बढ़ा रहा हूं। लेकिन मुझे अभी भी मतलब जोड़ना है। स्टैटा जैसे कुछ पैकेज, मानक सिंटैक्स के माध्यम से ध्यान रखते हैं। कोड के साथ उनकी मदद के लिए @StasK और @Kodiologist को धन्यवाद।

हम पहले डेटापॉइंट के पुनर्निर्माण की जांच करेंगे, जो है:

5.1        3.5         1.4        0.2

Matlab

load fisheriris
X = meas;
mu = mean(X);

[eigenvectors, scores] = pca(X);

nComp = 2;
Xhat = scores(:,1:nComp) * eigenvectors(:,1:nComp)';
Xhat = bsxfun(@plus, Xhat, mu);

Xhat(1,:)

आउटपुट:

5.083      3.5174      1.4032     0.21353

आर

X = iris[,1:4]
mu = colMeans(X)

Xpca = prcomp(X)

nComp = 2
Xhat = Xpca$x[,1:nComp] %*% t(Xpca$rotation[,1:nComp])
Xhat = scale(Xhat, center = -mu, scale = FALSE)

Xhat[1,]

आउटपुट:

Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
   5.0830390    3.5174139    1.4032137    0.2135317

पीसीए के पुनर्निर्माण के उदाहरण के लिए छवियों का पुनर्निर्माण भी इस उत्तर को देखता है ।

अजगर

import numpy as np
import sklearn.datasets, sklearn.decomposition

X = sklearn.datasets.load_iris().data
mu = np.mean(X, axis=0)

pca = sklearn.decomposition.PCA()
pca.fit(X)

nComp = 2
Xhat = np.dot(pca.transform(X)[:,:nComp], pca.components_[:nComp,:])
Xhat += mu

print(Xhat[0,])

आउटपुट:

[ 5.08718247  3.51315614  1.4020428   0.21105556]

ध्यान दें कि यह अन्य भाषाओं के परिणामों से थोड़ा अलग है। ऐसा इसलिए है क्योंकि आइरिस डेटासेट के पायथन संस्करण में गलतियाँ हैं

Stata

webuse iris, clear
pca sep* pet*, components(2) covariance
predict _seplen _sepwid _petlen _petwid, fit
list in 1

  iris   seplen   sepwid   petlen   petwid    _seplen    _sepwid    _petlen    _petwid  
setosa      5.1      3.5      1.4      0.2   5.083039   3.517414   1.403214   .2135317  

1
MATLAB में आप मानक PCA आउटपुट से म्यू को पुनः प्राप्त कर सकते हैं, और इनपुट में घटकों की संख्या की आपूर्ति भी कर सकते हैं।
अक्कल

2
@ अक्षल I ने सभी तीन कोड अंशों को यथासंभव (और जितना स्पष्ट हो) बनाने की कोशिश की; विशेष रूप से, मैं pca () कॉल करने से पहले हाथ से _ गणना करना चाहता था , और पीसीए को सभी घटकों के साथ चलाने के लिए और केवल घटकों का उपयोग करने के लिए जब स्कोर और eigenvectors के बीच डॉट उत्पाद का प्रदर्शन कर रहा था। मैंने अब उसी पैटर्न का पालन करने के लिए पायथन कोड को संशोधित किया है। μnComp
अमीबा

3
मैं उस उत्तर से सब कुछ हटा दूंगा जो प्रश्न के सीधे उत्तर से संबंधित नहीं है, जैसे कि प्यारी लड़की की छवि और छवि प्रसंस्करण। अगर किसी को छवियों में दिलचस्पी नहीं है, तो यह उपभोग को मुश्किल बनाता है। याद रखें कि जो कोई भी प्रश्न पूछ रहा है, वह पहले से ही उलझन में है।
Aksakal

5
लेनना मानक के रूप में डेटा के रूप में आईरिस है के बारे में है।
StasK

2
@ बोमेबा मैं सीमा में आकार, बिट-गहराई, यहां तक ​​कि काले पिक्सेल के बारे में बात कर रहा था। मेरे पास कोई निश्चित संस्करण नहीं है http://www.ece.rice.edu/~wakin/images/ : "Lena (aka" Lenna ") परीक्षण छवि के कई संस्करण उपलब्ध प्रतीत होते हैं। इस समस्या को Shapiro ने नोट किया था। अपने 1993 के ज़ीरोट्री पेपर में, और यह आज भी आश्चर्यजनक रूप से सच है "
लॉरेंट डुवल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.