2008-10-02 8 views
78

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

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

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

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

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

+1

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

+0

@freespace मुझे आपके एल्गोरिदम के लिए पाइथन स्रोत देखने में रुचि होगी। – akaihola

+0

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

उत्तर

90

जैसा कि अन्य ने कहा है, 1-10 रैंकिंग अच्छी तरह से काम नहीं करती है क्योंकि लोगों के पास अलग-अलग स्तर होते हैं।

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

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

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

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

एलो सिस्टम:

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

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

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

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

+2

ट्रांजिटीविटी बिल्कुल कोई फर्क नहीं पड़ता। आप सिर्फ लोगों की राय को जोड़ना चाहते हैं और आप उम्मीद करेंगे कि वे रैंकिंग पर असहमत हों। लोग डेटा का शोर स्रोत हैं और संगत नहीं हैं। – Owen

+0

एलो सिस्टम के स्पष्ट स्पष्टीकरण के लिए धन्यवाद। –

+3

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

4

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

प्रथम चरण: गर्म या नहीं शैली (हालांकि मैं एक 3 विकल्प वोट के साथ जाना होगा:।! बेकार है, मेह/ठीक कूल)

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

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

8

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

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

4

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

ए-या-बी अधिक काम करने योग्य है।

+0

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

+1

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

1

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

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

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

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

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

+0

मैं पृष्ठ दृश्यों के साथ प्रारंभिक रैंकिंग देख सकता हूं, जो भी मदद कर सकता है। –

+0

जो "बीज" कहना चाहिए, "देखें" नहीं! –

+0

यह "4 में से सबसे अच्छा चुन सकता है" और फिर यह प्रत्येक वोट – endolith

39

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

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

सबसे अच्छा समाधान - मुझे लगता है कि - एक वेबसाइटों The FunniestThe Cutest, The Fairest, और Best Thing उपयोग कि है - एक modified Condorcet voting system:

प्रणाली हर एक के आधार पर एक नंबर, चीजों से बाहर देता है कि इसका सामना करना पड़ा है, उनमें से किस प्रतिशत में आमतौर पर धड़कता है। इसलिए प्रत्येक को प्रतिशत स्कोर प्राप्त होता है NumberOfThingsIBeat/(NumberOfThingsIBeat + NumberOfThingsThatBeatMe)। साथ ही, चीजों को शीर्ष सूची से प्रतिबंधित कर दिया जाता है जब तक कि उनकी तुलना सेट के उचित प्रतिशत से नहीं की जाती है।

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

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

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

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

+0

के लिए 3 जोड़ी रैंकिंग के रूप में गिना जाता है कोंडोरसेट मतदान प्रणाली के संदर्भ के लिए धन्यवाद, पूछताछ की रेखा मुझे इस उपयोगी विकिपीडिया पृष्ठ http: //en.wikipedia .org/wiki/Ranked_Pairs –

+0

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

2

निष्क्रिय वेब साइट whatsbetter.com ने Elo style method का उपयोग किया। आप अपने FAQ on the Internet Archive में विधि के बारे में पढ़ सकते हैं।

5

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

  • जाओ Ne, एमए, MB और रेटिंग आरए, आरबी ।
  • गणना KA, KB, गुणवत्ता आश्वासन, प्रदर्शन की तुलना की संख्या (Ne) और उस छवि तुलना की जाती थी समय की संख्या (एम) और मौजूदा रेटिंग का उपयोग करके QB:

K

QA

QB

  • गणना ईए और EB।

EA

EB

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

  • नई रेटिंग अपडेट करें आरए, आरबी और डेटाबेस में एमए, एमबी मायने रखता है।

1

मैं जल्दी प्रकार विकल्प पसंद है, लेकिन मैं कुछ tweeks बनाने चाहते हैं:

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

अन्य मजेदार विकल्प भीड़ का उपयोग करने के लिए भीड़ का उपयोग करना होगा।

11

मैं जानता हूँ कि इस सवाल का काफी पुराना है लेकिन मैंने सोचा कि मैं

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

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

+0

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

+0

ट्रूस्किल में एक अद्भुत पायथन लाइब्रेरी भी है - http://trueskill.org/ –

3

वाह, मैं खेल में देर हो रही है।

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

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

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

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

3

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

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

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

संबंधित मुद्दे

 संबंधित मुद्दे