विरल डेटा के साथ समीकरणों की प्रणाली को हल करना


11

मैं समीकरणों के एक सेट को हल करने का प्रयास कर रहा हूं जिसमें 40 स्वतंत्र चर (X1, ..., x40) और एक आश्रित चर (y) है। समीकरणों की कुल संख्या (पंक्तियों की संख्या) ~ 300 है, और मैं 40 गुणांक के सेट के लिए हल करना चाहता हूं जो y और अनुमानित मूल्य के बीच कुल योग के वर्ग त्रुटि को कम करता है।

मेरी समस्या यह है कि मैट्रिक्स बहुत विरल है और मुझे विरल डेटा वाले समीकरणों की प्रणाली को हल करने का सबसे अच्छा तरीका नहीं पता है। डेटासेट का एक उदाहरण नीचे दिखाया गया है:

   y    x1  x2 x3 x4 x5 x6 ... x40
87169   14  0  1  0  0  2  ... 0 
46449   0   0  4  0  1  4  ... 12
846449  0   0  0  0  0  3  ... 0
....

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

क्या कोई अलग-अलग तरीकों या तकनीकों का सुझाव दे सकता है जो विरल डेटा वाले समीकरणों के एक समूह को हल करने में सक्षम हैं।


2
शीर्षक में टाइपो: स्पेयर => विरल।
2:00 पर अलेक्सांद्र ब्लेक ऑग

जवाबों:


11

अगर मैं आपको सही तरीके से समझूं, तो यह विरल डेटा ( विरल प्रतिगमन ) के साथ कई रैखिक प्रतिगमन का मामला है । यह मानते हुए, मुझे आशा है कि आप निम्नलिखित संसाधनों को उपयोगी पाएंगे ।

1) एनसीएसयू व्याख्यान एल्गोरिदम, नोट्स, सूत्र, ग्राफिक्स और साहित्य के संदर्भों के अवलोकन के साथ विरल प्रतिगमन पर स्लाइड करता है: http://www.stat.ncsu.edu/people/zhou/courses/st810/nots/lect23sparse.pdf

2) Rपारिस्थितिकी तंत्र कई पैकेज प्रदान करता है , विरल प्रतिगमन विश्लेषण के लिए उपयोगी, जिसमें शामिल हैं:

3) एक के साथ एक ब्लॉग पोस्ट विरल प्रतिगमन समाधान के उदाहरण , के आधार पर SparseM: http://aleph-nought.blogspot.com/2012/03/multiple-linear-regression-with-sparse.html

4) आर में विरल मैट्रिसेस का उपयोग करने पर एक ब्लॉग पोस्ट , जिसमें उपयोग करने पर एक प्राइमर शामिल है glmnet: http://www.johnmyleswhite.com/notebook/2011/10/31/use-sparse-matrices-in-r

5) अधिक उदाहरण और विषय पर कुछ चर्चा StackOverflow पर देखी जा सकती है : /programming/3169371/large-scale-regression-in-r-with-a-parparse-feature-matrix

अद्यतन (आपकी टिप्पणी के आधार पर):

यदि आप बाधाओं के साथ एक एलपी समस्या को हल करने की कोशिश कर रहे हैं, तो आप इस सैद्धांतिक पेपर को उपयोगी पा सकते हैं : http://web.stanford.edu/group/SOL/papers/gmsw84.pdf

इसके अलावा, आर पैकेज की जाँच limSolve : http://cran.r-project.org/web/packages/limSolve । और, सामान्य तौर पर, CRAN टास्क व्यू "अनुकूलन और गणितीय प्रोग्रामिंग" में पैकेज देखें : http://cran.r-project.org/web/views/Optimization.html

