एक सामान्य मैट्रिक्स के सबसे बड़े प्रतिजन की गणना करने का सबसे तेज़ तरीका क्या है?


27

संपादित करें: मैं परीक्षण कर रहा हूं कि क्या किसी भी प्रतिध्वनि में एक या अधिक का परिमाण है।

मुझे एक बड़े विरल, गैर-सममित मैट्रिक्स का सबसे बड़ा पूर्ण स्वदेशी खोजने की आवश्यकता है।

मैं R के eigen()फ़ंक्शन का उपयोग कर रहा हूं , जो सभी eigenvalues ​​को खोजने के लिए या तो EISPACK या LAPACK से QR एल्गो का उपयोग करता है और फिर मैं abs()पूर्ण मान प्राप्त करने के लिए उपयोग करता हूं । हालांकि, मुझे इसे और तेज करने की जरूरत है।

मैंने igraphआर पैकेज में ARPACK इंटरफ़ेस का उपयोग करने का भी प्रयास किया है । हालाँकि, इसने मेरे एक मैट्रेस के लिए एक त्रुटि दी।

अंतिम कार्यान्वयन आर से सुलभ होना चाहिए।

संभवत: एक ही परिमाण के कई प्रतिजन होंगे।

क्या तुम्हारे पास कोई सुझाव है?

संपादित करें: सटीकता केवल होना चाहिए 1e-11। एक "विशिष्ट" मैट्रिक्स अब तक । मैं इस पर एक QR कारक करने में सक्षम है। हालांकि, यह बहुत बड़ा होना संभव है। मैं वर्तमान में अर्नोल्डी एल्गोरिथ्म के बारे में पढ़ना शुरू कर रहा हूं। मैं समझता हूं कि यह लैंजसोस से संबंधित है।386×386

EDIT2: यदि मेरे पास कई मैट्रिसेस हैं जो मैं "परीक्षण" कर रहा हूं और मुझे पता है कि एक बड़ा सबमेट्रिक्स है जो भिन्न नहीं होता है। क्या इसे अनदेखा / त्यागना संभव है?


: मेरा उत्तर यहाँ देखें scicomp.stackexchange.com/a/1679/979 । यह एक वर्तमान शोध विषय है और वर्तमान विधियां लैंसजोस की तुलना में बेहतर कर सकती हैं। एकवचन मानों की गणना करने की समस्या कंप्यूटिंग आइजनवेल्स की समस्या के बराबर है।
ड्रैनक्सो

2
400x400 मैट्रिक्स! = बड़ा। इसके अलावा अगर "एक ही परिमाण के कई स्वदेशी होंगे तो क्या होगा?" खस्ता भूमि में: linalg.eig (random.normal (size = (400,400))) में लगभग आधा सेकंड लगता है। क्या यह बहुत धीमी है?
19

@meawoppl हाँ आधा सेकंड बहुत धीमी है। ऐसा इसलिए है क्योंकि यह एक अन्य एल्गो का हिस्सा है जो इस गणना को कई बार चलाता है।
शक्ति

1
@ पॉवर गेटका। क्या आपके पास आइजनवेक्टर का कोई अनुमान है। यानी यह अंतिम समाधान के समान है, या आप इसकी संरचना के बारे में शिक्षित अनुमान लगा सकते हैं?
22

जवाबों:


14

यह आपके मैट्रिक्स के आकार पर बहुत कुछ निर्भर करता है, बड़े पैमाने पर इस मामले में भी कि क्या यह विरल है, और उस सटीकता पर जिसे आप प्राप्त करना चाहते हैं।

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

यदि आपकी समस्या में ऐसा नहीं है, तो अपने प्रश्न में अधिक विशिष्ट जानकारी दें। फिर इस उत्तर में एक टिप्पणी जोड़ें, और मैं इसे अपडेट करूंगा।

