Naive Bayes वर्गीकरण की एक सरल व्याख्या


546

मुझे Naive Bayes की प्रक्रिया को समझना मुश्किल हो रहा है, और मैं सोच रहा था कि क्या कोई इसे अंग्रेजी में कदम प्रक्रिया द्वारा एक सरल कदम के साथ समझा सकता है। मैं समझता हूं कि यह एक संभावना के रूप में होने वाले समय की तुलना करता है, लेकिन मुझे नहीं पता कि प्रशिक्षण डेटा वास्तविक डेटासेट से कैसे संबंधित है।

कृपया मुझे एक स्पष्टीकरण दें कि प्रशिक्षण सेट किस भूमिका निभाता है। मैं यहां फलों के लिए एक बहुत ही सरल उदाहरण दे रहा हूं, उदाहरण के लिए केला

training set---
round-red
round-orange
oblong-yellow
round-red

dataset----
round-red
round-orange
round-red
round-orange
oblong-yellow
round-red
round-orange
oblong-yellow
oblong-yellow
round-red

18
यदि आप बेयस प्रमेय को समझते हैं तो यह काफी आसान है। यदि आप 'बेयस प्रमेय पर' पढ़ते हैं, तो इस लिंक को yudkowsky.net/rational/bayes पर देखें
चुटकी

1
कृपया अपना उदाहरण स्पष्ट करें। आपके प्रशिक्षण सेट में पहली पंक्ति के लिए: गोल को लाल के रूप में वर्गीकृत किया गया है, या दोनों गोल और लाल चर हैं जिन्हें कुछ और के रूप में वर्गीकृत किया गया है? यदि यह बाद की बात है, तो आपके प्रशिक्षण सेट में प्रत्येक प्रविष्टि के लिए वर्गीकरण क्या हैं?
के मेहता

22
नोट: नीचे स्वीकार किए गए उत्तर Na Bayve Bayes के लिए एक पारंपरिक उदाहरण नहीं है। यह ज्यादातर ak निकटतम पड़ोसी कार्यान्वयन है। तदनुसार पढ़ें।
चुमलीग

1
@ जैगरजैक: रामनरसिम्हन के उत्तर को स्वीकृत उत्तर की तुलना में अच्छी तरह समझाया गया है।
अनमैशा श्रीवेनी

2
अगर किसी को कुछ बिंदुओं के साथ एक ग्राफ दिखाई देता है, जिसका वास्तव में यह मतलब नहीं है कि यह KNN है: आप संभावनाओं की गणना कैसे करते हैं, यह आप पर निर्भर है। Naive Bayes ने संभावना से पहले गुणा का उपयोग करके इसकी गणना की ताकि यवार ने अपने उत्तर में दिखाया हो। उन संभावनाओं पर कैसे पहुंचे वास्तव में यहाँ महत्वपूर्ण नहीं है। उत्तर बिल्कुल सही है और मुझे इसमें कोई समस्या नहीं दिख रही है।
अविनाश शाह

जवाबों:


671

आपका प्रश्न जैसा कि मैं समझता हूं कि इसे दो भागों में विभाजित किया गया है, एक भाग आपको Naive Bayes के क्लासिफायरियर की बेहतर समझ की आवश्यकता है और भाग दो को प्रशिक्षण सेट के आस-पास भ्रम होने की आवश्यकता है।

सामान्य तौर पर मशीन लर्निंग के सभी एल्गोरिदम को वर्गीकरण, भविष्यवाणी आदि जैसे पर्यवेक्षित शिक्षण कार्यों के लिए प्रशिक्षित किया जाना चाहिए या अव्यवस्थित शिक्षण कार्यों जैसे क्लस्टरिंग के लिए।

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

तो एक सामान्य मशीन लर्निंग प्रोजेक्ट में मूल रूप से आपको अपने इनपुट सेट को डेवलपमेंट सेट (ट्रेनिंग सेट + देव-टेस्ट सेट) और टेस्ट सेट (या मूल्यांकन सेट) में विभाजित करना होगा। याद रखें कि आपका मूल उद्देश्य यह होगा कि आपका सिस्टम नए इनपुट्स को सीखे और वर्गीकृत करे जो उन्होंने पहले कभी देव सेट या टेस्ट सेट में नहीं देखे हैं।

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

