क्राउडसोर्ड सॉर्ट के साथ एक लाख इमेज कैसे रैंक करें


83

मैं एक गेम बनाकर लैंडस्केप छवियों का एक संग्रह रैंक करना चाहता हूं, जिससे साइट विज़िटर उन्हें रेट कर सकें, ताकि यह पता लगाया जा सके कि कौन से चित्र लोगों को सबसे अधिक आकर्षक लगते हैं।

ऐसा करने का एक अच्छा तरीका क्या होगा?

  • हॉट-या-नॉट स्टाइल ? यानी एक एकल छवि दिखाते हैं, उपयोगकर्ता को इसे 1-10 से रैंक करने के लिए कहते हैं। जैसा कि मैंने इसे देखा, यह मुझे स्कोर को औसत करने की अनुमति देता है, और मुझे यह सुनिश्चित करने की आवश्यकता होगी कि मुझे सभी छवियों के बीच वोटों का एक समान वितरण मिले। लागू करने के लिए काफी सरल है।
  • A-or-B उठाओ ? यानी दो छवियां दिखाएं, उपयोगकर्ता को बेहतर चुनने के लिए कहें। यह आकर्षक है क्योंकि कोई संख्यात्मक रैंकिंग नहीं है, यह सिर्फ एक तुलना है। लेकिन मैं इसे कैसे लागू करूंगा? मेरा पहला विचार इसे एक क्विकसॉर्ट के रूप में करना था, जिसमें मनुष्यों द्वारा प्रदान किए जा रहे तुलनात्मक संचालन के साथ, और एक बार पूरा होने के बाद, केवल सॉर्ट विज्ञापन-इनफ़िनिटम दोहराएं।

आप इसे कैसे करेंगे ?

यदि आपको संख्याओं की आवश्यकता है, तो मैं 20,000 दैनिक विज़िट वाली साइट पर एक मिलियन छवियों के बारे में बात कर रहा हूं। मुझे लगता है कि तर्क के लिए एक छोटा सा अनुपात खेल खेल सकता है, मैं कहता हूं कि मैं एक दिन में 2,000 मानव प्रकार के संचालन उत्पन्न कर सकता हूं! यह एक गैर-लाभकारी वेबसाइट है, और टर्मली उत्सुक मुझे अपनी प्रोफ़ाइल के माध्यम से मिल जाएगा :)


1
मैंने एक खिलौना अनुप्रयोग उपयोग GAE लिखा है जो कुछ इस तरह करता है: rank.appspot.com । यह प्रत्येक आइटम के लिए गति की अवधारणा का उपयोग करता है जो मुझे संदेह है कि ईएलओ के एक संस्करण में पतित है, हालांकि मैंने इसे स्वतंत्र रूप से विकसित किया है। अजगर src साझा करने के लिए खुश हो जाएगा।
freespace

@freespace मैं आपके एल्गोरिथ्म के लिए पायथन स्रोत देखना चाहूंगा।
एकैहोला

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

जवाबों:


96

जैसा कि दूसरों ने कहा है, 1-10 की रैंकिंग उस तरह से काम नहीं करती है क्योंकि लोगों के पास विभिन्न स्तर हैं।

पिक ए-या-बी पद्धति के साथ समस्या यह है कि इसकी प्रणाली को संक्रामक होने की गारंटी नहीं है (ए बी को हरा सकता है, लेकिन बी बी को सी करता है, और सी बी को ए)। नॉनट्रांसिटिव तुलना ऑपरेटर होने से छँटाई एल्गोरिदम टूट जाता है । क्विकॉर्ट के साथ, इस उदाहरण के खिलाफ, पिवट के रूप में नहीं चुने गए पत्रों को एक दूसरे के खिलाफ गलत तरीके से रैंक किया जाएगा।

किसी भी समय, आप सभी चित्रों की पूर्ण रैंकिंग चाहते हैं (भले ही उनमें से कुछ / सभी बंधे हों)। आप यह भी चाहते हैं कि आपकी रैंकिंग तब तक न बदले जब तक कि कोई वोट न दे

