बहुत उच्च आयामीता के डेटा के लिए पीसीए कैसे करें?


12

प्रमुख घटक विश्लेषण (पीसीए) करने के लिए, आपको डेटा से प्रत्येक कॉलम के साधनों को घटाना होगा, सहसंबंध गुणांक मैट्रिक्स की गणना करना होगा और फिर eigenvectors और eigenvalues ​​को ढूंढना होगा। ठीक है, बल्कि, यह वही है जो मैंने पायथन में इसे लागू करने के लिए किया था, सिवाय इसके कि यह केवल छोटे मेट्रिसेस के साथ काम करता है क्योंकि सहसंबंध गुणांक मैट्रिक्स (गलियारे) को खोजने की विधि मुझे उच्च आयामीता के साथ एक सरणी का उपयोग नहीं करने देती है। चूंकि मुझे इसे छवियों के लिए उपयोग करना है, इसलिए मेरा वर्तमान कार्यान्वयन वास्तव में मेरी मदद नहीं करता है।

मैंने पढ़ा है कि यह केवल आपके डेटा मैट्रिक्स और बजाय गणना करना संभव है , लेकिन यह मेरे लिए काम नहीं करता है। ठीक है, मुझे पूरा यकीन नहीं है कि मैं समझ सकता हूं कि इसका क्या मतलब है, इस तथ्य के अलावा कि यह बजाय मैट्रिक्स होना चाहिए (मेरे मामले में )। मैं उन लोगों के बारे में पढ़ता हूं, जो आइजनफैस के ट्यूटोरियल में हैं, लेकिन उनमें से कोई भी इसे इस तरह से नहीं समझाता कि मैं वास्तव में इसे प्राप्त कर सकूं।DDD/nDD/nn×np×ppn

संक्षेप में, क्या इस पद्धति का एक सरल एल्गोरिथम विवरण है ताकि मैं इसका पालन कर सकूं?


आपने जो पढ़ा है वह सही है। मैट्रिक्स को ग्राम मैट्रिक्स कहा जाता है। इसके आइजेनवेक्टर प्रमुख घटक हैं। इसका आइजेनवेल्स बिल्कुल समान है, कारक , सहसंयोजक मैट्रिक्स । DD1/nDD/n
अमीबा

जवाबों:


10

मानक PCA करने का सबसे आसान तरीका यह है कि आप अपने डेटा मैट्रिक्स के कॉलम (कॉलम को अलग-अलग वेरिएबल्स के अनुरूप मानते हुए) को कॉलम साधनों को घटाकर और फिर एक SVD प्रदर्शन करें। बाएं एकवचन वैक्टर, इसी विलक्षण मूल्य से गुणा, (अनुमानित) प्रमुख घटकों के अनुरूप हैं। सही एकवचन वैक्टर (अनुमानित) प्रमुख घटक दिशाओं के अनुरूप है - ये पीसीए द्वारा दिए गए ईजेनवेक्टर के समान हैं। एकवचन मान मुख्य घटकों के मानक विचलन (रूट n के एक कारक द्वारा गुणा, जहां n आपके डेटा मैट्रिक्स में पंक्तियों की संख्या है) के अनुरूप है - पीसीए द्वारा दिए गए प्रतिजन के वर्गमूल के समान।

यदि आप सहसंबंध मैट्रिक्स पर पीसीए करना चाहते हैं, तो आपको एसवीडी लागू करने से पहले अपने डेटा मैट्रिक्स के कॉलम को मानकीकृत करना होगा। यह साधनों (केंद्र) को घटाना और फिर मानक विचलन (स्केलिंग) द्वारा विभाजित करना है।

यदि आप पूर्ण पीसीए चाहते हैं तो यह सबसे कुशल तरीका होगा। आप कुछ बीजगणित के साथ सत्यापित कर सकते हैं कि यह आपको नमूना कोवरियन मैट्रिक्स के वर्णक्रमीय अपघटन करने के समान उत्तर देता है।

एक आंशिक एसवीडी की गणना के लिए कुशल तरीके भी हैं, जब आपको केवल कुछ पीसी की आवश्यकता होती है। इनमें से कुछ शक्ति पुनरावृत्ति के संस्करण हैं। Lanczos एल्गोरिथ्म एक उदाहरण है कि यह भी आंशिक कम से कम वर्गों से संबंधित है। यदि आपका मैट्रिक्स बड़ा है, तो आप एक अनुमानित विधि के साथ बेहतर हो सकते हैं। ऐसा होने पर पीसीए को नियमित करने के सांख्यिकीय कारण भी हैं।


अगर मैं गलत हूं तो मुझे सुधारें, लेकिन मुझे लगता है कि लैंकोस एल्गोरिथ्म ईगेंडेकोम्पोजिशन करता है न कि एसवीडी।
अमीबा

