पायथन में केएल डाइवर्जेंस की गणना कैसे करें (उदाहरण के साथ)
आंकड़ों में, कुल्बैक-लीब्लर (केएल) विचलन एक दूरी मीट्रिक है जो दो संभाव्यता वितरणों के बीच अंतर को मापता है।
यदि हमारे पास दो संभाव्यता वितरण हैं, पी और क्यू, तो हम आम तौर पर केएल विचलन को नोटेशन केएल (पी || क्यू) का उपयोग करके लिखते हैं, जिसका अर्थ है “क्यू से पी का विचलन”।
हम निम्नलिखित सूत्र का उपयोग करके इसकी गणना करते हैं:
केएल(पी || क्यू) = Σपी(एक्स) एलएन (पी(एक्स) / क्यू(एक्स))
यदि दो वितरणों के बीच केएल विचलन शून्य है, तो यह इंगित करता है कि वितरण समान हैं।
हम पायथन में दो संभाव्यता वितरणों के बीच केएल विचलन की गणना करने के लिए scipy.special.rel_entr() फ़ंक्शन का उपयोग कर सकते हैं।
निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस फ़ंक्शन का उपयोग कैसे करें।
उदाहरण: पायथन में केएल विचलन की गणना
मान लीजिए कि हमारे पास पायथन में निम्नलिखित दो संभाव्यता वितरण हैं:
नोट : यह महत्वपूर्ण है कि प्रत्येक वितरण की संभावनाओं का योग एक हो।
#define two probability distributions
P = [.05, .1, .2, .05, .15, .25, .08, .12]
Q = [.3, .1, .2, .1, .1, .02, .08, .1]
हम दो वितरणों के बीच केएल विचलन की गणना करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:
from scipy. special import rel_entr
#calculate (P || Q)
sum(rel_entr(P, Q))
0.589885181619163
क्यू वितरण से पी वितरण का केएल विचलन लगभग 0.589 है।
ध्यान दें कि इस गणना में उपयोग की जाने वाली इकाइयों को नेट के रूप में जाना जाता है, जो सूचना की प्राकृतिक इकाई का संक्षिप्त रूप है।
तो हम कहेंगे कि केएल विचलन 0.589 नेट है।
यह भी ध्यान दें कि केएल विचलन एक सममित मीट्रिक नहीं है। इसका मतलब यह है कि यदि हम पी वितरण से क्यू वितरण के केएल विचलन की गणना करते हैं, तो हमें संभवतः एक अलग मूल्य मिलेगा:
from scipy. special import rel_entr
#calculate (Q || P)
sum(rel_entr(Q, P))
0.497549319448034
पी वितरण से क्यू वितरण का केएल विचलन लगभग 0.497 नेट है।
ध्यान दें : कुछ सूत्र केएल विचलन की गणना के लिए लॉग बेस -2 का उपयोग करते हैं। इस मामले में हम नेट्स के बजाय बिट्स के संदर्भ में विचलन के बारे में बात कर रहे हैं।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि पायथन में अन्य सामान्य ऑपरेशन कैसे करें:
पायथन में सहसंबंध मैट्रिक्स कैसे बनाएं
पायथन में कोवरियन्स मैट्रिक्स कैसे बनाएं