मैं पिक ए-या-बी (या टाई) पद्धति का उपयोग करता हूं , लेकिन एलो रेटिंग प्रणाली के समान रैंकिंग का निर्धारण करता हूं जिसका उपयोग 2 खिलाड़ी गेम (मूल रूप से शतरंज) में रैंकिंग के लिए किया जाता है:

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

एलो सिस्टम:

  1. सभी नए खिलाड़ी 1600 की बेस रेटिंग के साथ शुरुआत करते हैं
  2. विनप्रोबेबिलिटी = 1 / (10 ^ ((ओपेरेंट की करंट रेटिंग- प्लेयर की करंट रेटिंग) / 400) + 1)
  3. ScoringPt = 1 अंक अगर वे मैच जीतते हैं, तो यदि वे हार जाते हैं, और एक ड्रॉ के लिए 0.5।
  4. खिलाड़ी की नई रेटिंग = खिलाड़ी की पुरानी रेटिंग + (के-वैल्यू * (स्कोरिंग-प्लेयर-विन की संभाव्यता))

तस्वीरों के साथ "खिलाड़ियों" को बदलें और आपके पास सूत्र के आधार पर दोनों चित्रों की रेटिंग को समायोजित करने का एक सरल तरीका है। फिर आप उन संख्यात्मक अंकों का उपयोग करके रैंकिंग कर सकते हैं। (के-वैल्यू यहां टूर्नामेंट का "स्तर" है। यह छोटे स्थानीय टूर्नामेंटों के लिए 8-16 और बड़े आमंत्रण / क्षेत्रीय के लिए 24-32 है। आप बस 20 की तरह एक निरंतर उपयोग कर सकते हैं)।

इस पद्धति के साथ, आपको केवल प्रत्येक तस्वीर के लिए एक नंबर रखना होगा जो कि प्रत्येक तस्वीर के व्यक्तिगत रैंकों को एक-दूसरे की तस्वीर रखने की तुलना में बहुत कम स्मृति गहन है।

संपादित करें: टिप्पणियों के आधार पर थोड़ा और मांस जोड़ा गया।


3
संवेदनशीलता बिल्कुल भी मायने नहीं रखती है। आप सिर्फ लोगों की राय को एकत्र करना चाहते हैं और आप उनसे रैंकिंग में असहमति की उम्मीद करेंगे। लोग डेटा का शोर स्रोत हैं और सुसंगत नहीं हैं।
ओवेन

4
मेरा कहना है कि अगर आपके पास A> B> C> A है, तो बस तुलना के रूप में ">" का उपयोग करना एक समस्या है क्योंकि आपकी छंटाई कभी भी सही तरीके से नहीं होगी (सही तरीके से) और आपकी सूची प्रवाह की निरंतर स्थिति में होगी भले ही अब और लोग मतदान नहीं कर रहे हैं। मेरा जवाब इस समस्या का समाधान प्रदान करता है।
लापी एंडरसन

1
मैं इसे स्वीकृत उत्तर के रूप में चिह्नित कर रहा हूं क्योंकि यह क्विकॉर्ट का उपयोग करने के लिए मेरे सुझाव से हड्डियों को बाहर निकालता है और इसमें एलो का अच्छा चित्रण भी शामिल है।
पॉल डिक्सन

6
एलो प्रणाली निश्चित रूप से ए / बी पद्धति की रैंकिंग के लिए जाने का रास्ता है। हालाँकि, आप वृद्धिशील विधि की तुलना में बेहतर विधि का उपयोग कर सकते हैं। बेयेसेलो पर एक नज़र: remi.coulom.free.fr/Bayesian-Elo
Fantius

एक घंटे के
गुगली करने

40

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

इसे ठीक करने के विभिन्न प्रयास हैं - समय-समय पर सकारात्मक वोटों की संख्या को देखते हुए, अधिक हाल के वोटों को भारित करते हुए, पुराने वोटों के लिए एक क्षय प्रणाली को लागू करते हुए, सकारात्मक से नकारात्मक वोटों के अनुपात की गणना करना, आदि अधिकांश अन्य दोषों से ग्रस्त हैं।

सबसे अच्छा समाधान - मुझे लगता है - एक यह है कि वेबसाइट सबसे मजेदार द क्यूटेस्ट , द फेयरेस्ट और बेस्ट थिंग उपयोग - एक संशोधित कोंडोरसेट वोटिंग सिस्टम :

