2013-02-20 19 views
5

में एलओएफ कार्यान्वयन से अलग-अलग परिणाम मैंने एलओएफ का अपना कार्यान्वयन लिखा है और मैं ईएलकेआई और रैपिडमिनर में कार्यान्वयन के साथ परिणामों की तुलना करने की कोशिश कर रहा हूं, लेकिन सभी 3 अलग-अलग परिणाम देते हैं! मैं बाहर काम करने की कोशिश कर रहा हूँ क्यों।ईएलकेआई और रैपिडमिनर

मेरा संदर्भ डेटासेट कई डुप्लीकेट वाले एक-आयामी, 102 वास्तविक मान हैं। मैं कोशिश करूँगा और इसे नीचे पोस्ट करूंगा।

सबसे पहले, रैपिडमिनर कार्यान्वयन। एलओएफ स्कोर ईएलकेआई से और मेरे परिणामों से जंगली रूप से अलग हैं; कई अनंतता के एलओएफ के साथ वापस आते हैं। क्या इस कार्यान्वयन को सही होने के रूप में मान्य किया गया है?

मेरे परिणाम ELKI के समान हैं, लेकिन मुझे बिल्कुल वही LOF मान नहीं मिलते हैं। ईएलकेआई स्रोत कोड में टिप्पणियों के त्वरित स्कैन से, मुझे लगता है कि यह के-पड़ोस की गणना के तरीके में मतभेदों के कारण हो सकता है।

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

क्या किसी को सार्वजनिक संदर्भ डेटासेट के बारे में पता है जिसमें सत्यापन उद्देश्यों के लिए एलओएफ स्कोर संलग्न हैं?

--- अधिक जानकारी के पालन ---

संदर्भ: ELKI स्रोत कोड यहाँ है:

http://elki.dbs.ifi.lmu.de/browser/elki/trunk/src/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOF.java

RapidMiner स्रोत कोड यहाँ है:

http://code.google.com/p/rapidminer-anomalydetection/source/browse/trunk/src/de/dfki/madm/anomalydetection/evaluator/nearest_neighbor_based/LOFEvaluator.java

यहाँ मेरा परीक्षण डेटासेट है:

4,32323 5,12595 5,12595 5,12595 5,12595 5,7457 5,7457 5,7457 5,7457 5,7457 5,7457 5,97766 5,97766 6,07352 6,07352 6,12015 6,12015 6,12015 6,44797 6,44797 6,48131 6,48131 6,48131 6,48131 6,48131 6,48131 6,6333 6,6333 6,6333 6,70872 6,70872 6,70872 6,70872 6,70872 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 6,77579 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,03654 7,10361 7,10361 7,10361 7,10361 7,10361 7,10361 7,10361 7,10361 7,15651 7,1 5651 7,15651 7,15651 7,15651 7,15651 7,15651 7,15651 8,22598 8,22598 8,22598 8,22598 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538 8,5538

उदाहरण के लिए, मैं पहली बार नंबर के लिए निम्नलिखित LOF अंक प्राप्त (४.३२,३२३):

  • RapidMiner: अनंत
  • ELKI (MinPts कम/ऊपरी सीमा 10100 करने के लिए सेट के साथ): 2।6774 (k = 10 और distfunction/reachdistfunction डिफ़ॉल्ट करने के लिए सेट के साथ)
  • मेरे कार्यान्वयन: 1,9531

पर कुछ अधिक जानकारी के क्या मेरी कार्यान्वयन कर रही है:

  1. MinPts 10 है, इसलिए मैं मैं बिंदु के 10 विशिष्ट पड़ोसियों को ढूंढ रहा हूँ। तो 4.32323 का पड़ोस वास्तव में 48 अंक है, 5.125 9 5 से 6.77579 तक।
  2. जो मुझे के रूप में 1,58277
  3. मैं के रूप में 1/(99,9103/48)
  4. नमूने के LRD की गणना कर रहा हूँ 2,45256
  5. मैं पहली बार पड़ोसी की गम्यता दूरी की गणना कर रहा हूँ की एक k-अलग दूरी देता है
  6. LRD (O)/LRD (p) सभी 48 पड़ोसियों के लिए का योग 1,9531