सामान्य तौर पर, उदाहरण के लिए, हमारे डेटा का 70% प्रशिक्षण सेट मामलों के रूप में उपयोग किया जा सकता है। यह भी याद रखें कि मूल सेट को प्रशिक्षण और परीक्षण सेटों में बेतरतीब ढंग से विभाजित करना ।

अब मैं आपके अन्य प्रश्नों के बारे में आता हूँ Naive Bayes।

Naesve Bayes वर्गीकरण की अवधारणा को प्रदर्शित करने के लिए, नीचे दिए गए उदाहरण पर विचार करें:

यहाँ छवि विवरण दर्ज करें

जैसा कि संकेत दिया गया है, वस्तुओं को या तो वर्गीकृत किया जा सकता है GREENया RED। हमारा कार्य नए मामलों को वर्गीकृत करना है क्योंकि वे आते हैं, अर्थात, मौजूदा लेबल के आधार पर तय करते हैं कि वे किस श्रेणी के लेबल के हैं।

चूँकि दो बार के रूप में कई GREENवस्तुओं के रूप में कर रहे हैं RED, यह मानना ​​उचित है कि एक नया मामला (जो अभी तक नहीं देखा गया है) दो बार सदस्यता के GREENबजाय होने की संभावना है RED। बेयसियन विश्लेषण में, इस विश्वास को पूर्व संभाव्यता के रूप में जाना जाता है। पिछली संभावनाएं पिछले अनुभव पर आधारित होती हैं, इस मामले में GREENऔर REDवस्तुओं का प्रतिशत , और अक्सर परिणाम का अनुमान लगाने के लिए उपयोग किया जाता है इससे पहले कि वे वास्तव में होते हैं।

इस प्रकार, हम लिख सकते हैं:

की पूर्व संभावनाGREEN :number of GREEN objects / total number of objects

की पूर्व संभावनाRED :number of RED objects / total number of objects

चूंकि कुल 60वस्तुएं हैं, 40जिनमें से GREEN20 हैं और 20 RED, वर्ग सदस्यता के लिए हमारी पूर्व संभावनाएं हैं:

इसके लिए पूर्व संभावनाGREEN :40 / 60

इसके लिए पूर्व संभावनाRED :20 / 60

अपनी पूर्व संभाव्यता तैयार करने के बाद, अब हम एक नई वस्तु ( WHITEनीचे दिए गए चित्र में वृत्त) को वर्गीकृत करने के लिए तैयार हैं । चूंकि ऑब्जेक्ट अच्छी तरह से गुच्छित होते हैं, इसलिए यह मान लेना उचित है कि एक्स के आसपास के क्षेत्र में अधिक GREEN(या RED) ऑब्जेक्ट, नए मामलों में उस विशेष रंग के होने की अधिक संभावना है। इस संभावना को मापने के लिए, हम X के चारों ओर एक चक्र बनाते हैं, जो उनके वर्ग लेबल के बावजूद अंकों की संख्या (एक प्राथमिकता के रूप में चुना जाना चाहिए) को सम्मिलित करता है। फिर हम प्रत्येक वर्ग लेबल से संबंधित सर्कल में अंकों की संख्या की गणना करते हैं। इससे हम संभावना की गणना करते हैं:

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

ऊपर दिए गए दृष्टांत से, यह स्पष्ट है कि Xदिए गए GREENकी संभावना, Xदिए गए की संभावना से छोटी है RED, क्योंकि सर्कल में 1 GREENऑब्जेक्ट और 3 REDलोगों को शामिल किया गया है। इस प्रकार:

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

हालाँकि, पूर्व की संभावनाएँ बताती हैं कि Xहो सकता है GREEN(दिए गए हैं कि GREENतुलना में दो गुना अधिक हैं RED) संभावना की ओर संकेत करता है अन्यथा; की कक्षा सदस्यता Xहै RED(यह देखते हुए कि REDकी Xतुलना में आसपास के क्षेत्र में अधिक वस्तुएं हैं GREEN)। बायेसियन विश्लेषण में, अंतिम वर्गीकरण को सूचना के दोनों स्रोतों, अर्थात, पूर्व और संभावना के संयोजन द्वारा निर्मित किया जाता है, ताकि तथाकथित बेयस नियम (रेव थॉमस बेयस 1702-1761 के नाम पर) का उपयोग करके एक प्रतिकूल संभावना बन सके।

