तेजी से यह निर्धारित करना कि घने मैट्रिक्स कम रैंक का है या नहीं


13

एक सॉफ्टवेयर प्रोजेक्ट में, जिस पर मैं काम कर रहा हूं, घने निम्न-श्रेणी के मेट्रिसेस के लिए कुछ संगणनाएँ बहुत आसान हैं। कुछ समस्याओं के उदाहरणों में घने निम्न-श्रेणी के मैट्रिस शामिल हैं, लेकिन वे मुझे कारकों के बजाय पूर्ण रूप से दिए गए हैं, इसलिए मुझे रैंक और कारक मैट्रिक्स की जांच करनी होगी यदि मैं निम्न-श्रेणी की संरचना का लाभ उठाना चाहता हूं ।

प्रश्न में मेट्रिसेस आमतौर पर पूरी तरह से या लगभग पूरी तरह से घने होते हैं, जिसमें एन एक सौ से लेकर कुछ हजार तक होता है। यदि मैट्रिक्स में निम्न रैंक (5 से 10 से कम है), तो एसवीडी की गणना करना और निम्न-श्रेणी के कारक का उपयोग करना प्रयास के लायक है। हालांकि, यदि मैट्रिक्स कम रैंक का नहीं है, तो प्रयास बर्बाद हो जाएगा।

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

जिन विकल्पों पर मैंने विचार किया है उनमें एलयू या क्यूआर फैक्टराइजेशन का खुलासा करने वाला रैंक शामिल है, उसके बाद चेक के रूप में एक पूर्ण एसवीडी। क्या अन्य दृष्टिकोण हैं जिन पर मुझे विचार करना चाहिए?

जवाबों:


8

k

[R1R120R22],
R1k×kR22kएक ε कश्मीरR22εAεरैंक मैट्रिक्स से ; अन्यथा यह (संख्यात्मक त्रुटियों को छोड़कर) नहीं होना चाहिए।k

घने मैट्रिक्स के लिए इस प्रक्रिया की लागत ।एन × एनO(n2k)n×n


यह अनिवार्य रूप से दृष्टिकोण है जिसे मैंने प्रश्न में वर्णित किया है। मुझे लगता है कि वोल्फगैंग बंगर्थ का प्रस्तावित उत्तर से बेहतर कर सकता था । O(n2k)
ब्रायन बोरचर्स

7

निस्संदेह, समस्या यह है कि वास्तविक रैंक की गणना करना (उदाहरण के लिए, क्यूआर अपघटन के माध्यम से) वास्तव में मैट्रिक्स के कम-रैंक प्रतिनिधित्व की तुलना में कोई सस्ता नहीं है।

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

चाहे इसका मूल्य के बराबर हो, यह एक अच्छा प्रश्न हो सकता है, लेकिन यदि आपकी समस्याएं वास्तव में बड़ी हो जाती हैं, तो मुझे संदेह होगा कि यह भुगतान करता है।100×100


इन एल्गोरिदम के बारे में मुझे जो पता है, वे एक निम्न-श्रेणी के मैट्रिक्स का उत्पादन करते हैं जो कि दिए गए मैट्रिक्स के आदर्श में काफी करीब है। मुझे यह जानने की जरूरत है कि क्या (उदाहरण के लिए) रैंक -10 या उससे कम मैट्रिक्स है जो दिए गए मैट्रिक्स के बहुत करीब है (1.0e-10 या बेहतर की एक सापेक्ष त्रुटि कहें।)
ब्रायन बोरचर्स

हां, लेकिन आप अनुमानित (कम-आयामी) मैट्रिक्स का क्यूआर अपघटन भी कर सकते हैं और अगर उस अपघटन से पूर्ण रैंक की कमी का पता चलता है, तो आपके पास रैंक-डेफ़िशिएंट मूल मैट्रिक्स भी होगा। क्या मूल मैट्रिक्स पर क्यूआर अपघटन करने के लिए आपको कसौटी की आवश्यकता नहीं थी?
वुल्फगैंग बंगर्थ

