2015-05-26 7 views
5

मुझे बेयसियन नेटवर्क पर कुछ संदर्भ करने की आवश्यकता है, जैसे उदाहरण मैंने नीचे बनाया है। Bayesian networkबेयसियन नेटवर्क में अनुमान

मैं पी (एफ | ए = ट्रू, बी = ट्रू) जैसे अनुमान को हल करने के लिए ऐसा कुछ करने जैसा कुछ देख रहा था। मेरे प्रारंभिक दृष्टिकोण की तरह

For every possible output of F 
    For every state of each observed variable (A,B) 
    For every unobserved variable (C, D, E, G) 
     // Calculate Probability 

कुछ करना था लेकिन मुझे नहीं लगता कि इस वजह से हम वास्तव में, नहीं हर एक समय में एक बार में कई चर के ऊपर जाने की जरूरत है काम करेंगे है।

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

असल में मैं ऐसा करने का एक तरीका ढूंढ रहा हूं, ऐसा करने का सबसे अच्छा तरीका नहीं है।

+0

क्या आपका ग्राफ सिर्फ एक उदाहरण है, या सभी शीर्ष चर देखे गए हैं? –

+0

पर्ल का संदेश पास एल्गोरिदम केवल लूप के बिना नेटवर्क पर लागू होता है। असतत और गॉसियन चर के लूप नेटवर्क के लिए सटीक एल्गोरिदम हैं, लेकिन वे सरल नहीं हैं। मेरी सलाह है कि गणना करने के लिए कुछ सॉफ़्टवेयर ढूंढें ताकि आपको बस इतना करना है कि नेटवर्क विवरण (चर, कनेक्शन, और संभाव्यता तालिका) दर्ज करें और क्वेरी चलाएं। इसके लिए वाणिज्यिक और गैर वाणिज्यिक दोनों ही हैं; क्षमा करें, मेरे पास कोई सिफारिश नहीं है। –

+0

ग्राफ सिर्फ एक उदाहरण था, शीर्ष चर हमेशा सख्ती से – suphug22

उत्तर

0

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

चूंकि आपका टैग सी ++ का उल्लेख करता है, मेरी सिफारिश libDAI होगी। यह एक अच्छी तरह लिखित लाइब्रेरी है जो जेनेरिक कारक ग्राफ पर कई सटीक और अनुमानित अनुमान लागू करती है। इसमें कोई अजीब निर्भरता नहीं है और आपकी परियोजना में एकीकृत करना बहुत आसान है। यह विशेष रूप से अलग-अलग मामलों के लिए उपयुक्त है, जैसे आपका, जिसके लिए आपके पास संभाव्यता तालिकाएं हैं।

अब, आपने देखा है कि मैंने कारक ग्राफ का उल्लेख किया है। यदि आप अवधारणा से परिचित नहीं हैं, तो मैं आपको Wikipedia पर संदर्भित करूंगा, लेकिन सिद्धांत बहुत सरल है। आपको अपने बीएन को एक कारक ग्राफ के रूप में प्रस्तुत करना चाहिए और फिर libDAI आपके लिए अनुमान लगाएगा।

संपादित करें:

के बाद से CPU संसाधनों आप के लिए एक समस्या नहीं है और सादगी की कुंजी है, बजाय, आप हमेशा जानवर बल गणना के साथ जा सकते हैं। विचार सरल है। आपका Bayesian नेटवर्क एक संयुक्त संभाव्यता वितरण का प्रतिनिधित्व करता है, जिसे आप समीकरण के संदर्भ में लिख सकते हैं, उदा।

P(A,B,C) = P(A|B,C) * P(B|C) * P(C) 

मान लिया जाये कि आप अपने सभी सशर्त संभावना वितरण के लिए टेबल है, यानि कि P(A|B, C)P(B|C) और P(C) तो आप बस C चर A, B के सभी संभव मूल्यों, और जाने के लिए और उत्पादन की गणना कर सकते हैं।

+0

सहायता के लिए धन्यवाद, मैं बाहरी पुस्तकालयों का उपयोग नहीं करना चाहता हूं, और नेटवर्क काफी सरल हैं, मैं सोच रहा था कि क्या आप सटीक अनुमान तरीकों के बारे में बताते हैं कि आप क्या कह सकते हैं, मैं अभी भी विषय के लिए बहुत नया हूं। संपादित करें - मैं इसके बारे में चिंतित नहीं हूं कि यह CPU संसाधनों का अपशिष्ट है क्योंकि यह एक बड़े कार्यक्रम का हिस्सा नहीं है, केवल प्रोग्राम ही है और अधिकांश नोड्स केवल 2-3 चर यानी सत्य, झूठे, शायद – suphug22

+0

ठीक है, अगर आप कुछ बहुत ही सरल खोज रहे हैं, तो आप बस एक ब्रूट फोर्स गणना कर सकते हैं जिसे आपने स्वयं सुझाया था। ऐसा करें और अगर यहां बहुत अधिक समय लगता है तो वापस आएं :) –

+0

कृपया मेरा संपादन देखें –

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