संपादित करें: [यह प्रश्न के पुराने संस्करण के लिए था, जो सबसे बड़े आइगेनवेल्यू के लिए सोता था।] जैसा कि आपका मैट्रिक्स छोटा और स्पष्ट रूप से घना है, मैं बी = (IA) ^ {- 1} पर अर्नोल्डी पुनरावृत्ति करूँगा, एक प्रारंभिक का उपयोग करके आईए के त्रिकोणीय कारक का अनुमत बी से सस्ता गुणन है (या एक स्पष्ट व्युत्क्रम की गणना करें, लेकिन यह कारक के रूप में 3 गुना अधिक लागत है।) आप परीक्षण करना चाहते हैं कि क्या बी में नकारात्मक ऋणात्मकता है। ए के स्थान पर बी के साथ काम करना, नकारात्मक प्रतिजन को बेहतर रूप से अलग किया जाता है, इसलिए यदि एक है, तो आपको तेजी से जुटना चाहिए।

लेकिन मैं उत्सुक हूं कि आपकी समस्या कहां से आती है। नॉनसिमेट्रिक मेट्रिसेस में आमतौर पर जटिल आइजनवेल्स होते हैं, इसलिए '' सबसे बड़ा '' भी अच्छी तरह से परिभाषित नहीं होता है। इस प्रकार आपको अपनी समस्या के बारे में अधिक पता होना चाहिए, जो यह सुझाव देने में मदद कर सकता है कि इसे और भी तेज़ी से और / या अधिक मज़बूती से कैसे हल किया जाए।

Edit2: अर्नोल्डी के लिए ब्याज का एक विशेष सबसेट मिलना मुश्किल है । पूरी तरह से सबसे बड़े eigenvalues ​​को मज़बूती से प्राप्त करने के लिए, आप मूल मैट्रिक्स का उपयोग करके पुनरावृत्ति कर लेंगे, एक उप-आकार के मिलान के साथ या परिमाण में 1 या बड़ा होने की उम्मीद किए गए eigenvalues ​​की संख्या को पार कर जाएगा। छोटे मैट्रीस पर, यह क्यूआर एल्गोरिथ्म की तुलना में धीमा होगा लेकिन बड़े मैट्रिसेस पर यह बहुत तेज होगा।


मुझे यह जांचने की जरूरत है कि सबसे बड़ा ईगेंवल्यू 1 से अधिक है या नहीं। सटीकता केवल 1e-11 की होनी चाहिए। एक "विशिष्ट" मैट्रिक्स अब तक 386 x 386 हो गया है। मैं इस पर एक QR कारक करने में सक्षम हूं। हालांकि, यह बहुत बड़ा होना संभव है। मैं वर्तमान में अर्नोल्डी एल्गोरिथ्म के बारे में पढ़ना शुरू कर रहा हूं। मैं समझता हूं कि यह लैंजसोस से संबंधित है।
शक्ति

यह जानकारी आपके प्रश्न की है - इसलिए कृपया इसे संपादित करें, और अधिक जानकारी भी जोड़ें (क्यों eigenvalues ​​वास्तविक हैं? या इसका सबसे बड़ा मतलब है?) - मेरे उत्तर का संपादन देखें।
अर्नोल्ड न्यूमैयर

खेद है कि मैंने खुद को स्पष्ट रूप से नहीं बताया। मैंने यह भी स्पष्ट रूप से नहीं बताया कि आइजेनवेल्स जटिल हैं। मैं परीक्षण कर रहा हूं कि क्या किसी भी प्रतिध्वनि में एक या अधिक का परिमाण है।
शक्ति

1
(IA)1

1
मेरे जवाब में संपादित 2 देखें
अर्नोल्ड न्यूमैयर

7

|λn1/λn|

λn1λn


1
क्या अगर | λ (n) 1) | = | λ (n) | ?
पावर

@ पॉवर, तब रेगुलर पावर इथरेशन कंवर्ट नहीं होगा। मुझे नहीं पता कि अलग-अलग आइजनवेल्यूज़ के बीच एक्सट्रपलेशन तरीकों में कितना अंतर होगा, आपको इसके लिए पेपर पढ़ना होगा।
पेड्रो

2
|λn1|=|λn|λnλn1

क्या आपके पास एक अकादमिक पेपर या पुस्तक का संदर्भ है जो इसका समर्थन करता है? इसके अलावा, क्या होगा अगर \ lambda_ {n} जटिल है?
पावर

