उन नमूना बिंदुओं को कैसे खोजें, जिनमें बिंदु के दो मूल्यों के बीच सांख्यिकीय रूप से बड़े बहिर्गामी अनुपात हैं?


12

एक उदाहरण के अनुप्रयोग के रूप में, स्टैक ओवरफ्लो उपयोगकर्ताओं के दो गुणों पर विचार करें: प्रतिष्ठा और प्रोफ़ाइल दृश्य मायने रखता है

यह उम्मीद की जाती है कि अधिकांश उपयोगकर्ताओं के लिए वे दो मूल्य आनुपातिक होंगे: उच्च प्रतिनिधि उपयोगकर्ता अधिक ध्यान आकर्षित करते हैं और इसलिए अधिक प्रोफ़ाइल दृश्य प्राप्त करते हैं।

इसलिए, उन उपयोगकर्ताओं को खोजना दिलचस्प है, जिनकी कुल प्रतिष्ठा की तुलना में बहुत सारे प्रोफ़ाइल दृश्य हैं।

यह इंगित कर सकता है कि उपयोगकर्ता के पास प्रसिद्धि का एक बाहरी स्रोत है। या शायद सिर्फ इतना है कि उनके पास दिलचस्प विचित्र प्रोफ़ाइल चित्र और नाम हैं।

गणितीय रूप से, प्रत्येक द्वि-आयामी नमूना बिंदु एक उपयोगकर्ता है, और प्रत्येक उपयोगकर्ता में 0 से + अनंत तक दो अभिन्न मूल्य हैं:

  • प्रतिष्ठा
  • प्रोफ़ाइल विचारों की संख्या

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

भोली समाधान सिर्फ प्रोफ़ाइल विचार लेने, प्रतिष्ठा से विभाजित करने और सॉर्ट करने के लिए होगा।

हालांकि, यह ऐसे परिणाम देगा जो सांख्यिकीय रूप से सार्थक नहीं हैं। उदाहरण के लिए, यदि किसी उपयोगकर्ता ने सवाल का जवाब दिया, तो 1 अपवोट मिला, और किसी कारण से 10 प्रोफ़ाइल दृश्य थे, जो नकली होना आसान था, तो वह उपयोगकर्ता बहुत अधिक दिलचस्प उम्मीदवार के सामने दिखाई देगा, जिसके 1000 अपवोट और 5000 प्रोफ़ाइल विचार हैं ।

एक अधिक "वास्तविक दुनिया" उपयोग के मामले में, हम उदाहरण के लिए जवाब देने की कोशिश कर सकते हैं "कौन सा स्टार्टअप सबसे सार्थक गेंडा हैं?"। उदाहरण के लिए, यदि आप छोटी इक्विटी के साथ 1 डॉलर का निवेश करते हैं, तो आप एक गेंडा बनाते हैं: https://www.linkedin.com/feed/update/urn:li:activity:636264851685838310656

ठोस स्वच्छ आसान उपयोग वास्तविक दुनिया डेटा

इस समस्या के अपने समाधान का परीक्षण करने के लिए, आप इस छोटे (75M संपीड़ित, ~ 10M उपयोगकर्ता) का उपयोग कर सकते हैं 2019-03 स्टैक ओवरफ्लो डेटा डंप से निकाली गई प्रीप्रोसेस की गई फ़ाइल :

wget https://github.com/cirosantilli/media/raw/master/stack-overflow-data-dump/2019-03/users_rep_view.dat.7z
7z x users_rep_view.dat.7z

जो UTF-8 एन्कोडेड फ़ाइल का निर्माण users_rep_view.datकरता है जिसमें एक बहुत ही सरल सादा पाठ स्थान अलग प्रारूप है:

Id Reputation Views DisplayName
-1 1 649 Community
1 45742 454747 Jeff_Atwood
2 3582 24787 Geoff_Dalgas
3 13591 24985 Jarrod_Dixon
4 29230 75102 Joel_Spolsky
5 39973 12147 Jon_Galloway
8 942 6661 Eggs_McLaren
9 15163 5215 Kevin_Dente
10 101 3862 Sneakers_O'Toole

यह डेटा लॉग पैमाने पर कैसा दिखता है:

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

gnuplot स्क्रिप्ट

यह देखना दिलचस्प होगा कि क्या आपका समाधान वास्तव में हमें नए अज्ञात quirky उपयोगकर्ताओं को खोजने में मदद करता है!

प्रारंभिक डेटा 2019-03 डेटा डंप से निम्नानुसार प्राप्त किया गया था:

wget https://archive.org/download/stackexchange/stackoverflow.com-Users.7z

# Produces Users.xml
7z x stackoverflow.com-Users.7z

# Preprocess data to minimize it.
./users_xml_to_rep_view_dat.py Users.xml > users_rep_view.dat
7z a users_rep_view.dat.7z users_rep_view.dat

