पाठ वर्गीकरण: विभिन्न प्रकार की विशेषताओं का संयोजन


19

मैं जिस समस्या से निपट रहा हूं, वह छोटे ग्रंथों को कई वर्गों में वर्गीकृत कर रही है। मेरा वर्तमान तरीका tf-idf वेटेड टर्म फ्रिक्वेंसी का उपयोग करना है और एक सरल रैखिक क्लासिफायरियर (लॉजिस्टिक रिग्रेशन) सीखना है। यह उचित रूप से अच्छी तरह से काम करता है (परीक्षण सेट पर लगभग 90% मैक्रो एफ -1, प्रशिक्षण सेट पर लगभग 100%)। एक बड़ी समस्या अनदेखी शब्द / एन-ग्राम हैं।

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

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


3
कुछ अपडेट: मैं अतिरिक्त घने वैक्टर को l2-normal करके स्वीकार्य परिणाम प्राप्त करने में सक्षम था। मैंने गलत तरीके से माना कि स्केलेरन स्टैंडर्डस्लेकर ऐसा करेगा। मैं अभी भी अधिक जटिल तरीकों की तलाश कर रहा हूं, हालांकि, यह मुझे लेबल निर्भरता को मॉडल करने या उप-वर्गीकरणकर्ताओं के आत्मविश्वास को शामिल करने की अनुमति देगा।
इल्मिले

मैं पिछले साल एक ही प्रयोग कर रहा था और ठीक वही समस्या आपके सामने आ रही थी। L2-normalizing प्रक्रिया के बाद आपका word2vec वेक्टर BOW को हरा सकता है? मैंने l2-normalizing नहीं किया है, लेकिन कई पोस्ट प्रोसेसिंग विधि सिमेंटिक वेक्टर के परीक्षण के बाद भी BOW tf / idf फीचर्स के पीछे 2-4 निरपेक्ष प्रतिशत है, मुझे आश्चर्य है कि दिशा एक डेडेंड है। मेरी मूल मांग पारंपरिक BOW के साथ घनी अर्थ वेक्टर को संयोजित करना है और देखना है कि क्या यह विषय वर्गीकरण / मॉडलिंग प्रदर्शन को बढ़ा सकता है। BTW: क्या डेटा सेट पर आप काम कर रहे हैं, मेरा 20newsgroup है।

मैं CIKM 2014 प्रतियोगिता के लिए एक डेटासेट के साथ काम कर रहा था। मेरे लिए, वेक्टर प्रतिनिधित्व कभी भी tf-idf वेट के साथ BOW को हरा नहीं पाए। मेरी योजना गुणवत्ता में सुधार के अलावा उनका उपयोग करना था। मेरे अनुभव में (पाठ वर्गीकरण के लिए) tf-idf + n-gr के साथ एक रैखिक मॉडल का कुछ रूप एक अत्यंत मजबूत दृष्टिकोण है। मैं वर्तमान में कॉन्फिडेंशियल न्यूरल नेटवर्क के साथ प्रयोग कर रहा हूं और यहां तक ​​कि इन (अधिक या कम) जटिल मॉडलों के साथ जो हरा करने के लिए कठिन दृष्टिकोण रखते हैं।
एलमिले

मॉड के लिए: क्षमा करें कि मेरे पास 50 प्रतिष्ठा नहीं है, इसलिए मैं टिप्पणी क्षेत्र में नहीं लिख सकता। हाय एल्मिल: हाँ, यही वह है जो मैं सभी परीक्षाओं में अनुभव करता हूं। हालाँकि, क्या आपको वह शब्द vec + BOW मदद करता है? मेरे अनुभव में, जब मैं BOW tf-idf के साथ शब्द vec को संक्षिप्त करता हूं (मेरे मामले में यह vec वास्तव में पूरे लेख के भीतर एक समग्र वेक्टर है, इसका शब्द-शब्द नहीं बल्कि बहुत समान है), तो प्रदर्शन और भी कम हो जाता है। मैं मूल रूप से सोचता हूं कि यह BOW + vec> BOW> vec होना चाहिए। चूंकि उनमें पारस्परिक रूप से सहायक जानकारी होती है। वास्तव में परिणाम BOW> vec> BOW + vec है। तब मैं मानक स्केलिंग और सामान्यीकरण करने के लिए

जवाबों:


13