यहाँ छवि विवरण दर्ज करें

अंत में, हम एक्स को वर्गीकृत करते हैं REDक्योंकि इसकी कक्षा सदस्यता सबसे बड़ी पश्च संभावना है।


39
यह एल्गोरिथ्म k- निकटतम पड़ोसियों की तरह अधिक नहीं है?
रेनाड

251
यह उत्तर भ्रमित करने वाला है - यह KNN (k निकटतम पड़ोसी) और भोले गोले को मिलाता है।
मिशाल इलिच

7
जवाब तब तक अच्छी तरह से आगे बढ़ रहा था जब तक संभावना सामने नहीं आई। इसलिए @ वायवर ने संभावना की गणना के लिए के-निकटतम पड़ोसियों का उपयोग किया है। कितना सही है? यदि यह है, तो संभावना की गणना करने के लिए कुछ अन्य तरीके क्या हैं?
वरहूल ३१'१४

1
आपने संभावना के उदाहरण के रूप में एक सर्कल का उपयोग किया। मैं गॉसियन नाइव बेज़ के बारे में पढ़ता हूं जहां संभावना गॉसियन है। उसे कैसे समझाया जा सकता है?
उमर दुर्रानी

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

1052

मुझे एहसास है कि यह एक पुराना सवाल है, एक स्थापित जवाब के साथ। मेरे द्वारा पोस्ट किए जाने का कारण यह है कि स्वीकृत उत्तर में k-NN ( k -nearest पड़ोसी) के कई तत्व हैं , एक अलग एल्गोरिथ्म।

K-NN और NaiveBayes दोनों वर्गीकरण एल्गोरिदम हैं। वैचारिक रूप से, के-एनएन नई संस्थाओं को वर्गीकृत करने के लिए "मंहगाई" के विचार का उपयोग करता है। K-NN में ess nearness ’को यूक्लिडियन डिस्टेंस या कोसाइन डिस्टेंस जैसे विचारों के साथ तैयार किया गया है। इसके विपरीत, NaiveBayes में, 'प्रायिकता' की अवधारणा का उपयोग नई संस्थाओं को वर्गीकृत करने के लिए किया जाता है।

चूँकि सवाल Naive Bayes के बारे में है, यहाँ मैं किसी के विचारों और चरणों का वर्णन कैसे करूँगा। मैं इसे कुछ समीकरणों और यथासंभव सरल अंग्रेजी में करने की कोशिश करूंगा।

सबसे पहले, सशर्त संभावना और बेय्स नियम

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

सादे अंग्रेजी में सशर्त संभावना : क्या संभावना है कि कुछ होगा, यह देखते हुए कि कुछ और पहले ही हुआ है।

मान लीजिए कि कुछ आउटकम O हैं। और कुछ साक्ष्य ई। जिस तरह से इन संभावनाओं को परिभाषित किया गया है: आउटकम ओ और एविडेंस ई दोनों होने की संभावना है: (ओ होने की संभावना) गुणा (ई की संभावना से दी गई है) ओ हुआ)

सशर्त संभाव्यता को समझने के लिए एक उदाहरण:

मान लीजिए कि हमारे पास अमेरिकी सीनेटरों का एक संग्रह है। सीनेटर डेमोक्रेट या रिपब्लिकन हो सकते हैं। वे भी पुरुष या महिला हैं।

यदि हम एक सीनेटर को पूरी तरह से यादृच्छिक रूप से चुनते हैं, तो यह संभावना क्या है कि यह व्यक्ति एक महिला डेमोक्रेट है? सशर्त संभावना हमें इसका जवाब देने में मदद कर सकती है।

संभावना (डेमोक्रेट और महिला सीनेटर) = प्रोब (सीनेटर डेमोक्रेट है) महिला होने की सशर्त संभावना से गुणा किया जाता है कि वे एक डेमोक्रेट हैं।

  P(Democrat & Female) = P(Democrat) * P(Female | Democrat) 

हम ठीक उसी चीज़ की गणना कर सकते हैं, रिवर्स तरीका:

  P(Democrat & Female) = P(Female) * P(Democrat | Female) 

समझे नियम नियम