sha256sum stackoverflow.com-Users.7z users_rep_view.dat.7z > checksums

के लिए स्रोतusers_xml_to_rep_view_dat.py

पुन: व्यवस्थित करके अपने आउटलेयर का चयन करने के बाद users_rep_view.dat, आप हाइपरलिंक्स के साथ एक HTML सूची प्राप्त कर सकते हैं ताकि जल्दी से शीर्ष पिक्स को देख सकें:

./users_rep_view_dat_to_html.py users_rep_view.dat | head -n 1000 > users_rep_view.html
xdg-open users_rep_view.html

के लिए स्रोतusers_rep_view_dat_to_html.py

यह स्क्रिप्ट पायथन में डेटा को पढ़ने के तरीके के त्वरित संदर्भ के रूप में भी काम कर सकती है।

मैनुअल डेटा विश्लेषण

Gnuplot ग्राफ को देखने के तुरंत बाद हम उम्मीद के मुताबिक देखते हैं:

  • डेटा लगभग समानुपातिक है, जिसमें कम प्रतिनिधि या कम व्यू काउंट उपयोगकर्ताओं के लिए अधिक भिन्नताएं हैं
  • कम प्रतिनिधि या लो व्यू काउंट उपयोगकर्ता स्पष्ट हैं, जिसका अर्थ है कि उनके पास उच्च खाता आईडी हैं, जिसका अर्थ है कि उनके खाते नए हैं

डेटा के बारे में कुछ अंतर्ज्ञान प्राप्त करने के लिए, मैं कुछ इंटरेक्टिव प्लॉटिंग सॉफ़्टवेयर में कुछ दूर बिंदुओं को कम करना चाहता था।

Gnuplot और Matplotlib इतने बड़े डेटासेट को संभाल नहीं पाए, इसलिए मैंने VisIt को पहली बार एक शॉट दिया और यह काम कर गया। यहाँ मेरे द्वारा किए गए सभी प्लॉटिंग सॉफ़्टवेयर का विस्तृत अवलोकन है: /programming/5854515/large-plot-20-million-samples-gigabytes-of-data/5596746##55967461

OMG जिसे चलाना मुश्किल था। मुझे करना पड़ा:

  • मैन्युअल रूप से निष्पादन योग्य डाउनलोड करें, कोई उबंटू पैकेज नहीं है
  • सीएसवी में डेटा को users_xml_to_rep_view_dat.pyजल्दी से हैक करके परिवर्तित करें क्योंकि मैं आसानी से यह नहीं पा सका कि इसे अलग-अलग फ़ाइलों को कैसे फीड किया जाए (सबक सीखा, अगली बार जब मैं सीधे सीएसवी के लिए जाऊंगा)
  • यूआई के साथ 3 घंटे के लिए लड़ाई
    • डिफ़ॉल्ट बिंदु आकार एक पिक्सेल है, जो मेरी स्क्रीन पर धूल से भ्रमित हो जाता है। 10 पिक्सेल के गोले पर जाएँ
    • एक उपयोगकर्ता था, जिसमें 0 प्रोफ़ाइल दृश्य थे, और VisIt ने लॉगरिथम प्लॉट को करने से सही ढंग से इनकार कर दिया, इसलिए मैंने उस बिंदु से छुटकारा पाने के लिए डेटा सीमा का उपयोग किया। इसने मुझे याद दिलाया कि gnuplot बहुत अनुज्ञेय है, और ख़ुशी से आप इसे फेंकने वाली किसी भी चीज़ की साजिश करेंगे।
    • "नियंत्रण"> "एनोटेशन" के तहत अक्ष शीर्षक जोड़ें, उपयोगकर्ता नाम और अन्य चीजें निकालें

इस मैनुअल काम के थक जाने के बाद मेरी VisIt विंडो कैसी दिखी:

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

पत्र वे बिंदु हैं जिन्हें मैंने भयानक पिक्स फीचर के साथ मैन्युअल रूप से चुना था:

  • आप पिक्स विंडो में फ्लोटिंग पॉइंट प्रिसिजन> "फ्लोट फॉर्मेट" को बढ़ाकर प्रत्येक बिंदु के लिए सटीक आईडी देख सकते हैं %.10g
  • फिर आप "Ticks के रूप में सहेजें" के साथ एक txt फ़ाइल के लिए सभी हाथ उठाया अंक डंप कर सकते हैं। यह हमें कुछ मूल पाठ प्रसंस्करण के साथ दिलचस्प प्रोफ़ाइल URL की क्लिक करने योग्य सूची बनाने की अनुमति देता है

TODO, जानें कैसे करें:

  • प्रोफ़ाइल नाम स्ट्रिंग देखें, वे डिफ़ॉल्ट रूप से 0 में परिवर्तित हो जाते हैं। मैंने प्रोफ़ाइल Ids को ब्राउज़र में चिपकाया है
  • एक बार में सभी बिंदुओं को एक आयत में चुनें

