क्या हम आउटलेर्स को प्रकट करने के लिए एक बाहर का मतलब और मानक विचलन का उपयोग कर सकते हैं?


17

मान लीजिए कि मैंने सामान्य रूप से डेटा वितरित किया है। डेटा के प्रत्येक तत्व के लिए मैं यह जांचना चाहता हूं कि यह कितने एसडी से मतलब से दूर है। डेटा में एक बहिर्वाह हो सकता है (केवल एक ही हो सकता है, लेकिन यह भी दो या तीन हो सकता है) या नहीं, लेकिन यह बाह्य रूप से मूल रूप से वही है जो मैं देख रहा हूं। क्या इसका मतलब अस्थायी रूप से उस तत्व को बाहर करना है जिसे मैं वर्तमान में माध्य और एसडी की गणना से देख रहा हूं? मेरी सोच यह है कि अगर यह माध्य के करीब है, तो इसका कोई प्रभाव नहीं पड़ता है। यदि यह एक बहिर्मुखी है, तो यह माध्य और SD की गणना को पूर्वाग्रहित कर सकता है और यह पता लगने की संभावना को कम करता है। मैं एक सांख्यिकीविद् नहीं हूँ, इसलिए किसी भी मदद की सराहना की है!


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

यह बात बताने के लिए धन्यवाद। मैं उन तकनीकों को देखूंगा और देखूंगा कि क्या वे मेरे डेटा पर अच्छा प्रदर्शन करती हैं!
ओलिवर


.... और यह इस बात का चित्रण करने के लिए कि वे एक से अधिक एकतरफा खोजने के लिए क्यों निर्भर हो सकते हैं।
user603

आउटलेर को फ्लैग करने के विचार से ऊपर महान विचार। कुछ समय पहले, मैंने फ्लैगिंग विसंगतियों पर नुकसान-पास फिल्टर के विचार पर एक लेख लिखा था। आशा है कि यह ऊपर प्रस्तुत विचार को विस्तारित करने में मदद करता है। लेख के लिए लिंक: datascience.com/blog/python-anomaly-detection
Pramit

जवाबों:


25

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

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

नीचे, मैं एक सरल संख्यात्मक उदाहरण देता हूं जहां आप जिस नियम का प्रस्ताव करते हैं वह टूट जाता है और फिर मैं एक अधिक सुरक्षित और अधिक स्थापित विकल्प का प्रस्ताव करता हूं, लेकिन इससे पहले मैं आपको समझाऊंगा कि a) आपके द्वारा प्रस्तावित विधि के साथ क्या गलत है और b) आमतौर पर क्या पसंद है इसका विकल्प है।

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

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

इस उदाहरण पर विचार करें, जहां मैं एक सामान्य 0,1 से खींची गई 47 वास्तविक टिप्पणियों के लिए 3 आउटलेयर जोड़ता हूं:

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

नीचे दिए गए कोड में आउटसाइडनेस इंडेक्स की गणना ली गई है जो माध्य और मानक विचलन (उदाहरण के लिए आपके द्वारा सुझाए गए दृष्टिकोण) पर आधारित है।

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

और यह कोड आपके द्वारा देखे गए प्लॉट का निर्माण करता है।

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

चित्र 1 आपके बाह्यकरण सूचकांक के मान को अवलोकनों के मान के फलन के रूप में दर्शाता है (आउटलेयर का सबसे दूर भाग इस भूखंड की सीमा के बाहर है लेकिन अन्य दो लाल बिंदुओं के रूप में दिखाए गए हैं)। जैसा कि आप देख सकते हैं, सबसे चरम एक को छोड़कर, एक आउटिंगनेस इंडेक्स बनाया गया है जैसा कि आप सुझाव देते हैं कि आउटलेयर को प्रकट करने में विफल होगा: वास्तव में दूसरे और तीसरे (माइलेज) आउटलेर के पास अब भी मूल्य है (आपके आउटिंगनेस इंडेक्स पर) सभी से छोटा हैवास्तविक अवलोकन 0.45 और 2.32 के इन 49 डेटा बिंदुओं के आधार पर माध्य और sd का अनुमान, आपके नमूने के किसी भी हिस्से का बहुत खराब वर्णन !

Image2

एक्समैंएक्स

हे(एक्समैं,एक्स)=|एक्समैं-मेड(एक्स)|पागल(एक्स)

मेड(एक्स)एक्सपागल(एक्स)

आर में, इस दूसरे आउटलाइनिंग इंडेक्स की गणना इस प्रकार की जा सकती है:

out_2 <- abs( x-median(x) )/mad(x)

और प्लॉट (पहले की तरह) का उपयोग करके:

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

Image2

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

|एक्समैं-मेड(एक्स)|पागल(एक्स)>3.5

आउटलेर के रूप में। ऊपर दिए गए उदाहरण में, इस नियम का आवेदन आपको सही ढंग से ध्वज अवलोकन 1,2 तक ले जाएगा और 3. इन्हें अस्वीकार करते हुए, शेष टिप्पणियों का माध्य और sd 0.021 और 0.93 ग्रहणशील है, नमूने के वास्तविक भाग का बहुत बेहतर विवरण। !


2
+1 पहले वाक्य के बावजूद, जिसे आप तुरंत विरोधाभास करते हैं (ओपी के प्रस्ताव का मतलब है कि जब एक से अधिक बाहरी अनुमान लगाया जाता है; आपकी आपत्ति इस प्रक्रिया के साथ समस्याओं की चिंता करती है जब उस धारणा का उल्लंघन होता है)।
whuber

1
धन्यवाद। इस बीच मैंने अपनी पिछली टिप्पणी हटा दी, यह अनुमान लगाते हुए कि यह आपके संपादन के बाद अप्रचलित हो जाएगा।
whuber

3
घटना जहां कई आउटलेर एकल-विकृति का पता लगाते हैं उनमें से किसी के लिए अंधा होना अक्सर मास्किंग कहा जाता है । इससे लोगों को समस्या से संबंधित अधिक जानकारी का पता लगाने में मदद मिल सकती है।
Glen_b -Reinstate मोनिका

1
@ user603 एक अच्छा परिदृश्य बनाने वाला अच्छा काम है, लेकिन मुझे लगता है कि आप बच्चे को स्नान के पानी से बाहर निकाल रहे हैं। प्रतिगमन विलोपन निदान सही नहीं हैं, लेकिन वे व्यापक रूप से लागू हैं और समय की कसौटी पर खड़े हैं। मंझला लेना ठीक है, लेकिन मुझे आश्चर्य है कि आप अपने दृष्टिकोण को और अधिक जटिल संभावना आधारित मॉडल तक कैसे बढ़ाएंगे।
बेन ओगोरक

2
+6, यह एक बहुत अच्छा जवाब है - स्पष्ट रूप से और अच्छी तरह से समझाया, कोड, आंकड़े और सूत्रों के साथ सचित्र। मैंने कोड स्वरूपण को थोड़ा आसान बनाने के लिए इसे पढ़ना आसान बना दिया। यदि आपको यह पसंद नहीं है, तो इसे वापस w / my माफी के रूप में रोल करें।
गूँग - मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.