वैचारिक रूप से, यह P (Evidence | Known Outcome) से P (Outcome | ज्ञात साक्ष्य) तक जाने का एक तरीका है। अक्सर, हम जानते हैं कि किसी विशेष परिणाम को कितनी बार देखा जाता है, एक ज्ञात परिणाम दिया जाता है । हमें इस ज्ञात तथ्य का उपयोग उल्टा गणना करने के लिए करना है, उस परिणाम की संभावना की गणना करने के लिए , साक्ष्य को देखते हुए।

पी (आउटकम दिया गया है कि हम कुछ साक्ष्य जानते हैं) = पी (साक्ष्य दिया गया है कि हम आउटकम को जानते हैं) पी (साक्ष्य) द्वारा बढ़ाया गया प्रोब (आउटकम)

बेयस नियम को समझने के लिए उत्कृष्ट उदाहरण:

Probability of Disease D given Test-positive = 

               Prob(Test is positive|Disease) * P(Disease)
     _______________________________________________________________
     (scaled by) Prob(Testing Positive, with or without the disease)

अब, यह सब केवल प्रस्तावना था, जिसे नैवे बे को प्राप्त करना था।

Naive Bayes के लिए हो रही है '

अब तक, हमने केवल एक सबूत के बारे में बात की है। वास्तव में, हमें एक परिणाम की भविष्यवाणी करनी होगी जिसमें कई साक्ष्य दिए गए हैं। उस स्थिति में, गणित बहुत जटिल हो जाता है। उस जटिलता के चारों ओर जाने के लिए, एक दृष्टिकोण सबूत के कई टुकड़ों को 'अनउपलब्ध' करना और सबूत के प्रत्येक टुकड़े को स्वतंत्र मानना ​​है। यह दृष्टिकोण इसीलिए इसे भोला बेयस कहा जाता है ।

P(Outcome|Multiple Evidence) = 
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)

बहुत से लोग इसे याद रखने के लिए चुनते हैं:

                      P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
                                         P(Evidence)

इस समीकरण के बारे में कुछ बातें नोटिस करें:

  • यदि प्रोब (साक्ष्य | परिणाम) 1 है, तो हम सिर्फ 1 से गुणा कर रहे हैं।
  • यदि प्रोब (कुछ विशेष साक्ष्य | परिणाम) 0 है, तो संपूर्ण प्रोब। 0. हो जाता है यदि आप सबूतों का विरोधाभास देखते हैं, तो हम उस परिणाम को खारिज कर सकते हैं।
  • चूँकि हम P (साक्ष्य) द्वारा सब कुछ विभाजित करते हैं, इसलिए हम इसकी गणना किए बिना भी दूर हो सकते हैं।
  • पूर्व से गुणा करने के पीछे अंतर्ज्ञान इतना है कि हम अधिक सामान्य परिणामों को उच्च संभावना देते हैं, और कम परिणामों की संभावना नहीं है। इन्हें भी कहा जाता है base ratesऔर ये हमारी अनुमानित संभावनाओं को मापने का एक तरीका है।

कैसे एक परिणाम की भविष्यवाणी करने के लिए NaiveBayes लागू करने के लिए?

प्रत्येक संभावित परिणाम के लिए बस ऊपर दिए गए सूत्र को चलाएँ। चूंकि हम वर्गीकृत करने की कोशिश कर रहे हैं , प्रत्येक परिणाम को एक लेबल कहा जाता है classऔर इसका एक class label.हमारा काम है सबूतों को देखना, यह विचार करना कि यह इस वर्ग या उस वर्ग के होने की कितनी संभावना है, और प्रत्येक इकाई को एक लेबल असाइन करें। फिर, हम एक बहुत ही सरल दृष्टिकोण लेते हैं: जिस वर्ग में सबसे अधिक संभावना है उसे "विजेता" घोषित किया जाता है और उस वर्ग लेबल को साक्ष्य के संयोजन के लिए सौंपा जाता है।

फल उदाहरण

आइए इसे अपनी समझ बढ़ाने के लिए एक उदाहरण पर आज़माएँ: ओपी ने एक 'फल' पहचान उदाहरण के लिए कहा।

मान लीजिए कि हमारे पास फलों के 1000 टुकड़े हैं। वे केले , नारंगी या कुछ अन्य फल होते हैं । हम प्रत्येक फल के बारे में 3 विशेषताएँ जानते हैं:

  1. चाहे वह लंबा हो
  2. चाहे वह मीठा हो और
  3. अगर उसका रंग पीला है।

