कुशल ऑनलाइन रैखिक प्रतिगमन


53

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

मैं एक साधारण रैखिक बहुभिन्नरूपी प्रतिगमन मॉडल, यानी मान रहा हूँ

y=Ax+b+e

रेखीय प्रतिगमन मापदंडों और लगातार अपडेट होने वाले अनुमान बनाने के लिए सबसे अच्छा एल्गोरिथ्म क्या है ?बीAb

आदर्श रूप में:

  • मैं एक एल्गोरिथ्म चाहूंगा जो प्रति अपडेट सबसे अधिक स्थान और समय जटिलता हो, जहां स्वतंत्र चर की आयाम ( ) है और आश्रित चर ( ) की )।एन एक्स एम yO(NM)NxMy
  • मैं यह निर्धारित करने के लिए कुछ पैरामीटर निर्दिष्ट करने में सक्षम होना चाहता हूं कि प्रत्येक नए नमूने द्वारा मापदंडों को कितना अपडेट किया जाता है, जैसे 0.000001 का मतलब होगा कि अगला नमूना पैरामीटर अनुमान का एक मिलियनवां भाग प्रदान करेगा। यह सुदूर अतीत में नमूनों के प्रभाव के लिए किसी तरह का घातीय क्षय देगा।

2
देखो (1) लचीले रेखीय प्रतिगमन, (2) कलमन फ़िल्टर।
जस

जवाबों:


31

मैनडॉनल्ड्स एक क्रमिक विधि का वर्णन करता है जो Givens पर आधारित है । (एक गिवन्स रोटेशन दो वैक्टर का एक ऑर्थोगोनल परिवर्तन है जो एक वैक्टर में दिए गए प्रवेश को शून्य करता है।) पिछले चरण में आपने डिजाइन मैट्रिक्स को त्रिभुज मैट्रिक्स माध्यम से विघटित किया है। ऑर्थोगोनल परिवर्तन ताकि । (यह त्रिकोणीय मैट्रिक्स से प्रतिगमन परिणाम प्राप्त करना बहुत तेज़ और आसान है।) एक नई पंक्ति नीचे सटे होने पर , आप एक गैर-रोस्टर पंक्ति द्वारा प्रभावी रूप से , भी, कहतेटी क्यू क्यू एक्स = ( टी , 0 ) ' वी एक्स ( टी , 0 ) ' टी टी टी टी टी क्यूXTQQX=(T,0)vX(T,0)t। कार्य इस पंक्ति को शून्य करना है जबकि प्रविष्टियों को विकर्ण की स्थिति में रखना है । गिवेंस रोटेशन का एक अनुक्रम यह करता है: की पहली पंक्ति के साथ रोटेशन के पहले तत्व शून्य ; फिर दूसरी पंक्ति के के दूसरे तत्व के साथ रोटेशन , और इसी तरह। इसका प्रभाव घूर्णन की एक श्रृंखला द्वारा को प्रभावित करना है , जो इसकी रूढ़िवादिता को नहीं बदलता है।TTtTQ

जब डिज़ाइन मैट्रिक्स में कॉलम होता है (जो कि वेरिएबल्स पर स्थिर होता है) के मामले में होता है , तो आवश्यक घुमावों की संख्या से अधिक नहीं होती है और प्रत्येक घुमाव में दो -vectors बदल जाते हैं। भंडारण के लिए आवश्यक है । इस प्रकार इस एल्गोरिथ्म में समय और स्थान दोनों में कम्प्यूटेशनल लागत है।p p + 1 p + 1 T O ( ( p + 1 ) 2 ) O ( ( p + 1 ) 2 )p+1pp+1p+1TO((p+1)2)O((p+1)2)

एक समान दृष्टिकोण आपको एक पंक्ति को हटाने के प्रतिगमन पर प्रभाव को निर्धारित करने देता है। मेनडॉनल्ड सूत्र देता है; तो Belsley, Kuh, और वेल्श करते हैं । इस प्रकार, यदि आप प्रतिगमन के लिए एक चलती हुई खिड़की की तलाश कर रहे हैं, तो आप एक गोलाकार बफर के भीतर खिड़की के लिए डेटा को बनाए रख सकते हैं, नए डेटा को स्थगित कर सकते हैं और प्रत्येक अपडेट के साथ पुराने को छोड़ सकते हैं। यह अद्यतन समय को दोगुना करता है और चौड़ाई की विंडो के लिए अतिरिक्त संग्रहण की आवश्यकता । ऐसा प्रतीत होता है कि प्रभाव पैरामीटर का एनालॉग होगा।k 1 / kO(k(p+1))k1/k

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