सिस्टम प्रत्येक को एक नंबर देता है जो उन चीजों से बाहर होता है, जिनका सामना करना पड़ता है, उनमें से कितने प्रतिशत यह आमतौर पर धड़कता है। तो हर एक को अंक स्कोर अंक प्राप्त होता है इसके अलावा, चीजों को शीर्ष सूची से तब तक रोक दिया जाता है जब तक कि उनकी तुलना सेट के उचित प्रतिशत से न की गई हो।

यदि सेट में एक कोंडोरसेट विजेता है, तो यह विधि उसे खोज लेगी। चूंकि यह असंभाव्य है, इसलिए सांख्यिकीय प्रकृति को देखते हुए, यह एक ऐसा है जो कॉन्डोर्सेट विजेता होने के लिए "निकटतम" है।

ऐसी प्रणालियों को लागू करने के बारे में अधिक जानकारी के लिए रैंक किए गए जोड़े पर विकिपीडिया पृष्ठ सहायक होना चाहिए।

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

एक अंतिम बिंदु यह है कि SO सबसे अच्छे उत्तरों को खोजने के लिए एक एल्गोरिथ्म का उपयोग करता है जो bash.org के एल्गोरिथ्म के समान है जो सबसे अच्छा उद्धरण खोजने के लिए है। यह यहाँ अच्छी तरह से काम करता है, लेकिन वहाँ बहुत हद तक विफल रहता है - एक बड़े हिस्से में, क्योंकि एक पुरानी, ​​उच्च श्रेणी निर्धारण की गई, लेकिन अब यहां पुराने उत्तर को संपादित करने की संभावना है। bash.org संपादन की अनुमति नहीं देता है, और यह स्पष्ट नहीं है कि आप अब तक के दशकों पुराने चुटकुलों के बारे में कैसे संपादित करेंगे, भले ही आप कर सकते हैं, भले ही किसी भी मामले में ... किसी भी मामले में, मेरा कहना है कि सही एल्गोरिथ्म आमतौर पर है आपकी समस्या के विवरण पर निर्भर करता है। :-)


कोंडोरेट वोटिंग सिस्टम के संदर्भ के लिए धन्यवाद, जांच की यह पंक्ति मुझे इस उपयोगी विकिपीडिया पृष्ठ
पॉल डिक्सन

इन साइटों ने कहा कि वे "टूट गए" और तब से छोड़ दिए गए हैं। मुझे पता नहीं है कि एल्गोरिथ्म छोटी गाड़ी थी या सिर्फ कार्यान्वयन।
16

11

मुझे पता है कि यह सवाल काफी पुराना है लेकिन मुझे लगा कि मैं इसमें योगदान दूंगा

मैं माइक्रोसॉफ्ट रिसर्च में विकसित ट्रूस्किल सिस्टम को देखूंगा। यह ईएलओ की तरह है, लेकिन इसमें बहुत अधिक अभिसरण समय है (रैखिक की तुलना में घातीय दिखता है), इसलिए आप प्रत्येक वोट से अधिक प्राप्त करते हैं। हालांकि, यह गणितीय रूप से अधिक जटिल है।

http://en.wikipedia.org/wiki/TrueSkill


ट्रूस्किल की अवधारणा "मैच" के आधार पर चीजों को रैंक करने के लिए बहुत संभावनाएं प्रदान करती हैं। प्रासंगिक विज्ञापनों को प्रस्तुत करने के लिए बिंग द्वारा परिचित अवधारणाओं का उपयोग किया जाता है। मैंने moserware.com/2010/03/computing-your-skill.html पर TrueSkill
जेफ मोजर

8

मुझे हॉट-ऑर-नॉट स्टाइल पसंद नहीं है । भले ही वे सभी छवि को समान रूप से पसंद करते हों, विभिन्न लोग अलग-अलग संख्याएँ चुनेंगे। इसके अलावा मुझे 10 में से रेटिंग चीजों से नफरत है, मुझे कभी नहीं पता कि किस नंबर को चुनना है।

उठाओ ए-या-बी बहुत सरल और मजेदार है। आपको दो चित्र देखने को मिलते हैं, और साइट पर छवियों के बीच तुलना की जाती है।


