फिट टुकड़ा रैखिक डेटा


18

टुकड़ावार रैखिक लेकिन शोर डेटा फिट करने के लिए एक मजबूत तरीका क्या है?

मैं एक संकेत माप रहा हूं, जिसमें कई लगभग रैखिक खंड हैं। मैं संक्रमणों का पता लगाने के लिए डेटा पर कई लाइनों को परमाणु रूप से फिट करना चाहता हूं।

डेटासेट में कुछ हजार बिंदु होते हैं, जिसमें 1-10 खंड होते हैं और मैं खंडों की संख्या जानता हूं।

यह एक उदाहरण है कि मैं अपने आप क्या करना चाहता हूं।

यहाँ छवि विवरण दर्ज करें


मुझे नहीं लगता कि इस सवाल का उचित जवाब दिया जा सकता है जब तक कि आप हमें यह न बताएं कि आप ब्रेक-पॉइंट के स्थानों को कितनी सही तरह से जानना चाहते हैं, एक रेखीय खंड की सबसे छोटी लंबाई के लिए आपका अनुमान क्या है और एक ठेठ में कितने नमूने हैं संक्रमण क्षेत्र। यदि आपके चित्र में क्षैतिज अक्ष लेबल संख्याएँ हैं, तो, से तक की अवधि में दो संक्रमणों के साथ , कार्य अधिक कठिन है अगर सीधी-रेखा वाले खंड लंबी अवधि के हों ( नमूने)। x [ ]x[5]x[0]
दिलीप सरवटे

@DilipSarwate मैंने आवश्यकताओं के साथ प्रश्न को अपडेट किया (bss xaxis मैग्नेटिक फील्ड इन टेसला है)
P3trus

जवाबों:


12

मैंने दो दृष्टिकोणों की कोशिश की, भोली (केवल 3 खंडों का उपयोग करके)। निश्चित रूप से वहाँ कट्टरपंथी तरीके होंगे।

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

यहाँ छवि विवरण दर्ज करें

    एक सामान्य उद्देश्य न्यूनतम का उपयोग कर एक टुकड़ा रैखिक रैखिक मॉडल फिट। खंडों की निरंतरता को लागू करना आसान है। दिलचस्प बात यह है कि अवशेषों और अन्य संपत्तियों के परीक्षण से स्वचालित रूप से सेगमेंट की संख्या निर्धारित करने के लिए पर्याप्त जानकारी मिल सकती है - हालांकि मैंने इसकी कोशिश नहीं की है। यही कारण है कि यह गणितज्ञ में कैसा दिखता है:

यहाँ छवि विवरण दर्ज करें


बहुत अच्छा जवाब लगता है। योगदान के लिए धन्यवाद।
जेसन आर

7

एक्स[n]

  • एक्स[n]y[n]

    y[n]={1,अगर |(एक्स[n+1]-एक्स[n])-(एक्स[n]-एक्स[n-1])|<ε,0,अन्यथा।
    εएक्स[n-1],एक्स[n],एक्स[n+1](n-1,एक्स[n-1])(n,एक्स[n])(n,एक्स[n])(n+1,एक्स[n+1])
  • y[n]1011ε

  • y[n]एक्स[3]एक्स[88]एक्स[94]एक्स[120]एक्स[129], और इसी तरह। जहाँ वे अन्तर्विभाजित करते हैं, उसका पता लगाने के लिए दाएं और B को बाईं ओर बढ़ाएं; B को दाईं ओर और C को बाईं ओर विस्तारित करें, ताकि यह पता लगाया जा सके कि वे कहां से बिगाड़ते हैं, आदि बधाई हो, अब आपके पास अपने डेटा के लिए एक निरंतर और टुकड़े-टुकड़े रैखिक मॉडल है।


पूरी तरह से मेरा जवाब चुरा लिया! =)
फ़ोनॉन

विचार के प्रति रूचि लेकिन दु: ख के कारण मुझे अच्छे परिणाम नहीं मिले।
P3trus

1
वह अभिव्यक्ति जिसकी मैग्नेट की तुलना एप्सिलॉन से की जा रही है, वास्तव में डेटा के दूसरे व्युत्पन्न के लिए एक अनुमान है। तीन से अधिक बिंदुओं का उपयोग करके इसे गणना करने के अन्य तरीके हैं जो शोर के रूप में ज्यादा प्रतिक्रिया नहीं करते हैं। सविट्ज़की-गोलय को देखो।
डैरनडब्ल्यू

4

