टाइम सीरीज़ एनोमली डिटेक्शन विथ पायथन


10

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

डेटा का विवरण: यह मासिक समय-श्रृंखला डेटा है जिसे केवल पिछले 2 वर्षों में एकत्र किया जाना शुरू हुआ है (यानी केवल 24-36 समय अवधि)। अनिवार्य रूप से, कई क्लाइंट्स के लिए मासिक आधार पर कई मैट्रिक्स की निगरानी की जा रही है।

time_period    client    metric    score
01-2013        client1   metric1   100
02-2013        client1   metric1   119
01-2013        client2   metric1   50
02-2013        client2   metric2   500
...

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

इस विचार को थोड़ा बाहर करने की किसी भी सलाह की बहुत सराहना की जाएगी। मुझे पता है कि सवाल थोड़ा सार है, और मैं इसके लिए माफी माँगता हूँ।


मुझे अजगर के तरीके का पता नहीं है, लेकिन यह सवाल सामान्य दृष्टिकोणों के बारे में विचारों से भरा है: आंकड़े.stackexchange.com/questions/26688/…
rapaio

pypi.org/project/anomaly-detection यह लाइब्रेरी में पायथन में विसंगति का पता लगाने के लिए बनाया गया है जो ट्विटर विसंगति का पता लगाने के समान है। चूंकि ट्विटर विसंगति का पता लगाने का कोड आर भाषा में है। आपकी समस्या प्रासंगिक विसंगति है। Auto.arima मॉडल भी
saravanan saminathan

जवाबों:


1

मुझे लगता है कि सांख्यिकीय प्रक्रिया नियंत्रण के समान एक दृष्टिकोण , नियंत्रण चार्ट आदि के साथ यहां उपयोगी हो सकता है।


मैं इसे पढ़ूंगा। क्या यह विधि छोटी मात्रा में डेटा (यानी 24 महीने) के साथ समय श्रृंखला के लिए अच्छा है?
एरिक मिलर

अधिकांश इसे पढ़ना समाप्त कर दिया। इस पद्धति के अनुसार, मुझे समय श्रृंखला के लिए 3 मानक विचलन की गणना करनी चाहिए और इन सीमाओं पर एक पंक्ति को रेखांकन करना चाहिए। यदि कोई मान कभी इन सीमाओं को पार करता है, तो उसे चिह्नित करें। यह एक विधि है जिसे मैंने माना था।
एरिक मिलर

1

विसंगति का पता लगाने के लिए बहुत सारे विकल्प हैं, एक मानक विचलन से, पंडस एस डी विचलन फ़ंक्शन का उपयोग करके, एक बायेसियन विधि और बीच में कई मशीन सीखने के तरीकों जैसे: क्लस्टरिंग, एसवीएम, गॉसियन प्रक्रिया, तंत्रिका नेटवर्क।

इस ट्यूटोरियल को देखें: https://www.datascience.com/blog/python-anomaly-detection

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

अंत में, मैं इस Uber ब्लॉग को विसंगति का पता लगाने के लिए न्यूरल नेट (LSTM) का उपयोग करने के बारे में बताता हूं, इसमें बहुत सामान अंतर्दृष्टि है: https://eng.uber.com/neural-networks/


0

यदि आप यह मानने को तैयार हैं कि आपका डेटासेट सामान्य रूप से वितरित किया गया है, तो आप इस वितरण की मात्राओं का अनुमान लगा सकते हैं और देख सकते हैं कि क्या यह 95%, 80%, आदि से बाहर आता है। मैं अजगर पुस्तकालयों से बहुत परिचित नहीं हूं, लेकिन मुझे यकीन है कि इसके लिए पहले से ही निर्मित कार्य हैं।


अधिकांश ग्राहकों के लिए एक प्रवृत्ति ऊपर की ओर है। मुझे यकीन नहीं है कि आप डेटा को यादृच्छिक कह सकते हैं।
एरिक मिलर

2
फिर इस मामले में नहीं। मेरा मानना ​​है कि मेरे और आपके नीचे का तरीका इस स्थिति में अच्छा काम करेगा। मैंने पहले भी ऐसा ही कुछ किया था: एक रोलिंग एक्स अवधि चलती औसत ले, चलती औसत से वर्तमान मीट्रिक मूल्य घटाएं। इन अवशिष्ट के मानक विचलन सीमाएं खोजें (या यदि आप इस परिदृश्य में जानते हैं तो व्यक्तिपरक इनपुट का उपयोग करें) और इन सीमाओं के ऊपर या नीचे कुछ भी विसंगति माना जा सकता है। यदि ग्राहक अचानक स्कोर बढ़ाता है तो यह विधि अच्छी तरह से काम करेगी।
केविन पे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.