अजगर में पूरक Naive Bayes लागू करना?


9

मुसीबत

मैंने अपराध डेटा के एक लेबल डेटा सेट पर Naive बेयस का उपयोग करने की कोशिश की है लेकिन वास्तव में खराब परिणाम (7% सटीकता) मिला है। Naive Bayes मेरे द्वारा उपयोग किए जा रहे अन्य एलोगोरिथम्स की तुलना में बहुत तेज़ी से चलता है इसलिए मैं यह जानने की कोशिश करना चाहता था कि स्कोर इतना कम क्यों था।

अनुसंधान

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

कुछ शोध करने के बाद मैं जावा में एक कार्यान्वयन खोजने में सक्षम था, लेकिन दुर्भाग्य से मैं किसी भी जावा को नहीं जानता और मैं अभी खुद को लागू करने के लिए एल्गोरिथ्म को अच्छी तरह से नहीं समझता।

सवाल

जहां मैं अजगर में एक कार्यान्वयन पा सकते हैं? यदि यह मौजूद नहीं है, तो मुझे इसे स्वयं लागू करने के बारे में कैसे जाना चाहिए?

जवाबों:


5

Naive Bayes को असंतुलित डेटासेट को संभालने में सक्षम होना चाहिए। स्मरण करो कि बेयस सूत्र है

P(yx)=P(xy)P(y)P(x)P(xy)P(y)

तो पूर्व को ध्यान में रखता है।P(xy)P(y)P(y)

आपके मामले में शायद आप ओवरफिट करते हैं और कुछ चौरसाई की जरूरत है? आप +1 चौरसाई से शुरू कर सकते हैं और देख सकते हैं कि यह कोई सुधार देता है या नहीं। अजगर में, जब सुन्न का उपयोग करते हैं, तो मैं इस तरह से चौरसाई को लागू करूंगा:

table = # counts for each feature 
PT = (table + 1) / (table + 1).sum(axis=1, keepdims=1)

ध्यान दें कि यह आपको बहुराष्ट्रीय Naive Bayes देता है - जो केवल श्रेणीबद्ध डेटा पर लागू होता है।

मैं निम्नलिखित लिंक का भी सुझाव दे सकता हूं: http://www.itsaring.org/2015/03/naive-bayes-on-apache-flink.html । यह Apache Flink पर Naive Bayes को लागू करने के बारे में है। जबकि यह जावा है, शायद यह आपको कुछ सिद्धांत देगा जो आपको एल्गोरिथ्म को बेहतर ढंग से समझने की आवश्यकता है।


आप सही हो सकते हैं ऐसा लगता है कि भोले बेयस में केवल पाठ वर्गीकरण के साथ असंतुलन की समस्या है। क्या आप बता सकते हैं कि स्मूथिंग क्या है?
टिड्डा

क्या आपने लिंक को देखा है? यह वहाँ समझाया गया है। संक्षेप में, जब आकलन करते समय कभी-कभी को प्रशिक्षण के दौरान कभी नहीं देखा जाता है और स्मूथिंग सुनिश्चित करता है कि यह सभी सुविधाओं में कुछ अतिरिक्त गणना (लैप्लस या +1 स्मूथिंग के लिए) जोड़कर क्लासिफायर प्रदर्शन को बर्बाद नहीं करता है। । P(xy)x
एलेक्सी ग्रिगोरेव

0

स्किकिट-लर्न में कॉम्प्लीमेंटेड नाइव बेज़ का मेरा कार्यान्वयन यहां पाया जा सकता है

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