(वर्षों बाद) टुकड़ा-रेखीय कार्य डिग्री 1 के विभाजन होते हैं, जो कि अधिकांश स्पलाइन फ़िटर को करने के लिए कहा जा सकता है। उदाहरण के लिए scipy.interpolate.UnivariateSpline को एक स्मूथिंगk=1 पैरामीटर के साथ चलाया जा सकता है s, जिसके साथ आपको खेलना होगा - scipy-interpolation-with-univariate-splines देखें
मतलाब में, देखें कि कैसे-कैसे चुनें-नॉट्स

जोड़ा गया: इष्टतम समुद्री मील आसान नहीं है, क्योंकि कई स्थानीय ऑप्टिमा हो सकते हैं। इसके बजाय, आप UnivariateSpline को एक लक्ष्य देते हैं s, त्रुटि का योग ^ 2, और इसे समुद्री मील की संख्या निर्धारित करने दें। फिटिंग के बाद, get_residual()त्रुटि ^ 2, और get_knots()समुद्री मील की वास्तविक राशि मिलेगी । sविशेष रूप से उच्च शोर में एक छोटा सा परिवर्तन समुद्री मील बदल सकता है - ymmv।
भूखंड विभिन्न के लिए एक यादृच्छिक टुकड़ा-रैखिक-समारोह + शोर से फिट बैठता है s

टुकड़ा करने योग्य स्थिरांक फिटिंग के लिए, चरण पहचान देखें । क्या इसका उपयोग pw रैखिक के लिए किया जा सकता है? पता नहीं; शोर डेटा को अलग करके शुरू करने से शोर, गलत बढ़ जाएगा।

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

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


मार्च 2014 को जोड़ा गया: इस तरह के नेस्टेड उपप्रकारों के साथ समस्याओं के लिए डायनामिक प्रोग्रामिंग एक सामान्य तरीका है:

optimal k lines
    = optimal k - 1 lines up to some x
    + cost of the last line x to the end
over x  (all x in theory, nearby x in practice)

डायनेमिक प्रोग्रामिंग बहुत चालाक है, लेकिन क्या यह इस कार्य के लिए क्रूर बल + उत्तराधिकारियों को हरा सकता है? एल्गोरिथ्म के लिए एमआईटी 6.006 इंट्रो के
तहत एरिक डेमनी द्वारा उत्कृष्ट पाठ्यक्रम नोट्स देखें, गूगल खंडित रैखिक प्रतिगमन भी जॉन हेनरी सिंड्रोम।


यहाँ छवि विवरण दर्ज करें


समस्या, कम से कम डरपोक के साथ समुद्री मील की स्थिति है। scipy समान दूरी वाले समुद्री मील का उपयोग करता है।
P3trus

@ P3trus, एक शुरुआत के लिए हाँ, लेकिन फिर वे स्थानांतरित कर सकते हैं - साजिश देखें। वैसे भी यह कुल त्रुटि को लक्षित करता है, नॉट्स को।
डेनिस

@ P3trus क्या आपने मल्टीवेरेट रिग्रेशन स्प्लिन विधि का उपयोग करने की कोशिश की है जो स्वतः ही ब्रेकपॉइंट्स का चयन करता है? cs.rtu.lv/jekabsons/regression.html
अतुल इंगल

@Atul Ingle, afaik breakpoint / knot चयन एक ही समस्या है, जो कुछ भी फिटर से। यदि आप R / प्रतिगमन लोगों से उसके लिए अलग एल्गोरिदम के बारे में जानते हैं, तो क्या आप कृपया एक लिंक पोस्ट कर सकते हैं?
डेनिस

आर / मैटलैब में पैकेज की तलाश कर रहे हैं जो अनुकूली प्रतिगमन विभाजन करते हैं? यहाँ: cran.r-project.org/web/packages/earth/index.html cran.r-project.org/web/packages/mda/index.html और Matlab में ARESLab कि मैंने पहले से ही इसके लिए लिंक पोस्ट किया है।
अतुल इंगले

0

व्युत्पन्न लें और लगभग स्थिर मूल्य के क्षेत्रों की तलाश करें। आपको उन क्षेत्रों के लिए खोज करने के लिए एल्गोरिथ्म बनाने की आवश्यकता होगी जो आदर्श रूप से +/- ढलान के कुछ स्तर के साथ हैं और जो आपको उस अनुभाग के लिए रेखा का ढलान देगा। आप अनुभागीय वर्गीकरण करने से पहले कुछ चौरसाई करना चाहते हैं, जैसे कि फिसलने का मतलब। अगला कदम वाई-चौराहे को प्राप्त करना होगा, जो उस बिंदु पर तुच्छ होना चाहिए।


व्युत्पन्न शोर हो सकता है। मुझे नहीं लगता कि मैं इसकी सिफारिश करूंगा।
रॉबर्ट ब्रिस्टो-जॉनसन

0

L1 ट्रेंड फ़िल्टर का उपयोग करना एक और विचार है:

कागज़

ऑनलाइन उदाहरण


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