संदर्भ

जेएच मेनडॉनाल्ड, सांख्यिकीय संगणना। जे। विली एंड संस, 1984. अध्याय 4।

डीए बेल्स्ले, ई। कुह, आरई वेल्श, रिग्रेशन डायग्नोस्टिक्स: इन्फ्लुएंशियल डेटा और कोलिनियरिटी के स्रोतों की पहचान करना। जे। विली एंड संस, 1980।


1
क्या मेनडॉनल्ड विधि जेंटलमैन के एल्गोरिथ्म के समान या उसी से संबंधित है? jstor.org/stable/2347147
21

6
उस स्थिति में एलन मिलर jstor.org/stable/2347583 द्वारा एक्सटेंशन भी देखें । उनके फोरट्रान सॉफ्टवेयर साइट का एक संग्रह अब jblevins.org/mirror/amiller
onestop

5
पी के नीचे एक स्पष्ट एल्गोरिथ्म दिखाई देता है। 4 saba.kntu.ac.ir/eecd/people/aliyari/NN%20%20files/rls.pdf । यह Googling द्वारा पाया जा सकता है "पुनरावर्ती कम से कम वर्ग।" यह जेंटलमैन / मेनडॉनल्ड दृष्टिकोण पर एक सुधार की तरह नहीं दिखता है, लेकिन कम से कम यह स्पष्ट रूप से और स्पष्ट रूप से वर्णित है।
whuber

2
अंतिम लिंक उस विधि की तरह दिखता है जिसे मैं सुझाने जा रहा था। उनके द्वारा उपयोग की जाने वाली मैट्रिक्स पहचान को अन्य स्थानों में शर्मन - मॉरिसन - वुडबरी पहचान के रूप में जाना जाता है। यह लागू करने के लिए भी संख्यात्मक रूप से काफी कुशल है, लेकिन एक Givens रोटेशन के रूप में स्थिर नहीं हो सकता है।
कार्डिनल

2
@suncoolsu हम्म ... जब मैंने इसका इस्तेमाल करना शुरू किया तो मेनडॉनल्ड की किताब नव प्रकाशित हुई थी।
whuber

8

मुझे लगता है कि एक राज्य-अंतरिक्ष मॉडल में अपने रैखिक प्रतिगमन मॉडल को फिर से बनाना आपको वह देगा जो आप बाद में हैं। यदि आप R का उपयोग करते हैं, तो आप पैकेज dlm का उपयोग करना चाहते हैं और पेट्रीस एट अल द्वारा साथी पुस्तक पर एक नज़र डाल सकते हैं ।


शायद मैं उलझन में हूँ लेकिन यह एक समय श्रृंखला मॉडल को संदर्भित करता है? मेरा मॉडल वास्तव में सरल है कि नमूने एक समय श्रृंखला नहीं हैं (प्रभावी रूप से वे स्वतंत्र हैं (x-> y) नमूने, वे समय के साथ बड़े मात्रा में जमा होते हैं)
mikera

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

7

तुम हमेशा वर्गों की राशि पर ढाल मूल प्रदर्शन कर सकते हैं लागत अपने मॉडल के मापदंडों wrt । बस इसे ढाल लें लेकिन बंद फॉर्म समाधान के लिए न जाएं बल्कि केवल खोज दिशा के लिए।EW

चलो होना प्रशिक्षण नमूना i'th दिए गए मापदंडों की लागत । J'th पैरामीटर के लिए आपका अपडेट तब हैडब्ल्यूE(i;W)W

WjWj+αE(i;W)Wj

जहां एक चरण दर है, जिसे आपको क्रॉस सत्यापन या अच्छे उपाय के माध्यम से चुनना चाहिए।α

यह बहुत कुशल है और जिस तरह से तंत्रिका नेटवर्क को आमतौर पर प्रशिक्षित किया जाता है। आप समानांतर में बहुत सारे नमूने संसाधित कर सकते हैं (कहते हैं, 100 या तो) कुशलता से।

बेशक अधिक परिष्कृत अनुकूलन एल्गोरिदम (गति, संयुग्म ढाल, ...) लागू किया जा सकता है।