5
यदि वहाँ अधिकतम मापांक के कई अलग-अलग eigenvalues ​​हैं, तो पावर पुनरावृत्ति केवल असाधारण परिस्थितियों में परिवर्तित होती है। यह आमतौर पर कुछ अप्रत्याशित तरीके से दोलन करता है।
अर्नोल्ड न्यूमैयर

5

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

आप यहां नए शोध के बारे में अधिक पढ़ सकते हैं:

http://math.berkeley.edu/~strain/273.F10/martinsson.tygert.rokhlin.randomized.decomposition.pdf

http://arxiv.org/abs/0909.4061

यह कोड आपके लिए यह करेगा:

http://cims.nyu.edu/~tygert/software.html

https://bitbucket.org/rcompton/pca_hgdp/raw/be45a1d9a7077b60219f7017af0130c7f43d7b52/pca.m

http://code.google.com/p/redsvd/

https://cwiki.apache.org/MAHOUT/stochastic-singular-value-decomposition.html

अगर आपकी पसंद की भाषा नहीं है, तो आप अपने यादृच्छिक एसवीडी को आसानी से रोल कर सकते हैं; इसके लिए केवल एक मैट्रिक्स वेक्टर गुणन की आवश्यकता होती है, जिसके बाद एक ऑफ-द-शेल्फ एसवीडी को कॉल किया जाता है।


4

यहां आपको जैकोबी-डेविडसन एल्गोरिथ्म का एक एल्गोरिथम परिचय मिलेगा, जो अधिकतम आईजेनवेल्यू की गणना करता है।

इस पत्र में गणितीय पहलुओं का पता लगाया जाता है। जेडी सामान्य (वास्तविक या जटिल) मेट्रिसेस की अनुमति देता है और इसका उपयोग आइगेनवैल्यू की श्रेणियों की गणना करने के लिए किया जा सकता है।

यहां आप विभिन्न पुस्तकालय कार्यान्वयन JDQR और JDQZ (एक C इंटरफ़ेस सहित, जिसे आप R से लिंक करने में सक्षम होना चाहिए) पा सकते हैं।


मुझे कोई भी साहित्य नहीं मिला है जो स्पष्ट रूप से बताता है कि जैकोबी-डेविडसन विधि एक वास्तविक, सामान्य मैट्रिक्स के लिए काम करती है।
पावर

जब तक कि हर लेख में स्पष्ट रूप से प्रतिबंध नहीं है और अभिसरण तर्क उस प्रतिबंध पर निर्भर करता है जो मायने नहीं रखता है।
मृत्युंजय

यहाँ जद का एक और स्पष्टीकरण है। माना जाता है कि मैट्रिस पूरी तरह से सामान्य हैं। कोई विशेष संरचना का शोषण नहीं किया जाता है और हरमिटियन मैट्रिस के लिए विशिष्ट परिणाम की तुलना और इसके विपरीत किया जाता है, उदाहरण के लिए, सामान्य मैट्रिसेस के लिए अभिसरण द्विघात है, लेकिन हर्मिटियन मेट्रिसेस के लिए क्यूबिक।
मृत्युंजय

इसके लिए धन्यवाद। मुझे सामान्य मैट्रिक्स के लिए कोई सी कोड नहीं मिला है, इसलिए मुझे अपना खुद का लिखना होगा। एल्गोरिदम के लिंक केवल हर्मेटियन मैट्रिसेस के लिए प्रतीत होते हैं।
पावर

1
@ शक्ति आपको साहित्य में भी नहीं मिलेगी जिसका परिणाम यह है कि मानक QR कार्यान्वयन वास्तविक, सामान्य मैट्रिक्स के लिए अभिसरण होते हैं - जो कि एक खुली समस्या है, और वास्तव में बहुत पहले नहीं जब LAPACK में QR कोड के लिए एक प्रतिरूप पाया गया था।
फेडेरिको पोलोनी

2

अपनी मूल पोस्ट में, आप कहते हैं:

"मैंने igraph R पैकेज में ARPACK इंटरफ़ेस का उपयोग करने की कोशिश की है। हालांकि, इसने मेरे एक मैट्रेस के लिए एक त्रुटि दी।"