यह हमारा 'प्रशिक्षण सेट' है। हम इसका उपयोग हमारे द्वारा सामना किए जाने वाले किसी भी नए फल के प्रकार की भविष्यवाणी करने के लिए करेंगे ।

Type           Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
             ___________________________________________________________________
Banana      |  400  |    100   || 350   |    150    ||  450   |  50      |  500
Orange      |    0  |    300   || 150   |    150    ||  300   |   0      |  300
Other Fruit |  100  |    100   || 150   |     50    ||   50   | 150      |  200
            ____________________________________________________________________
Total       |  500  |    500   || 650   |    350    ||  800   | 200      | 1000
             ___________________________________________________________________

हम अपने फलों के संग्रह के बारे में बहुत सारी चीजों की पूर्व-गणना कर सकते हैं।

तथाकथित "पूर्व" संभावनाएं। (यदि हम किसी भी फल गुण को नहीं जानते हैं, तो यह हमारा अनुमान होगा।) ये हमारे हैंbase rates.

 P(Banana)      = 0.5 (500/1000)
 P(Orange)      = 0.3
 P(Other Fruit) = 0.2

"साक्ष्य" की संभावना

p(Long)   = 0.5
P(Sweet)  = 0.65
P(Yellow) = 0.8

"संभावना" की संभावना

P(Long|Banana) = 0.8
P(Long|Orange) = 0  [Oranges are never long in all the fruit we have seen.]
 ....

P(Yellow|Other Fruit)     =  50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75

एक फल को देखते हुए, इसे कैसे वर्गीकृत किया जाए?

मान लीजिए कि हमें एक अज्ञात फल के गुण दिए गए हैं, और इसे वर्गीकृत करने के लिए कहा गया है। हमें बताया गया है कि फल लंबा, मीठा और पीला है। क्या यह एक केला है? यह एक नारंगी है? या यह कुछ अन्य फल है?

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

P(Banana|Long, Sweet and Yellow) 
      P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
    = _______________________________________________________________
                      P(Long) * P(Sweet) * P(Yellow)

    = 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)

    = 0.252 / P(evidence)


P(Orange|Long, Sweet and Yellow) = 0


P(Other Fruit|Long, Sweet and Yellow)
      P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
    = ____________________________________________________________________________________
                                          P(evidence)

    = (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)

    = 0.01875 / P(evidence)

एक भारी मार्जिन ( 0.252 >> 0.01875) के द्वारा, हम इस मीठे / लंबे / पीले फल को एक केले के रूप में वर्गीकृत करते हैं।

बेयस क्लासिफायर इतना लोकप्रिय क्यों है?

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

Let z = 1 / P(evidence). अब हम जल्दी से निम्नलिखित तीन मात्राओं की गणना करते हैं।

P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence)  = z * Prob(Other)  * Prob(Evidence1|Other)  * Prob(Evidence2|Other)  ...

जो भी सबसे अधिक संख्या का वर्ग लेबल असाइन करें, और आप कर रहे हैं।

नाम के बावजूद, Naive Bayes कुछ अनुप्रयोगों में उत्कृष्ट निकला। पाठ वर्गीकरण एक ऐसा क्षेत्र है जहां यह वास्तव में चमकता है।

आशा है कि Naive Bayes एल्गोरिथ्म के पीछे की अवधारणाओं को समझने में मदद करता है।


14
बहुत स्पष्ट स्पष्टीकरण के लिए धन्यवाद! आसानी से वेब पर तैरने वाले लोगों में से एक। प्रश्न: चूँकि प्रत्येक P (परिणाम / साक्ष्य) 1 / z = p (साक्ष्य) से गुणा किया जाता है (जो कि फल के मामले में, इसका मतलब है कि प्रत्येक अनिवार्य रूप से पिछले साक्ष्य के आधार पर प्रायिकता पर आधारित है), क्या यह कहना सही होगा कि z doesn Naïve Bayes के लिए बिल्कुल भी बात नहीं है? इस प्रकार इसका अर्थ यह होगा कि यदि, कहते हैं, एक लंबे / मीठे / पीले फल में भाग गया , जो केला नहीं था , तो इसे गलत तरीके से वर्गीकृत किया जाएगा।
covariance

