5

मान लीजिए कि मैं संभावना को निर्धारित करना चाहता हूं कि मैं SO पर एक प्रश्न उठाऊंगा, केवल उस पर आधारित है कि टैग मौजूद हैं या अनुपस्थित हैं।क्या कोई पर्यवेक्षित शिक्षण एल्गोरिदम है जो इनपुट के रूप में टैग लेता है, और आउटपुट के रूप में संभावना उत्पन्न करता है?

आइए यह भी कल्पना करें कि मेरे पास पिछले प्रश्नों के बारे में बहुत सारी जानकारी है जो मैंने किया या नहीं किया।

क्या कोई मशीन सीखने वाला एल्गोरिदम है जो इस ऐतिहासिक डेटा को ले सकता है, उस पर ट्रेन कर सकता है, और फिर भविष्य के प्रश्नों के लिए मेरी अपवॉट संभावना की भविष्यवाणी करने में सक्षम हो सकता है? ध्यान दें कि यह संभाव्यता होना चाहिए, न केवल कुछ मनमाना स्कोर।

मान लीजिए कि किसी दिए गए प्रश्न से जुड़े 7 टैग होंगे, इन्हें हजारों के सुपरसैट से खींचा जा रहा है।

मेरी आशा यह है कि यह टैग के बीच काफी परिष्कृत कनेक्शन बनाने में सक्षम है, प्रत्येक टैग की तुलना में केवल "रेखीय" तरीके से अंत परिणाम में योगदान देने के बजाय (जैसे बेयसियन स्पैम फ़िल्टर में शब्द करते हैं)।

तो उदाहरण के लिए, यह हो सकता है कि "जावा" शब्द मेरी अपवोट संभावना को बढ़ाता है, सिवाय इसके कि जब यह "डेटाबेस" के साथ मौजूद होता है, हालांकि "डेटाबेस" "रूबी" के साथ मौजूद होने पर मेरी अपवोट संभावना को बढ़ा सकता है।

ओह, और यह कम्प्यूटेशनल रूप से उचित होना चाहिए (लाखों प्रश्नों पर एक या दो घंटे के भीतर प्रशिक्षण)।

मैं यहां किस दृष्टिकोण का शोध करूँ?

+0

बैकप्रॉप आउटपुट के रूप में संभावनाएं उत्पन्न नहीं करता है, है ना? नोड के सक्रियण कार्यों अक्सर सिग्मोइड वक्र होते हैं, जो संभावनाओं के साथ बहुत कम है। – sanity

उत्तर

4

यह देखते हुए कि प्रति संदेश कई टैग नहीं हैं, तो आप केवल "एन-ग्राम" टैग बना सकते हैं और बेवकूफ बेयस लागू कर सकते हैं। रिग्रेशन पेड़ पत्ती नोड्स पर एक अनुभवजन्य संभावना भी उत्पन्न करेगा, अपवोट के लिए +1 का उपयोग करके और 0 अपवॉट के लिए 0 का उपयोग करेगा। खुले स्रोत कार्यान्वयन के लिए कुछ पठनीय व्याख्यान नोट्स और http://sites.google.com/site/rtranking/ के लिए http://www.stat.cmu.edu/~cshalizi/350-2006/lecture-10.pdf देखें।

1

आप कई विधियों (रैखिक प्रतिगमन, एसएमवी, तंत्रिका नेटवर्क) का प्रयास कर सकते हैं। इनपुट वेक्टर में सभी संभावित टैग शामिल होना चाहिए, जहां प्रत्येक टैग एक आयाम का प्रतिनिधित्व करता है।

फिर प्रशिक्षण सेट में प्रत्येक रिकॉर्ड को टैग के अनुसार इनपुट वेक्टर में बदलना होगा। उदाहरण के लिए मान लीजिए कि आपके प्रशिक्षण सेट (PHP, रूबी, एमएस, एसक्यूएल) में 4 टैग के विभिन्न संयोजन हैं और आप एक असीमित इनपुट वेक्टर [php, ruby, ms, sql] को परिभाषित करते हैं। मान लीजिए कि आप निम्नलिखित 3 रिकॉर्ड जो भारित इनपुट वैक्टर में तब्दील हो रहे हैं दो:

php, एसक्यूएल -> [1, 0, 0, 1]

माणिक -> [0, 1, 0, 0]

एमएस, एसक्यूएल -> [0, 0, 1, 1]

मामले में आप रेखीय प्रतीपगमन आप निम्न सूत्र

y = कश्मीर * एक्स

जहां y एक का प्रतिनिधित्व करता है का उपयोग करें का उपयोग करें उत्तर (upv ote/downvote) अपने मामले में और ज्ञात मूल्यों (एक्स - भारित इनपुट वैक्टर) डालने से।

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

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

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