अगर मैं सही तरीके से समझूं, तो आपके पास अनिवार्य रूप से आपके मॉडलों के लिए दो प्रकार की विशेषताएं हैं। (1) पाठ डेटा जिसे आपने शब्दों के विरल बैग के रूप में दर्शाया है और (2) अधिक पारंपरिक सघन विशेषताएं। अगर ऐसा है तो 3 सामान्य दृष्टिकोण हैं:

  1. TruncatedSVDघने बनाने के लिए अपने विरल डेटा पर आयामीता में कमी (जैसे एलएसए के माध्यम से ) करें और अपने मॉडल (यों) को प्रशिक्षित करने के लिए विशेषताओं को एक ही घने मैट्रिक्स में संयोजित करें।
  2. hstackअपने मॉडल (नों) को प्रशिक्षित करने के लिए स्कार्पी में एक स्कार्पी की तरह कुछ का उपयोग करके अपने विरल मैट्रिक्स में अपनी कुछ सघन सुविधाओं को जोड़ें ।
  3. केवल अपने विरल पाठ डेटा का उपयोग करके एक मॉडल बनाएं और फिर इसकी भविष्यवाणियों (संभावनाओं को मिलाएं यदि यह वर्गीकरण है) एक मॉडल बनाने के लिए आपके अन्य घने सुविधाओं के साथ एक घने सुविधा के रूप में (यानी: स्टैकिंग के माध्यम से कलाकारों की टुकड़ी)। यदि आप इस मार्ग को केवल अपने मॉडल को प्रशिक्षित करने के लिए CV भविष्यवाणियों के रूप में उपयोग करने के लिए याद करते हैं, तो आप संभवतः बहुत बुरी तरह से ओवरफिट करेंगे (आप चाहें तो एक एकल के भीतर यह सब करने के लिए काफी वर्ग बना सकते हैं Pipeline)।

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

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


10

रैखिक मॉडल बस इसी वजन से गुणा अपनी सुविधाओं को जोड़ते हैं। यदि, उदाहरण के लिए, आपके पास 1000 विरल सुविधाएँ हैं जिनमें से केवल 3 या 4 हैं, जो प्रत्येक उदाहरण में सक्रिय हैं (और अन्य शून्य हैं) और 20 सघन विशेषताएं हैं जो सभी गैर शून्य हैं, तो यह बहुत संभावना है कि घने विशेषताएं सबसे अधिक होंगी विरल विशेषताओं का प्रभाव केवल थोड़ा मूल्य जोड़ देगा। आप कुछ उदाहरणों के लिए फीचर वेट देख कर यह जांच सकते हैं कि वे परिणामी राशि को कैसे प्रभावित करते हैं।

इसे ठीक करने का एक तरीका एडिटिव मॉडल से दूर जाना है। यहाँ कुछ उम्मीदवार मॉडल हैं।

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

अपने नाम के बावजूद, Naive Bayes बहुत शक्तिशाली सांख्यिकीय मॉडल है जिसने पाठ वर्गीकरण के लिए अच्छे परिणाम दिखाए हैं। यह विरल और घने विशेषताओं की आवृत्ति में असंतुलन को पकड़ने के लिए पर्याप्त लचीला है, इसलिए आपको इसे निश्चित रूप से आज़माना चाहिए।

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

ध्यान दें कि इन सभी विधियों में उनकी कमियां हैं जो उन्हें आपके मामले में कचरे में बदल सकती हैं। विरल और सघन सुविधाओं का आना वास्तव में अच्छी तरह से अध्ययन का काम नहीं है, तो आइए जानते हैं कि आपके मामले के लिए इनमें से कौन सा दृष्टिकोण सबसे अच्छा है।


आपके उत्तर के लिए धन्यवाद! मेरे दो फॉलो-अप प्रश्न हैं :) 1) SVM (एक रैखिक कर्नेल के साथ) और Naive Bayes कैसे अलग हैं, जिसमें वे अपनी सुविधाओं और संबंधित भार (यानी जिसे आप "एडिटिव मॉडल" कहते हैं) को योग नहीं करते हैं? दोनों प्रभावी रूप से एक अलग हाइपरप्लेन बनाते हैं, इसलिए इसका परिणाम हमेशा किसी न किसी तरह की विशेषताओं को इसी वज़न से गुणा करना होता है? 2) मैं यादृच्छिक जंगलों की कोशिश करना चाहता हूं, लेकिन दुर्भाग्य से घने प्रारूप में इसका प्रतिनिधित्व करने के लिए फीचर स्पेस बहुत बड़ा है (मैं स्केनर का उपयोग कर रहा हूं)। क्या कोई कार्यान्वयन है जो इसे संभाल सकता है?
22

1) रेखीय प्रतीपगमन में आप अंक में रुचि रखने वाले कर रहे हैं पर hyperplane, इस प्रकार आप की भविष्यवाणी की बात समझ को भारित सुविधाओं को जोड़ने। एसवीएम में, दूसरी ओर, आप हाइपरप्लेन के किनारों पर बिंदु खोज रहे हैं । आप साधारण जाँच के आधार पर वर्गीकरण करते हैं कि आपका उदाहरण किस पक्ष में है, भविष्यवाणी के दौरान कोई योग शामिल नहीं है। Naive Bayes में विभिन्न प्रकार के मॉडल (जैसे द्विपद या बहुपद) शामिल हो सकते हैं, लेकिन मूल रूप से आप संभावनाओं को गुणा करते हैं, उन्हें जोड़ते नहीं हैं।
ffriend

2) मैंने इस विषय में कुछ शोध देखे हैं, लेकिन कभी भी कार्यान्वयन का सामना नहीं किया (शायद गुग्लिंग यहाँ कुछ लिंक देगा)। हालांकि, आप हमेशा दूसरे तरीके से जा सकते हैं - पीसीए के साथ आयामीता को कम करें, कहें और फिर घटे हुए डेटासेट के आधार पर यादृच्छिक वन चलाएं।
ffriend
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.