7
@ E.Chow हाँ, आप सही हैं कि कंप्यूटिंग z में Naive Bayes की कोई बात नहीं है। (यह 0 और 1. के बीच होने की संभावनाओं को पैमाना करने का एक तरीका है।) ध्यान दें कि z हाथ में सभी सबूतों की संभावनाओं का उत्पाद है। (यह उन पादरियों से अलग है जो कक्षाओं की आधार दर है।) आप सही हैं: यदि आपको एक ऐसा लम्बा / मीठा / पीला फल मिला है जो केला नहीं है, तो NB इसे केले के रूप में गलत तरीके से वर्गीकृत करेगा, इस पर आधारित प्रशिक्षण सेट। एल्गोरिथ्म 'साक्ष्य के आधार पर सर्वश्रेष्ठ संभाव्य अनुमान' है और इसलिए यह अवसर पर गलत वर्गीकरण करेगा
राम नरसिम्हन

1
@ जैस्पर टेबल में कुल 200 "अन्य फल" होते हैं और उनमें से 50 पीले होते हैं। तो यह देखते हुए कि फल "अन्य फल" है ब्रह्मांड 200 है। उनमें से 50 पीले हैं। इसलिए 50/200। ध्यान दें कि 800 पीले फल की कुल संख्या है। इसलिए यदि हम पी (अन्य फल / पीला) चाहते हैं तो हम वही करेंगे जो आप सुझाते हैं: 50/800।
राम नरसिम्हन

3
एकदम बढ़िया व्याख्या। मैं अकादमिक पत्र-पत्रिकाओं और पुस्तकों से इस आलाप को नहीं समझता। क्योंकि, गूढ़ विवेचन आमतौर पर लेखन शैली को स्वीकार किया जाता है। यह सब, और इतना आसान है। धन्यवाद।
सूत अतन पीएचडी

3
संभावनाएं 1 में क्यों नहीं जुड़ती हैं? उदाहरण में प्रमाण 0.26 है (500/100 * 650/1000 * 800/1000), और इसलिए अंतिम पी (केला | ...) = 0.252 / 0.26 = 0.969, और पी (अन्य | ...) = 0.01875 / 0.26 = 0.072। साथ में वे 1.04 तक जोड़ते हैं!
मॉरीशियो

18