मुझे त्रुटि के बारे में अधिक जानने में दिलचस्पी होगी। यदि आप इस मैट्रिक्स को सार्वजनिक रूप से कहीं उपलब्ध करा सकते हैं, तो मुझे इस पर ARPACK आज़माने में दिलचस्पी होगी।

ऊपर मैंने जो पढ़ा है, उसके आधार पर, मुझे उम्मीद है कि ARPACK एक विरल मैट्रिक्स के सबसे बड़े (या कुछ सबसे बड़े) आइगेनवेल्यूज़ को निकालने का एक बहुत अच्छा काम करेगा। अधिक विशिष्ट होने के लिए, मुझे उम्मीद है कि अर्नोल्डी तरीके इस मामले के लिए अच्छा काम करेंगे और निश्चित रूप से, यह ARPACK पर आधारित है।

बिजली क्षेत्र की धीमी गति से अभिसरण जब ब्याज के क्षेत्र में निकट-स्वदेशी eigenvalues ​​हैं, तो ऊपर उल्लेख किया गया था। अर्नोल्डी ने शक्ति विधि में एक के बजाय कई वैक्टर के साथ पुनरावृति करके इसे सुधार दिया।


मैं देखूंगा कि क्या मुझे अपना काम वापस मिल सकता है। मैंने एक साल पहले इस पर काम किया था।
पॉवर

0

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

यह सबसे अच्छा काम करता है जब सबसे बड़ा ईगेंवल्यू किसी भी अन्य ईजेनवल्यू की तुलना में काफी बड़ा होता है। अगर एक और eigenvalue पास सबसे बड़ा करने के लिए परिमाण में है, इस कवरेज़ की समय लगेगा, और यह निर्धारित करने के लिए अगर यह मुश्किल हो सकता है है कन्वर्ज्ड।


1
धन्यवाद डैन, हालांकि: मेरे मैट्रिसेस में, कुछ अन्य स्वदेशी समान (यदि समान नहीं हैं) सबसे बड़ा एक के रूप में होगा। क्या आपका तरीका Power Iteration और Rayleigh Quotient Iteration जैसा है? बैटरसन और स्माइली (1990) लिखते हैं कि कुछ गैर-सिम्मेट्रिक मैट्रिसेस के लिए, रेले क्वोटिएंट इटरेशन नहीं जुटेगा। बैटरसन, एस।, स्मेली, जे (1990) "रेले क्वोटिएंट इटरनेशन फॉर नॉनसिममेट्रिक मैट्रिसेस", मैथमेटिक्स ऑफ कंपटीशन, वॉल्यूम 55, अंक 191, पी 169 - 178
पावर

यदि अन्य eigenvalues ​​में सबसे बड़ा एक के रूप में एक ही परिमाण है ... तो क्या वे मूल्य भी "सबसे बड़ा एक" नहीं हैं?
एलि

@EMS: वे अभी भी "सबसे बड़े प्रतिध्वनि" होंगे, लेकिन एक से अधिक की उपस्थिति अभी भी अभिसरण को मार देगी।
दान

मैं बस सोच रहा हूं कि आप कौन सा ईजेनवल्यू चाहते हैं कि इसे किस रूप में परिवर्तित किया जाए। रेलेह भागफल / पावर विधि जैसी चीजें तब होती हैं जब एक अलग सबसे बड़ा स्वदेशी होता है। आपका सवाल सबसे बड़ा स्वदेशी खोजने के लिए कहता है, लेकिन तब ऐसा लगता है कि यह वास्तव में आपकी समस्या के लिए अच्छी तरह से परिभाषित नहीं है। मैं सिर्फ पोस्ट के शीर्षक से गुमराह हूं।
एलि

-1

R पैकेज rARPACK मेरे लिए काम करता है। और यह बहुत तेज़ प्रतीत होता है क्योंकि यह ARPACK के लिए सिर्फ एक इंटरफ़ेस है, विरल रैखिक बीजगणित के लिए मानक पैकेज (जिसका अर्थ है कुछ ईजेनवल और ईजेनवेक्टर की गणना)।


SciComp में आपका स्वागत है! जैसा कि प्रश्न में कहा गया है, ARPACK ओपी के लिए काम नहीं करता है, इसलिए यह उत्तर वास्तव में मददगार नहीं है।
क्रिश्चियन क्लैसन

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