इस पेपर के बहुत समान लगता है । eprints.pascal-network.org/archive/00002147/01/… । इसे जुबेटस नामक एक ओपन सोर्स प्रोजेक्ट में लागू किया गया है।
saccharine

3

हैरानी की बात यह है कि अब तक किसी और ने इस पर हाथ नहीं उठाया। रैखिक प्रतिगमन में एक द्विघात उद्देश्य फ़ंक्शन है। तो, किसी भी शुरुआती बिंदु से एक न्यूटन रफसन कदम आपको सीधे ऑप्टिमा की ओर ले जाता है। अब, मान लीजिए कि आपने पहले से ही अपना रेखीय प्रतिगमन किया है। उद्देश्य समारोह है:

L(β)=(yXβ)t(yXβ)
ढाल और hessian:
L(β)=2Xt(yXβ)
2L(β)=XtX

अब, आपने कुछ पिछले डेटा प्राप्त किए और एक रैखिक प्रतिगमन किया और अपने मापदंडों ( ) के साथ बैठे हैं । इस बिंदु पर ढाल परिभाषा के अनुसार शून्य है। हेसियन जैसा ऊपर दिया गया है। एक नया डेटा बिंदु ( ) आता है। आप बस नए बिंदु के लिए ग्रेडिएंट की गणना करते हैं:βxnew,ynew

Lnew(β)=2xnew(ynewxnewTβ)
और वह आपका समग्र ढाल बन जाएगा (चूंकि मौजूदा डेटा से ढाल शून्य है) । नए डेटा बिंदु के लिए हेसियन है:

2Lnew=xnewxnewT

इसे ऊपर दिए गए पुराने हेस्सियन में जोड़ें। फिर, बस एक न्यूटन रैपसन कदम उठाएं।

βnew=βold+(2L)1Lnew

और आपने कल लिया।


1
मुझे इसकी सादगी के लिए विचार पसंद है लेकिन (ए) पाठकों को भ्रमित न करने के लिए, " " की स्पष्ट परिभाषा देखना पसंद करेंगे और (बी) का मानना ​​है कि आपको ढाल को सही ढंग से गणना करने की आवश्यकता है (या शो) क्यों 2 के एक कारक से दूर जा रहा है) कोई फर्क नहीं पड़ता। यदि आप एक छोटे से उदाहरण दे सकते हैं, तो यह सही होगा। बड़े कम्प्यूटेशनल प्रयास का अनुमान लगाना सार्थक होगा। हेस्सियन को समय निकालने में असमर्थ है ? Lnewp,O(p3)
whuber

धन्यवाद, आज थोड़ी देर बाद और विवरण जोड़ेंगे। हाँ, हेसियन में प्रवेश करने से बड़े लिए । आप भी कोशिश कर सकते हैं और हेसियन व्युत्क्रम को बनाए रख सकते हैं और इसे सीधे बिजली श्रृंखला ( ) का उपयोग करके अपडेट कर सकते हैं । यदि आपके पास एक लाख पैरामीटर हैं, तो ग्रेडिएंट डिसेंट कमोबेश आपका एकमात्र विकल्प है। O(p3)p(IA)1=I+A+A2+
ryu576

2

मानक कम-वर्ग फिट प्रतिगमन गुणांक देता है

β=(XTX)1XTY

जहां X, N डेटा बिंदुओं में से प्रत्येक के लिए M मानों का एक मैट्रिक्स है, और आकार में NXM है। Y आउटपुट का एक NX1 मैट्रिक्स है। पाठ्यक्रम के गुणांकों के एक MX1 मैट्रिक्स है। (यदि आप एक अवरोधन चाहते हैं तो हमेशा x का एक सेट हमेशा 1 के बराबर करें)β

संभवतः इसे ऑनलाइन करने के लिए आपको केवल और का ट्रैक रखना होगा , इसलिए एक MXM मैट्रिक्स और एक MX1 मैट्रिक्स। हर बार जब आप एक नया डेटा बिंदु प्राप्त करते हैं, तो आप उन तत्वों को अपडेट करते हैं, और फिर फिर से परिकलित करते हैं, जो आपके लिए MXM मैट्रिक्स व्युत्क्रम और MXM मैट्रिक्स और MX1 मैट्रिक्स के गुणन में खर्च होता है।XTXXTYM2+Mβ

उदाहरण के लिए, यदि M = 1 है, तो एक गुणांक है