मैं देख सकता हूं कि प्रक्षेपित मैट्रिक्स की रैंक ( की संख्या के बराबर या उससे कम है , यादृच्छिक मैट्रिक्स में पंक्तियों की संख्या A से कई गुना अधिक है) और A. रैंक की रैंक। यदि यह रैंक , तो मूल मैट्रिक्स नहीं हो सकता है रैंक या उससे कम। अगर यह से कम रैंक का है तो मैं सिर्फ बदकिस्मत हो सकता था या , से कम रैंक का था । मैट्रिक्स द्वारा की रैंक ज्ञात करना समय में किया जा सकता है । हालाँकि, यदि रैंडम मैट्रिक्स जिसे मैं गुणा करता हूँ घना है, तो उत्परिवर्तन लेता है।kk - 1 k A k k n O ( k 2 n ) A O ( k n 2 )kk1kAkknO(k2n)AO(kn2)समय। क्या उच्च क्षमता वाले रैंक को संरक्षित करने वाले विरल मैट्रेस हैं?
ब्रायन बोरचर्स

मुझे नहीं पता। मैं सहमत हूं (और इसका मतलब है) कि एल्गोरिथ्म केवल आपको बता सकता है कि क्या मैट्रिक्स पूर्ण रैंक का नहीं है। यह आपको बता नहीं सकता अगर मैट्रिक्स है पूर्ण रैंक जब तक आप सब ले यादृच्छिक दिशाओं। मेरी आशा बस यही होगी कि आपको पर्याप्त छोटी लिए उत्तर मिले जहां । कश्मीर कश्मीर एन 2 « एन 3k=nkkn2n3
वोल्फगैंग बैंगर्थ

1

कोशिश करने लायक एक और तरीका है एडाप्टिव क्रॉस अप्रूवल (ACA) का उपयोग करना। यह एक बहुत लोकप्रिय एल्गोरिथ्म है जिसमें कई कार्यान्वयन ऑनलाइन उपलब्ध हैं। संदर्भ के लिए, आप मूल पेपर देख सकते हैं:

ACA और इसकी विविधताओं (कहते हैं, ACA +, हाइब्रिड क्रॉस सन्निकटन HCA) का उपयोग विभिन्न परिदृश्यों में किया जा सकता है। आप, पहले से ही पूरे घने मैट्रिक्स की गणना करना अनुकूल में से एक है, क्योंकि आप आवश्यक होने पर अवशिष्टों की गणना करने में सक्षम होंगे।

यदि हेराक्लिस्टिक अवशिष्ट (एल्गोरिथ्म देखें) पर्याप्त है, तो मेरा मानना ​​है कि आपकी जटिलता , जहां वर्ग मैट्रिक्स का आकार है और रैंक है। ध्यान दें, कि रैंक निर्धारित ट्रंकेशन टॉलरेंस का एक कार्य है । जबकि सटीक और गारंटीकृत त्रुटि सीमा के लिए आवश्यकता होगी ।एन आर ( ϵ ) आरO(Nr)Nr(ϵ)rहे ( एन 2 आर )ϵO(N2r)


0

सरल मामले के लिए जहां मैट्रिक्स सममित रूप से सकारात्मक-निश्चित होता है, उसके 20 सबसे बड़े प्रतिरूपों की गणना करें और देखें कि क्या वे _ , या मानदंडों की तुलना करते हैं। ARPACK इसके लिए तेज़ है; अधिक महत्वपूर्ण, यह केवल एक फ़ंक्शन । तो सामान्य , (एक लिनोओप के रूप में, इसे तत्काल किए बिना) के आइजनवेल्यूज़ को देखें।)0 एक्स A0टीxAxAATA

scipy.sparse.linalg.svds यह करता है: किसी भी आकार के के लिए LinOp Arpack तक :(ATA)A

from scipy.sparse.linalg import svds
sing = svds( A, k=20, tol=1e-4, return_singular_vectors=False )  # v0=random
# runtimes on random-normal n x n:
# n = 100, 1k, 2k
#       5, 130, 770 ms
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.