और अंत में, यहां कुछ उपयोगकर्ता हैं जिन्हें आपके आदेश पर उच्च प्रदर्शन करने की संभावना है:

संभव समाधान

मैंने https://www.evanmiller.org/how-not-to-sort-by-aiture-rating.html से विल्सन स्कोर आत्मविश्वास अंतराल के बारे में सुना है, जो अनिश्चितता के साथ सकारात्मक रेटिंग के अनुपात को "संतुलन" करता है। टिप्पणियों की एक छोटी संख्या ", लेकिन मुझे यकीन नहीं है कि इस समस्या को कैसे चित्रित किया जाए।

उस ब्लॉग पोस्ट में, लेखक उस एल्गोरिथ्म को उन वस्तुओं को खोजने की सिफारिश करता है, जिनमें डाउनवोट्स की तुलना में बहुत अधिक अपवोट्स हैं, लेकिन मुझे यकीन नहीं है कि अगर यह विचार upvote / प्रोफ़ाइल दृश्य समस्या पर लागू होता है। मैं लेने की सोच रहा था:

  • प्रोफ़ाइल दृश्य == वहाँ upvotes
  • यहाँ upvotes == वहां डाउनवोट्स (दोनों "खराब")

लेकिन मुझे यकीन नहीं है कि यह समझ में आता है क्योंकि अप / डाउनवोट समस्या पर, प्रत्येक आइटम को सॉर्ट किया जा रहा है एन 0/1 वोट इवेंट। लेकिन मेरी समस्या पर, प्रत्येक आइटम में इससे जुड़ी दो घटनाएं हैं: उत्थान प्राप्त करना, और प्रोफ़ाइल दृश्य प्राप्त करना।

क्या एक प्रसिद्ध एल्गोरिथ्म है जो इस तरह की समस्या के लिए अच्छे परिणाम देता है? यहां तक ​​कि सटीक समस्या नाम जानने से मुझे मौजूदा साहित्य खोजने में मदद मिलेगी।

ग्रन्थसूची

उबंटू 18.10, वीआईटी 2.13.3 में परीक्षण किया गया।


1
मैं इसके लिए नया हूं, इसलिए कृपया शब्दावली को और अधिक सही बनाने के लिए शीर्षक / प्रश्न को संपादित करने के लिए स्वतंत्र महसूस करें। धन्यवाद।
सिरो सेंटिल्ली 冠状 病毒 iro i 法轮功

ऐसा लगता है कि आप आउटलेर की खोज कर रहे हैं। मैं इस क्षेत्र में एक तकनीक का प्रयोग करेंगे
probabilityislogic

1
@probabilityislogic btw, मैंने डेटा का उपयोग करने के लिए कुछ ठोस के साथ प्रश्न को अद्यतन किया है।
सिरो संतिली 冠状 病毒 iro i ''

1
मैं यह कहना चाहूंगा कि यह केवल एक दिलचस्प सवाल नहीं है, बल्कि बहुत ठोस और अच्छी तरह से स्वरूपित है। ऊपर देखने के लिए एक उदाहरण। अच्छी नौकरी @Ciro!
जूलियो सीज़र सिल्वा

1
@JulioCezarSilva धन्यवाद !! मैं इस समय उच्च पूर्ण इंटरैक्टिव साजिश रचने के बारे में जानने की उम्मीद नहीं कर रहा था, लेकिन मैंने किया। क्लासिक।
सिरो सेंटिल्ली 冠状 i iro 法轮功 19 '

जवाबों:


4

मुझे लगता है कि विल्सन स्कोर आत्मविश्वास अंतराल को सीधे आपकी समस्या पर लागू किया जा सकता है। ब्लॉग में इस्तेमाल किया गया स्कोर अपेक्षित मूल्य के बजाय आत्मविश्वास के अंतराल से कम था।

इस तरह की समस्या के लिए एक और तरीका यह है कि हमारे पास कुछ पूर्व ज्ञान के प्रति हमारा अनुमान सही हो (पूर्वाग्रह), उदाहरण के लिए समग्र दृष्टिकोण / प्रतिनिधि अनुपात।

v~एन(μ,σ)μ

μपी(μ)

μपी=nμएल+सीμ0n+सी
nसीμएलμ0


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


1
आपके जवाब का धन्यवाद! मैंने डेटा को उपयोग करने के लिए कुछ ठोस और आसान के साथ प्रश्न को अपडेट किया है, चलो देखते हैं कि कोई व्यक्ति कुछ मजेदार निष्कर्ष निकालने का प्रबंधन करता है या नहीं।
सिरो संतिली 冠状 病毒 iro i ''

1
@CiroSantilli 新疆 IC U 996ICU! S अच्छी नौकरी!
नोटोलो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.