5

विकिपीडिया से ये समीकरण एलो रेटिंग की गणना को सरल / अधिक प्रभावी बनाता है, छवियों ए और बी के लिए एल्गोरिदम सरल होगा:

  • अपने डेटाबेस से Ne, mA, mB और रेटिंग RA, RB प्राप्त करें।
  • प्रदर्शन किए गए तुलनाओं (Ne) और उस छवि की तुलना की गई संख्या (वर्तमान) और वर्तमान रेटिंग की तुलना करके KA, KB, QA, QB की गणना करें:

क

क्यूए

QB

  • ईए और ईबी की गणना करें।

ईए

ईबी

  • विजेता का स्कोर: 1 के रूप में विजेता, 0 के रूप में हारने वाला, और यदि आपके पास 0.5 के रूप में ड्रॉ है,
  • दोनों के उपयोग के लिए नई रेटिंग की गणना करें: नई रेटिंग

  • डेटाबेस में नई रेटिंग RA, RB और काउंट mA, mB को अपडेट करें।


4

आप एक संयोजन के साथ जाना चाह सकते हैं।

पहला चरण: हॉट-ऑर-नॉट स्टाइल (हालाँकि मैं एक 3 विकल्प वोट के साथ जाऊँगा: बेकार, मेह / ओके! कूल!)।

एक बार जब आप सेट को 3 बाल्टियों में क्रमबद्ध कर लेते हैं, तो मैं एक ही बाल्टी से दो छवियों का चयन करूँगा और "कौन सा अच्छा है"

फिर आप शीर्ष मामलों को परिष्कृत करने के लिए मेहम / ओके क्षेत्र में शीर्ष कुछ "बेकार" को स्थानांतरित करने के लिए पदोन्नति और डिमोशन की एक अंग्रेजी सॉकर प्रणाली का उपयोग कर सकते हैं।


4

रैंकिंग 1-10 से काम नहीं चलेगा, सभी के अलग-अलग स्तर हैं। कोई व्यक्ति जो हमेशा 3-7 रेटिंग देता है, उसकी रैंकिंग उन लोगों द्वारा ग्रहण की जाएगी जो हमेशा 1 या 10 देते हैं।

a-or-b अधिक व्यावहारिक है।


मैं इसकी सराहना करता हूं, लेकिन मुझे लगा कि अगर मैं सुनिश्चित करूं कि प्रत्येक छवि को समान संख्या में वोट मिले, तो यह औसत होना चाहिए। परेशानी यह है कि मुझे लगता है कि मुझे प्रत्येक छवि पर लगभग 10 वोटों की आवश्यकता होगी, जो कि उपरोक्त संख्याओं के आधार पर मुझे 13 साल लगेंगे। जिस समय तक मेरे पास एक और 5 मिलियन चित्र होंगे :)
पॉल डिक्सन

1
चूंकि लोग या तो औसत या उच्च / निम्न के साथ जाते हैं, अगर आप ऐसा करने का निर्णय लेते हैं, तो मेरा सुझाव है कि आप 1-10 के बजाय 1-5 को कम करें।
K पर बिल K

3

वाह, मुझे खेल में देर हो गई है।

मुझे ईएलओ प्रणाली बहुत पसंद है, लेकिन ओवेन कहते हैं कि यह मुझे लगता है कि आप किसी भी महत्वपूर्ण परिणाम को धीमा कर देंगे।

मेरा मानना ​​है कि इंसानों में सिर्फ दो छवियों की तुलना करने की तुलना में बहुत अधिक क्षमता है, लेकिन आप नंगे न्यूनतम करने के लिए बातचीत करना चाहते हैं।