राम नरसिम्हन ने इस अवधारणा को बहुत बारीकी से समझाया है कि कार्रवाई में नैवे बेस के कोड उदाहरण के माध्यम से एक वैकल्पिक स्पष्टीकरण
है। यह इस पुस्तक से पेज 351 पर एक उदाहरण समस्या का उपयोग करता है। यह
डेटा सेट है जिसका उपयोग हम उपरोक्त डेटासेट में करते हैं यदि हम देते हैं परिकल्पना = फिर क्या संभावना है कि वह कंप्यूटर खरीदेगा या नहीं खरीदेगा। नीचे दिया गया कोड उस प्रश्न का सटीक उत्तर देता है। बस नाम की एक फाइल बनाएं और निम्नलिखित सामग्री को पेस्ट करें।
यहाँ छवि विवरण दर्ज करें
{"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

new_dataset.csv

Age,Income,Student,Creadit_Rating,Buys_Computer
<=30,high,no,fair,no
<=30,high,no,excellent,no
31-40,high,no,fair,yes
>40,medium,no,fair,yes
>40,low,yes,fair,yes
>40,low,yes,excellent,no
31-40,low,yes,excellent,yes
<=30,medium,no,fair,no
<=30,low,yes,fair,yes
>40,medium,yes,fair,yes
<=30,medium,yes,excellent,yes
31-40,medium,no,excellent,yes
31-40,high,yes,fair,yes
>40,medium,no,excellent,no

यहाँ कोड है जो टिप्पणी हम यहाँ कर रहे हैं सब कुछ बताते हैं! [अजगर]

import pandas as pd 
import pprint 

class Classifier():
    data = None
    class_attr = None
    priori = {}
    cp = {}
    hypothesis = None


    def __init__(self,filename=None, class_attr=None ):
        self.data = pd.read_csv(filename, sep=',', header =(0))
        self.class_attr = class_attr

    '''
        probability(class) =    How many  times it appears in cloumn
                             __________________________________________
                                  count of all class attribute
    '''
    def calculate_priori(self):
        class_values = list(set(self.data[self.class_attr]))
        class_data =  list(self.data[self.class_attr])
        for i in class_values:
            self.priori[i]  = class_data.count(i)/float(len(class_data))
        print "Priori Values: ", self.priori

    '''
        Here we calculate the individual probabilites 
        P(outcome|evidence) =   P(Likelihood of Evidence) x Prior prob of outcome
                               ___________________________________________
                                                    P(Evidence)
    '''
    def get_cp(self, attr, attr_type, class_value):
        data_attr = list(self.data[attr])
        class_data = list(self.data[self.class_attr])
        total =1
        for i in range(0, len(data_attr)):
            if class_data[i] == class_value and data_attr[i] == attr_type:
                total+=1
        return total/float(class_data.count(class_value))

    '''
        Here we calculate Likelihood of Evidence and multiple all individual probabilities with priori
        (Outcome|Multiple Evidence) = P(Evidence1|Outcome) x P(Evidence2|outcome) x ... x P(EvidenceN|outcome) x P(Outcome)
        scaled by P(Multiple Evidence)
    '''
    def calculate_conditional_probabilities(self, hypothesis):
        for i in self.priori:
            self.cp[i] = {}
            for j in hypothesis:
                self.cp[i].update({ hypothesis[j]: self.get_cp(j, hypothesis[j], i)})
        print "\nCalculated Conditional Probabilities: \n"
        pprint.pprint(self.cp)

    def classify(self):
        print "Result: "
        for i in self.cp:
            print i, " ==> ", reduce(lambda x, y: x*y, self.cp[i].values())*self.priori[i]

if __name__ == "__main__":
    c = Classifier(filename="new_dataset.csv", class_attr="Buys_Computer" )
    c.calculate_priori()
    c.hypothesis = {"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

    c.calculate_conditional_probabilities(c.hypothesis)
    c.classify()

उत्पादन:

Priori Values:  {'yes': 0.6428571428571429, 'no': 0.35714285714285715}

Calculated Conditional Probabilities: 

{
 'no': {
        '<=30': 0.8,
        'fair': 0.6, 
        'medium': 0.6, 
        'yes': 0.4
        },
'yes': {
        '<=30': 0.3333333333333333,
        'fair': 0.7777777777777778,
        'medium': 0.5555555555555556,
        'yes': 0.7777777777777778
      }
}

Result: 
yes  ==>  0.0720164609053
no  ==>  0.0411428571429

आशा है कि यह समस्या को बेहतर ढंग से समझने में मदद करता है

शांति


18

Naive Bayes: Naive Bayes सुपरवाइजिंग मशीन लर्निंग के अंतर्गत आता है जो डेटा सेट के वर्गीकरण को बनाने के लिए उपयोग किया जाता है। इसका उपयोग इसके पूर्व ज्ञान और स्वतंत्रता मान्यताओं के आधार पर चीजों की भविष्यवाणी करने के लिए किया जाता है।

वे इसे भोला कहते हैं क्योंकि यह धारणा है (यह मानता है कि डेटासेट में सभी सुविधाएँ समान रूप से महत्वपूर्ण और स्वतंत्र हैं) अधिकांश वास्तविक दुनिया के अनुप्रयोगों में वास्तव में आशावादी और शायद ही कभी सच हैं।

यह वर्गीकरण एल्गोरिथ्म है जो अज्ञात डेटा सेट के लिए निर्णय लेता है। यह बेयस प्रमेय पर आधारित है, जो इसके पूर्व ज्ञान के आधार पर किसी घटना की संभावना का वर्णन करता है।

नीचे आरेख से पता चलता है कि भोले बे कैसे काम करते हैं

यहाँ छवि विवरण दर्ज करें

एनबी की भविष्यवाणी करने का सूत्र:

यहाँ छवि विवरण दर्ज करें

Naive Bayes Algorithm का उपयोग कैसे करें?

आइए एक उदाहरण लेते हैं कि एनबी कैसे जागते हैं

चरण 1: सबसे पहले हमें तालिका की संभावना का पता चलता है जो नीचे दिए गए आरेख में हां या नहीं की संभावना दर्शाता है। चरण 2: प्रत्येक वर्ग की पिछली संभावना का पता लगाएं।

यहाँ छवि विवरण दर्ज करें

Problem: Find out the possibility of whether the player plays in Rainy condition?

P(Yes|Rainy) = P(Rainy|Yes) * P(Yes) / P(Rainy)

P(Rainy|Yes) = 2/9 = 0.222
P(Yes) = 9/14 = 0.64
P(Rainy) = 5/14 = 0.36

Now, P(Yes|Rainy) = 0.222*0.64/0.36 = 0.39 which is lower probability which means chances of the match played is low.

अधिक संदर्भ के लिए इन ब्लॉग को देखें

GitHub रिपॉजिटरी Naive-Bayes-उदाहरण देखें


14

मैं एक उदाहरण के साथ बेयस नियम को समझाने की कोशिश करता हूं।

क्या मौका है कि समाज से चुने गए एक यादृच्छिक व्यक्ति धूम्रपान करने वाला है?

आप 10% का जवाब दे सकते हैं।

अब, अगर आदमी एक आदमी है और 15 साल का है तो क्या होगा ?

यह 60% नहीं हो सकता है, जबकि हम जानते हैं कि धूम्रपान करने वालों का प्रतिशत बहुत कम था। यह भी 10% से कम नहीं हो सकता है। 15 या 20% बेहतर अनुमान हैं।

वास्तव में, हम प्रारंभिक अनुमान को सबूतों के नए टुकड़ों के साथ अपडेट करने का प्रयास करते हैं ( P(smoker) vs. P(smoker | evidence))। बेय्स नियम इन दो संभावनाओं को जोड़ने का एक तरीका है।

P(smoker | evidence) = P(smoker)* p(evidence | smoker)/P(evidence)

प्रत्येक प्रमाण इस अवसर को बढ़ा या घटा सकता है। उदाहरण के लिए, यह तथ्य कि वह एक आदमी है , मौका बढ़ा सकता है , बशर्ते कि गैर-धूम्रपान करने वालों के बीच यह प्रतिशत (एक आदमी होने के नाते) कम हो। दूसरे शब्दों में, एक आदमी का धूम्रपान न करने वाला होने के बजाय धूम्रपान करने का एक अच्छा संकेतक होना चाहिए।

हम इस योगदान को दूसरे तरीके से भी दिखा सकते हैं। प्रत्येक सुविधा के लिए, आप दिए गए शर्तों के तहत उस सुविधा की समानता (संभावना) की तुलना उसकी सामान्यता से अकेले कर सकते हैं। ( P(f | x) vs. P(f))

P(smoker | evidence) / P(smoker) = P(evidence | smoker)/P(evidence)

उदाहरण के लिए, अगर हम जानते हैं कि 90% धूम्रपान करने वाले पुरुष हैं, तो यह कहना अभी भी पर्याप्त नहीं है कि एक आदमी धूम्रपान करने वाला होने का सूचक है या नहीं। उदाहरण के लिए यदि समाज में एक आदमी होने की संभावना भी 90% है, तो यह जानना कि कोई व्यक्ति एक आदमी है हमारी मदद नहीं करता है ((90% / 90%) = 1। लेकिन अगर पुरुष समाज के 40%, लेकिन 90% धूम्रपान करने वालों में योगदान करते हैं, तो यह जानकर कि कोई व्यक्ति एक आदमी है धूम्रपान करने वाला होने की संभावना बढ़ाता है (90% / 40%) = 2.25, इसलिए यह प्रारंभिक अनुमान (10%) को 2.25 के परिणामस्वरूप 22.5% बढ़ाता है।

हालांकि, अगर समाज में पुरुष होने की संभावना 95% थी, तो इस तथ्य की परवाह किए बिना कि धूम्रपान करने वालों में पुरुषों का प्रतिशत अधिक है (90%)! सबूत है कि कोई एक आदमी है उसके धूम्रपान करने वाले होने की संभावना कम हो जाती है! (90% / 95%) = 0.95)

तो हमारे पास:

P(smoker | f1, f2, f3,... ) = P(smoker) * contribution of f1* contribution of f2 *... =
P(smoker)* 
(P(being a man | smoker)/P(being a man))*
(P(under 20 | smoker)/ P(under 20))

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

एक क्लासिफायरफ़ायर में इस सूत्र का उपयोग करने के लिए

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

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