अंत में, "विज्ञान और इंजीनियरिंग में संख्यात्मक विश्लेषण के लिए आर का उपयोग" पुस्तक की जाँच करें (विक्टर ए। ब्लूमफील्ड द्वारा)। इसमें समीकरणों को हल करने की एक धारा है, जिसमें विरल मैट्रिस (धारा 5.7, पृष्ठ 99-104) का प्रतिनिधित्व किया गया है , जिसमें उपर्युक्त कुछ पैकेजों के आधार पर उदाहरण शामिल हैं: http://books.google.com/books? आईडी = 9ph_AwAAQBAJ और स्नातकोत्तर = PA99 और रसोई गैस = PA99 और डीक्यू = r + limsolve + विरल + मैट्रिक्स और स्रोत = बीएल और ओ टी एस = PHDE8nXljQ और sig = sPi4n5Wk0M02ywkubq7R7KD_b04 & hl = hi & सा = एक्स और Ei = FZjiU-ioIcjmsATGkYDAAg और वेद = 0CDUQ6AEwAw # v = onepage & q = आर% 20limsolve% 20sparse% 20matrix & f = झूठी


3
शानदार जवाब के लिए धन्यवाद! मैं समस्या को विरल प्रतिगमन के रूप में वर्गीकृत करने में संकोच कर रहा हूं क्योंकि मैं वास्तव में मॉडल और भविष्यवाणी करने की कोशिश नहीं कर रहा हूं, बल्कि गुणांक के एक सेट के लिए हल करता हूं। जेनेटिक एल्गोरिदम का उपयोग करने का कारण यह है कि मैं समीकरण पर बाधाओं को भी नियोजित कर सकता हूं। यदि कोई अन्य उत्तर नहीं आता है तो मैं इसे सहर्ष स्वीकार करूंगा।
माइक 1886

1
@ mike1886: मेरी खुशी! मैंने आपकी टिप्पणी के आधार पर अपना उत्तर अपडेट कर दिया है। आशा है ये मदद करेगा।
विलेना बेलेख ऑग

7

हांग्जो का जवाब पूरी तरह से सही है।

हालाँकि, जिस तरह से प्रश्न का अर्थ लगाया गया है कि यह एक सीधा साधारण न्यूनतम वर्ग प्रतिगमन प्रश्न है: एक आश्रित चर और भविष्यवक्ताओं के रैखिक संयोजन के बीच चुकता अवशिष्टों के योग को कम करना।

अब, जबकि आपके डिज़ाइन मैट्रिक्स में कई शून्य हो सकते हैं, जैसे कि आपका सिस्टम अधिक बड़ा नहीं है: 40 भविष्यवाणियों पर 300 अवलोकन मध्यम आकार से अधिक नहीं हैं। आप विरल डेटा के लिए किसी विशेष प्रयास के बिना आर का उपयोग करके इस तरह के एक प्रतिगमन को चला सकते हैं। बस lm()कमांड का उपयोग करें ("रैखिक मॉडल" के लिए)। ?lmसहायता पृष्ठ देखने के लिए उपयोग करें । और ध्यान दें कि lmडिफ़ॉल्ट रूप से चुपचाप अपने डिजाइन मैट्रिक्स (अवरोधन) में एक निरंतर कॉलम जोड़ देगा - -1इसे दबाने के लिए अपने सूत्र के दाहिने हाथ की तरफ शामिल करें। कुल मिलाकर, अपने सभी डेटा (और कुछ नहीं) को एक data.frameकहा जाता हैfoo , तो आप ऐसा कर सकते हैं:

model <- lm(y~.-1,data=foo)

और फिर आप पैरामीटर अनुमान आदि को इस तरह देख सकते हैं:

summary(model)
residuals(model)

अगर आपका सिस्टम ज्यादा है बड़ा है, तो 10,000 टिप्पणियों और सैकड़ों भविष्यवक्ताओं के आदेश पर कहें, विशेष विलेय सॉल्वर्स को देखते हुए, जैसा कि हांग्जो के जवाब से समझ में आ सकता है।

अंत में , आपने हांग्जो के उत्तर के लिए अपनी टिप्पणी में , अपने समीकरण पर बाधाओं का उल्लेख किया। यदि वह वास्तव में आपका प्रमुख मुद्दा है, तो आर। में व्यक्तिगत रूप pcls()से mgcvपैकेज में विवश कम से कम वर्गों की गणना करने के तरीके हैं । शायद आप अपने प्रश्न को संपादित करना चाहते हैं कि आप किस प्रकार की बाधाओं (बॉक्स की कमी, गैर-सक्रियता की कमी, अभिन्नता की कमी, रैखिक बाधाओं, ...) का सामना कर सकते हैं?


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