तो आप कैसे n चित्र दिखाते हैं (किसी भी संख्या में होने पर आप एक स्क्रीन पर नेत्रहीन रूप से प्रदर्शित कर सकते हैं, यह उपयोगकर्ता की पसंद के आधार पर 10, 20, 30 हो सकता है) और उन्हें लेने के लिए जो उन्हें लगता है कि उस लॉट में सबसे अच्छा है। अब वापस ELO के लिए। आपको रेटिंग सिस्टम को संशोधित करने की आवश्यकता है, लेकिन उसी भावना को बनाए रखें। आपने वास्तव में एक छवि की तुलना एन -1 अन्य से की है। तो आप अपनी ईएलओ रेटिंग को एन -1 बार करते हैं, लेकिन आपको रेटिंग के बदलाव को एन -1 से मैच के लिए विभाजित करना चाहिए (ताकि एन के विभिन्न मूल्यों के परिणाम एक दूसरे के साथ सुसंगत हों)।

हो गया। अब आप सभी दुनिया में सर्वश्रेष्ठ हो गए हैं। एक साधारण रेटिंग सिस्टम एक क्लिक में कई छवियों के साथ काम करता है।


3

यदि आप पिक ए या बी रणनीति का उपयोग करना पसंद करते हैं तो मैं इस पेपर की सिफारिश करूंगा: http://research.microsoft.com/en-us/um/people/horvitz/crowd_pairwise.pdf

चेन, एक्स।, बेनेट, पीएन, कॉलिन्स-थॉम्पसन, के।, और हॉर्विट्ज़, ई। (2013, फरवरी)। एक भीड़ सेटिंग में जोड़ीदार रैंकिंग एकत्रीकरण। वेब खोज और डेटा खनन पर छठे एसीएम अंतर्राष्ट्रीय सम्मेलन की कार्यवाही में (पीपी। 193-202)। एसीएम।

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



1

A-or-B को इसके सबसे सरल और कम पूर्वाग्रह के लिए चुनें, हालांकि प्रत्येक मानव बातचीत में यह आपको काफी कम जानकारी देता है। मुझे लगता है कि पूर्वाग्रह में कमी के कारण, पिक बेहतर है और सीमा में यह आपको समान जानकारी प्रदान करता है।

एक बहुत ही सरल स्कोरिंग योजना प्रत्येक चित्र के लिए एक गिनती है। जब कोई सकारात्मक तुलना में वृद्धि को गिनता है, जब कोई नकारात्मक तुलना देता है, तो गणना में वृद्धि करता है।

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

यह कहा गया है, समस्या बल्कि बीमार है - यह आपको प्रत्येक छवि को केवल एक बार दिखाने के लिए 50 दिन का समय लगेगा।

मुझे यकीन है कि आप सबसे उच्च रैंक छवियों में अधिक रुचि रखते हैं? तो, आप शायद अपनी छवि पुनर्प्राप्ति को पूर्वाग्रहित श्रेणी के आधार पर करना चाहते हैं - इसलिए आपको उन छवियों को दिखाने की अधिक संभावना है जो पहले से ही कुछ सकारात्मक तुलनाएं हासिल कर चुके हैं। इस तरह से आप और अधिक तेजी से सिर्फ 'दिलचस्प' चित्र दिखाना शुरू करेंगे।


मैं पेज व्यूज के साथ शुरुआती रैंकिंग देख सकता हूं, जो शायद मदद भी करे।
पॉल डिक्सन

"बीज" कहना चाहिए, "देखना" नहीं!
पॉल डिक्सन

यह "4 में से सर्वश्रेष्ठ चुन सकता है" और फिर प्रत्येक वोट के लिए 3 जोड़ीदार रैंकिंग के रूप में गिना जाता है
एंडोलिथ

1

मुझे क्विक-सॉर्ट विकल्प पसंद है लेकिन मैं कुछ ट्वीक्स बनाऊंगा:

  • "तुलना" परिणामों को एक DB में रखें और फिर उन्हें औसत करें।
  • उपयोगकर्ता को 4-6 चित्र देकर और उन्हें क्रमबद्ध करके प्रति दृश्य एक से अधिक तुलनाएँ प्राप्त करें।
  • Qort और रिकॉर्डिंग चलाकर और ऐसी किसी भी चीज़ को ट्रिम करके प्रदर्शित करें, जिसे आपके पास पर्याप्त डेटा नहीं है। फिर जब आपके पास पर्याप्त आइटम रिकॉर्ड हो जाएं, तो एक पृष्ठ थूक दें।

दूसरा मजेदार विकल्प भीड़ का उपयोग एक तंत्रिका-जाल सिखाने के लिए होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.