β=i=1Nxiyii=1Nxi2

इसलिए हर बार जब आप एक नया डेटा पॉइंट प्राप्त करते हैं तो आप दोनों रकमों को अपडेट करते हैं और अनुपात की गणना करते हैं और आपको अपडेटेड गुणांक प्राप्त होता है।

यदि आप पहले के अनुमानों को ज्यामितीय रूप से कम करना चाहते हैं तो मुझे लगता है कि आप नए शब्द जोड़ने से पहले हर बार और को सकते हैं, जहां कुछ छोटी संख्या है।X T Y ( 1 - λ ) λXTXXTY(1λ)λ


2
इस साधारण मामले को स्पष्ट करते हुए देखना अच्छा है। क्या आपने देखा, हालांकि, यह सवाल विशेष रूप से बहुभिन्नरूपी प्रतिगमन के बारे में पूछता है ? उस मामले में के भाजक को अपडेट करना इतना आसान नहीं है ! β
whuber

मुझे लगता है कि मेरा उत्तर अभी भी काम करता है: यानी आप mXm मैट्रिक्स का ट्रैक रखने की जरूरत है और MX1 मैट्रिक्स । उन मैट्रिक्स का प्रत्येक तत्व एम = 1 उदाहरण में एक योग है। या क्या मैं कुछ न कुछ भूल रहा हूं? एक्स टी वाईXTXXTY
मार्क हिगिंस

6
हां: मैट्रिक्स उत्पाद की गणना करने और वेक्टर पर मैट्रिक्स को लागू करने के अलावा, अब आपको प्रत्येक चरण पर को पलटना । वो तो महंगा है। ऑनलाइन एल्गोरिदम के लिए संपूर्ण बिंदु सस्ते अद्यतन प्रक्रियाओं द्वारा थोक महंगे चरणों को प्रतिस्थापित करना है। XX
whuber

1
@whuber वैसे, एक बदलते मैट्रिक्स और वेक्टर लिए का अनुमान लगाने के लिए एक तेज़, ऑनलाइन तरीका Schrdolph, NN (2002) द्वारा दिया गया है। द्वितीय-क्रम ढाल वंश के लिए फास्ट वक्रता मैट्रिक्स-वेक्टर उत्पाद। अनिवार्य रूप से, आप , और को । C x z t + 1 = z t + x - C z t z C - 1 x t C1xCxzt+1=zt+xCztzC1xt
नील जी

1

जब आप चीजों को थोड़ा-थोड़ा लिखते हैं तो समस्या आसानी से हल हो जाती है:

य = य

एक्स = [एक्स, 1]

फिर

Y = ए * एक्स

गणना करके एक समय-समाधान पाया जाता है

वी = एक्स '* एक्स

तथा

सी = एक्स '* वाई

ध्यान दें V का आकार N-by-N और C का आकार N-by-M होना चाहिए। आपके द्वारा खोजे जा रहे पैरामीटर इसके बाद दिए गए हैं:

ए = निमंत्रण (वी) * सी

चूँकि V और C दोनों की गणना आपके डेटा के हिसाब से की जाती है, आप हर नए नमूने पर A की गणना कर सकते हैं। हालांकि इसमें O (N ^ 3) की समय जटिलता है।

चूंकि V वर्ग और अर्ध-निश्चित सकारात्मक है, एक LU अपघटन मौजूद है, जो V को संख्यात्मक रूप से अधिक स्थिर बनाता है। मैट्रिक्स के व्युत्क्रम में रैंक -1 अपडेट करने के लिए एल्गोरिदम हैं। उन लोगों को ढूंढें और आपके पास जिस कुशल कार्यान्वयन की तलाश है, वह आपके पास होगा।

रैंक -1 अपडेट एल्गोरिदम को गोलब और वैन लोन द्वारा "मैट्रिक्स संगणना" में पाया जा सकता है। यह कठिन सामग्री है, लेकिन इसमें ऐसे एल्गोरिदम का व्यापक अवलोकन है।

नोट: ऊपर दी गई विधि प्रत्येक चरण में कम से कम वर्ग का अनुमान देती है। आप आसानी से एक्स और वाई के अपडेट में वेट जोड़ सकते हैं। जब एक्स और वाई के मूल्य बहुत बड़े हो जाते हैं, तो उन्हें परिणाम को प्रभावित किए बिना, एक एकल स्केलर द्वारा बढ़ाया जा सकता है।

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