समय-श्रृंखला वर्गीकरण - बहुत खराब परिणाम


11

मैं एक समय श्रृंखला वर्गीकरण समस्या पर काम कर रहा हूं जहां सेल फोन खाते के पहले 21 दिनों के लिए इनपुट समय श्रृंखला आवाज उपयोग डेटा (सेकंड में) है। संबंधित लक्ष्य चर 35-45 दिन की सीमा में उस खाते को रद्द किया गया है या नहीं। तो यह एक द्विआधारी वर्गीकरण समस्या है।

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

मेरी अगली रणनीति मेरे प्रशिक्षण सेट में नकारात्मक उदाहरणों की निगरानी करना थी क्योंकि उनमें से बहुत कम थे। इसके परिणामस्वरूप अधिक सही रद्दीकरण भविष्यवाणी हुई लेकिन अधिक झूठी-सकारात्मकता की कीमत पर।

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

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


1
शुरुआत के लिए, मैं आपको निम्नलिखित के वेरिएंट की कोशिश करने की सलाह देता हूं। 1। उपयोग डेटा को घंटे / दिनों के आधार पर अलग करें। 2. अपने प्रशिक्षण डेटा से, दो समूहों के भीतर पैटर्न देखने के लिए इन समय-श्रृंखला के ओवरले भूखंड। 3. विभिन्न समय-श्रृंखला / प्रतिगमन मॉडल का अन्वेषण करें जो आपके डेटा को अच्छी तरह से फिट करते हैं। 4. मॉडल गुणांक का उपयोग अपने वर्गीकरण के लिए सुविधाओं के रूप में करें।
ramhiser

मुझे आपकी सुविधा निष्कर्षण तकनीक पसंद है। मैं कोशिश करुंगा। मुझे विश्वास हो गया है कि मेरा डेटा पैटर्न खोजने के लिए बहुत कम है, लेकिन कौन जानता है। धन्यवाद!
14:18 पर user1893354

जवाबों:


13

मुझे दूरी के मीट्रिक के रूप में गतिशील समय के साथ KNN को लागू करने में बहुत अच्छी सफलता मिली है।

मेरा शोध (पीडीएफ) बताता है कि इस दृष्टिकोण को हराना बहुत मुश्किल है। नीचे योजनाबद्ध पर KNN और DTW के अपने अजगर कार्यान्वयन से है GitHub । या आईपीथॉन नोटबुक में देखें

KNN और DTW

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


4
क्या आप अपने शोध पत्र का लिंक अपडेट कर सकते हैं?
तिलाप्रिमेरा


10

समय श्रृंखला वर्गीकरण के लिए दो दृष्टिकोण

वर्गीकरण कार्यों के लिए अस्थायी संरचित इनपुट से निपटने के दो तरीके हैं:

  1. समर्पित टाइम सीरीज़ मॉडल: मशीन लर्निंग एल्गोरिदम सीधे समय श्रृंखला को शामिल करता है। मैं इस श्रेणी में DTW मॉडल के साथ KNN को गिनता हूं।
  2. फ़ीचर आधारित अप्रोच: यहाँ टाइम सीरीज़ को दूसरे से मैप किया जाता है, संभवतः कम डायमेंशनल, रिप्रेजेंटेशन। इसका मतलब यह है कि सुविधा निष्कर्षण एल्गोरिथ्म समय श्रृंखला के औसत या अधिकतम मूल्य जैसी विशेषताओं की गणना करता है। सुविधाओं को फिर एक "सामान्य" मशीन लर्निंग के लिए एक फीचर मैट्रिक्स के रूप में पास किया जाता है जैसे कि एक तंत्रिका नेटवर्क, यादृच्छिक वन या समर्थन वेक्टर मशीन। इस दृष्टिकोण से परिणामों की बेहतर व्याख्या का लाभ मिलता है। इसके अलावा यह हमें पर्यवेक्षित मशीन सीखने के एक अच्छी तरह से विकसित सिद्धांत का उपयोग करने में सक्षम बनाता है।

मैं पिछले दिनों सफलतापूर्वक DTW के साथ KNN को सफलतापूर्वक तैनात कर रहा था। हालांकि, मैं लगभग हमेशा एक मॉडल के साथ इसकी सटीकता को हरा सकता था जो अच्छी तरह से डिज़ाइन की गई सुविधाओं का उपयोग करता है। इसके अलावा, KNW ओ के साथ द्विआधारी वर्गीकरण तराजू के लिए DTW (n_t · m_ {ट्रेन} · m_ {परीक्षण}) के साथ n_t समय श्रृंखला की लंबाई होने के साथ, mtrain और mtest क्रमशः ट्रेन और परीक्षण सेट में उपकरणों की संख्या है। । इसका मतलब है कि गणना में काफी लंबा समय लगता है।

इसलिए, मैं एक सुविधा आधारित दृष्टिकोण को आगे बढ़ाने की सलाह दूंगा।

tsfresh बड़ी संख्या में सुविधाओं की गणना करता है

अजगर पैकेज tsfresh समय श्रृंखला वाली एक pandas.DataFrame से इस तरह की सुविधाओं की एक बड़ी संख्या की गणना करता है। आप इसके दस्तावेज http://tsfresh.readthedocs.io पर पा सकते हैं ।

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

आप सुविधाओं की एक बड़ी राशि की गणना करने के लिए इसे आज़मा सकते हैं। बाद में आप उनके महत्व के लिए सुविधाओं को फ़िल्टर कर सकते हैं और होनहार उम्मीदवारों की पहचान कर सकते हैं।

अस्वीकरण: मैं tsfresh के लेखकों में से एक हूं।


आपके अद्भुत पोस्ट के लिए बहुत बहुत धन्यवाद। मेरे पास बहुत छोटी समय-श्रृंखला है (उदाहरण के लिए, प्रति समय 10 डेटा अंक)। उस स्थिति में, क्या आप मेरे डेटासेट के लिए tsfresh का उपयोग करने की अनुशंसा करेंगे? धन्यवाद :)
EmJ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.