1
एक इच्छुक पाठक SVD के माध्यम से PCA करने के बारे में अधिक जानकारी के लिए यहाँ देख सकता है: SVD और PCA के बीच संबंध। PCA करने के लिए SVD का उपयोग कैसे करें?
अमीबा

10

क्या आप अभी क्या कर रहे करीब है, लेकिन क्या आप वाकई गुणा की eigenvectors बनाने की जरूरत (data . data.T) / linesद्वारा छोड़ा पर data.T, आदेश के eigenvectors प्राप्त करने के लिए (data.T . data) / lines। इसे कभी-कभी "पारगमन चाल" कहा जाता है।

यहाँ कुछ और विवरण हैं। मान लीजिए कि आपके पास एक मैट्रिक्स जिसे आप पीसीए पर करना चाहते हैं; सादगी के लिए, मान लीजिए कि के कॉलम को पहले से ही शून्य मतलब के लिए सामान्य कर दिया गया है, ताकि हमें केवल सहसंयोजक मैट्रिक्स के स्वदेशी डॉक्टरों की गणना करने की आवश्यकता हो ।A A T AAAATA

अब यदि एक मैट्रिक्स है, , तो एक बहुत बड़ा मैट्रिक्स है। इसलिए के ईजेनवेक्टरों की गणना करने के बजाय , हम बहुत छोटे मैट्रिक्स के eigenvectors की गणना करना पसंद कर सकते हैं - यह मानते हुए कि हम दोनों के बीच संबंध का पता लगा सकते हैं। तो के eigenvectors के eigenvectors से संबंधित कैसे हैं ?मीटर × एन एन > > मीटर एक टीएन × एन टीमीटर × मीटर एक एक टी टीटीAm×nn>>mATAn×nATAm×mAATATAAAT

चलो के आइजन्वेक्टर हो के साथ eigenvalue । फिरA A T λvAATλ

  • AATv=λv
  • AT(AATv)=AT(λv)
  • (ATA)(ATv)=λ(ATv)

दूसरे शब्दों में, यदि , का एक eigenvector है , तो , उसी eigenvalue के साथ का एक eigenvector है । तो जब पर एक पीसीए प्रदर्शन कर के बजाय सीधे की eigenvectors खोजने (जो बहुत महंगा हो सकता है), यह eigenvectors को खोजने के लिए आसान है के द्वारा छोड़ा पर गुणा इन और फिर पाने के लिए eigenvectors की ।टी टी वी टीटीवी टी टी टी वी टीvAATATvATAAATAvAATATATvATA


1
यह पीसीए पर लागू "कर्नेल ट्रिक" की तरह लगता है। en.wikipedia.org/wiki/Kernel_PCA यह कुछ बड़े मैट्रिसेस को संभालने का एक बहुत अच्छा तरीका है।
गिलियड

+1। शायद एक को जोड़ना चाहिए कि को ग्राम मैट्रिक्स कहा जाता है। AA
अमीबा

8

ऐसा लगता है कि आप जो चाहते हैं वह पीसीए प्रदर्शन के लिए NIPALS एल्गोरिदम है। यह सांख्यिकीविदों के बीच एक बहुत लोकप्रिय एल्गोरिथ्म है। इसके कई फायदे हैं:

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

विवरण
http://en.wikipedia.org/wiki/Non-linear_iterative_partial_least_squares

एल्गोरिथ्म
यहाँ एल्गोरिथ्म का एक सरल और उत्कृष्ट विवरण है (खंड 1.2 में)
http://stats4.eng.mcmaster.ca/w/mediafiles/mediawiki/f/f7/Section-Extra-Class-1.pdf

पीसीए करने से पहले सबसे पहले मतलब-सेंटर-स्केल याद रखें क्योंकि यह स्केल-सेंसिटिव है।


4

गिलियड के उत्तर को जोड़ने के लिए, वे कम्प्यूटेशनल रूप से कम पीसीए के लिए महंगे एल्गोरिदम हैं। NIPALS वास्तव में बहुत लोकप्रिय है, लेकिन मुझे अनुमानित विधियों के साथ बहुत सफलता मिली है जो आंशिक डेटा पर फिट बैठता है (जिसे अक्सर यादृच्छिक प्रक्षेपण द्वारा पीसीए कहा जाता है)। इस पर मेटॉपॉज़िट थ्रेड में चर्चा की गई थी ।

जैसा कि आप पायथन का उल्लेख करते हैं, मुझे यह बताने दें कि एल्गोरिथ्म को scikit-learn में लागू किया गया है : PCA वर्ग। विशेष रूप से, यह एक उदाहरण में प्रयोग किया जाता है जो आइगेनफेस का प्रदर्शन करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.