+0

आप (एक उच्च अधिकतम बिना) minpts = 10 के लिए RapidMiner परिणाम जोड़ने चाहेंगे? यह देखना दिलचस्प होगा कि क्या यह सहमत है, या हमेशा अनंतता पर जाता है। –

उत्तर

6

के LOF पाने के लिए वास्तव में वे अलग मैं हैरान नहीं हूँ 48 से 93,748939

  • फूट डालो है। आप वीओएफ के एलओएफ के कार्यान्वयन में भी जोड़ सकते हैं, और आपको शायद एक और जवाब मिल जाएगा।

    आपके समीकरणों में जोड़ने के लिए यहां एक और अंतर है: जहां तक ​​मुझे पता है, तेजी से कार्यान्वयन अंक विलय करता है जिसमें समान निर्देशांक होते हैं। लेकिन शायद, वे निकटतम पड़ोसियों की गणना करते समय इन वजनों को ध्यान में रखना भूल गए!

    क्लासिक डेटाबेस संदर्भ में, आप डुप्लिकेट निर्देशांक को एकल अवलोकन में मर्ज नहीं करेंगे। वे अभी भी वैध डेटाबेस रिकॉर्ड हैं और पूर्ण रिकॉर्ड के रूप में गिना जाना चाहिए।

    मुझे नहीं पता कि उनमें से कोई भी डेटा सेट को पुन: सहेजने जैसे कुछ स्वचालित डेटा प्रीप्रोकैसिंग कर रहा है या नहीं।

    ईएलकेआई कार्यान्वयन को को कई पाठ्यपुस्तक उदाहरणों के विरुद्ध सत्यापित किया गया है जो हम शिक्षण के लिए उपयोग करते हैं।

    हालांकि, एल्गोरिदम में कोने के मामले हैं जो 100% तय नहीं हैं, इसलिए एल्गोरिदम के "शाब्दिक" कार्यान्वयन में भी अंतर के लिए जगह है। आप पहले से ही इनमें से तीन में चलाने की है:

    1. कैसे डुप्लिकेट अंक के इलाज के लिए: एक) सकल, बी) ड्रॉप, सी) पर विचार अलग

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

    2. निकटतम पड़ोसियों और के-दूरी की परिभाषा।

      के-दूरी की सामान्य परिभाषा है: सबसे छोटी दूरी, जैसे कि कम से कम के अवलोकन निहित हैं। क्वेरी पॉइंट को छोड़कर, यह शुरुआती बिंदु से 5.7457 तक की औसतता उत्पन्न करता है: 5.7457 - 4.32323 के त्रिज्या में 10 अन्य अवलोकन होते हैं।

      के निकटतम पड़ोसियों को आमतौर पर इस दूरी के भीतर किसी भी बिंदु के रूप में परिभाषित किया जाता है, जो कि के से अधिक हो सकता है।लेकिन फिर सभी अतिरिक्त वस्तुओं में के समान दूरी होना चाहिए जैसे kth! ऐसा लगता है मानो RapidMiner का उपयोग करता है वास्तव में, जो LOF प्रकाशन से तालमेल नहीं है k (LOF प्रकाशन में परिभाषा 4 देखें!)

      यह वास्तव में संबंधों सहित कश्मीर निकटतम पड़ोसी (है, लेकिन वह नहीं से अधिक अन्य के ऑब्जेक्ट्स की तुलना में), k-ths सबसे छोटा विशिष्ट दूरी नहीं है। आपको "विशिष्ट" कहां से मिला?

      एलओएफ प्रकाशन में परिभाषा 3 और 4 केएनएन सेट एलओएफ उपयोगों पर स्पष्ट हैं।

      48 वस्तुओं का आपका पड़ोस इस प्रकार सही नहीं है।

    3. अगर वहाँ अधिक minPts से अंक (एक शाब्दिक कार्यान्वयन शून्य से एक प्रभाग निकलेगा, लेकिन स्पष्ट कारणों के लिए बिंदु 1.0 के एक LOF दी जानी चाहिए)

      यह शायद है क्या है नकल कर रहे हैं क्या करना है रैपिडमिनेर के साथ हो रहा है।

    और फिर वहाँ गम्यता दूरी है: यह एक, वास्तव में मुश्किल है, क्योंकि यह एक गणितीय दूरी नहीं है। यह असममित है।

    पहले अवलोकन से दूसरे दूसरे के k- दूरी है, जो शीघ्रता से अवलोकन से (दोहरी जांच नहीं था) होने की गम्यता reach-dist(x[0], x[1]) = max(5.97766 - 5.12595, 5.12595 - 4.32323) = 0.80272

    एक कदम-दर-के लिए my extensive tutorial slides on outlier detection देखें एलओएफ की गणना कैसे करें इसका कदम प्रदर्शन। जहां तक ​​मैं कह सकता हूं, यह शाब्दिक एलओएफ है। यह सभी कोने के मामलों को छूता नहीं है, लेकिन यह एलओएफ एल्गोरिदम के डिजाइन को प्रेरित करता है और काफी संपूर्ण है।

  • +0

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

    +0

    पीएस मैंने दूसरे बिंदु की के-दूरी के रूप में पहुंच क्षमता को भी गणना की, लेकिन मैंने के-विशिष्ट दूरी का उपयोग किया, इसलिए मुझे 1.58277 मिल गया। –

    +0

    ठीक है, मैंने अपने कार्यान्वयन का एक अलग संस्करण बनाया है जो के-विशिष्ट दूरी के बजाय के-दूरी का उपयोग करता है। पहली बात के लिए, मुझे बिल्कुल 10 पड़ोसियों मिलते हैं, और पहले पड़ोसी (5.125 9 5) की पहुंच क्षमता 0.802725 है जैसा आपने कहा था।बिंदु के लिए 1/एलआरडी 1.174572 और पड़ोसियों के लिए 0.754913, 0.41152 हैं। इसलिए मैं एलओएफ को 2.334 9 के रूप में काम करता हूं; ELKI परिणाम के करीब लेकिन अभी भी अलग! –

    0

    यदि आप RapidMiner [1] (बिल्ड-इन एलओएफ नहीं) के लिए अनोम्ली डिटेक्शन एक्सटेंशन का उपयोग कर रहे हैं, तो आपको सही परिणाम मिलेंगे। बिल्ड-इन एलओएफ टूटा हुआ है। ये ईएलकेआई के समान परिणाम हैं। यह कार्यान्वयन ईएलकेआई की तुलना में बहुत तेज है क्योंकि इसकी बहु-थ्रेटेड और बहुत कम स्मृति का भी उपयोग करती है। यह डुप्लिकेट को भी संभाल सकता है (यहां तक ​​कि के + 1), जहां ईएलकेआई अपवाद फेंकता है। (K-अलग के आधार पर)

    बेस्ट, हंस

    [1] http://marketplace.rapid-i.com/UpdateServer/faces/product_details.xhtml?productId=rmx_anomalydetection

    +0

    क्या आपके पास कोई परीक्षण केस है जब ईएलकेआई अपवाद फेंकता है? जब मैं इसे बहुत सारे डुप्लिकेट के साथ एक डेटा सेट खिलाता हूं, तो उन्हें प्रत्येक के लिए 1.0 का उचित - बाहरी स्कोर मिलता है। ईएलकेआई एलओएफ कार्यान्वयन 0 से विभाजन से बचाता है, और कागज में परिभाषित अनुसार knn को संभालता है। –