Python တွင် kl divergence ကို တွက်ချက်နည်း (ဥပမာဖြင့်)


စာရင်းဇယားများတွင်၊ Kullback–Leibler (KL) ကွဲပြားမှုသည် ဖြစ်နိုင်ခြေဖြန့်ဝေမှုနှစ်ခုကြားရှိ ကွာခြားချက်ကို တွက်ချက်သည့် အကွာအဝေးမက်ထရစ်တစ်ခုဖြစ်သည်။

အကယ်၍ ကျွန်ုပ်တို့တွင် ဖြစ်နိုင်ခြေ ဖြန့်ဝေမှု နှစ်ခုဖြစ်သော P နှင့် Q ရှိပါက၊ “ P မှ Q ၏ ခြားနားခြင်း” ကို ဆိုလိုသော သင်္ကေတ KL(P || Q) ကို အသုံးပြု၍ ယေဘုယျအားဖြင့် ကျွန်ုပ်တို့သည် KL ကွဲပြားမှုကို ရေးပါသည်။

အောက်ပါဖော်မြူလာကို အသုံးပြု၍ ၎င်းကို ကျွန်ုပ်တို့ တွက်ချက်ပါသည်။

KL(P || Q) = ΣP(x) ln (P(x) / Q(x))

ဖြန့်ဖြူးမှုနှစ်ခုကြားရှိ KL ကွဲပြားမှုသည် သုညဖြစ်ပါက၊ ၎င်းသည် ဖြန့်ဝေမှုများ တူညီကြောင်း ညွှန်ပြသည်။

Python ရှိ ဖြစ်နိုင်ခြေ ဖြန့်ဝေမှုနှစ်ခုကြား KL ကွဲပြားမှုကို တွက်ချက်ရန် scipy.special.rel_entr() လုပ်ဆောင်ချက်ကို ကျွန်ုပ်တို့ အသုံးပြုနိုင်ပါသည်။

အောက်ဖော်ပြပါ ဥပမာသည် ဤလုပ်ဆောင်ချက်ကို လက်တွေ့အသုံးချနည်းကို ပြသထားသည်။

ဥပမာ- Python ရှိ KL ကွဲပြားမှုကို တွက်ချက်ခြင်း။

Python တွင် အောက်ပါဖြစ်နိုင်ခြေဖြန့်ဝေမှုနှစ်ခုရှိသည်ဆိုပါစို့။

မှတ်ချက် – ဖြန့်ဖြူးမှုတစ်ခုစီ၏ ပေါင်းလဒ်တစ်ခုစီသို့ ဖြစ်နိုင်ခြေရှိရန် အရေးကြီးသည်။

 #define two probability distributions
P = [.05, .1, .2, .05, .15, .25, .08, .12]
Q = [.3, .1, .2, .1, .1, .02, .08, .1]

ဖြန့်ဝေမှုနှစ်ခုကြားရှိ KL ကွဲပြားမှုကို တွက်ချက်ရန် အောက်ပါကုဒ်ကို ကျွန်ုပ်တို့ အသုံးပြုနိုင်ပါသည်။

 from scipy. special import rel_entr

#calculate (P || Q)
sum(rel_entr(P, Q))

0.589885181619163

Q ဖြန့်ဖြူးမှုမှ P ဖြန့်ဖြူးခြင်း၏ KL ကွဲလွဲမှုသည် ခန့်မှန်းခြေ 0.589 ဖြစ်သည်။

ဤတွက်ချက်မှုတွင် အသုံးပြုသည့် ယူနစ်များကို သတင်းအချက်အလက်၏ သဘာဝယူနစ် ၏ အတိုကောက်ဖြစ်သော နတ်များ ဟု လူသိများကြောင်း သတိပြုပါ။

ဒါကြောင့် KL ကွဲပြားမှုဟာ 0.589 nats လို့ ပြောနိုင်ပါတယ်။

KL ကွဲပြားမှုသည် အချိုးကျမက်ထရစ်မဟုတ်ကြောင်းကိုလည်း သတိပြုပါ။ ဆိုလိုသည်မှာ၊ ကျွန်ုပ်တို့သည် P ဖြန့်ဖြူးမှုမှ Q ဖြန့်ဝေမှု၏ KL ကွဲပြားမှုကို တွက်ချက်ပါက၊ ကျွန်ုပ်တို့သည် မတူညီသောတန်ဖိုးကို ရနိုင်သည်-

 from scipy. special import rel_entr

#calculate (Q || P)
sum(rel_entr(Q, P))

0.497549319448034

P ဖြန့်ဖြူးမှုမှ Q ဖြန့်ဖြူးခြင်း၏ KL ကွဲလွဲမှုသည် ခန့်မှန်းခြေအားဖြင့် 0.497 nats ဖြစ်သည်။

မှတ်ချက် – အချို့သောဖော်မြူလာများသည် KL ကွဲပြားမှုကို တွက်ချက်ရန် log Base-2 ကို အသုံးပြုသည်။ ဤကိစ္စတွင် ကျွန်ုပ်တို့သည် နတ်များထက် bits ၏ ခြားနားမှုကို ပြောနေပါသည်။

ထပ်လောင်းအရင်းအမြစ်များ

အောက်ပါ သင်ခန်းစာများသည် Python တွင် အခြားသော ဘုံလုပ်ဆောင်ချက်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-

Python တွင် Correlation Matrix ကိုဖန်တီးနည်း
Python တွင် Covariance Matrix ဖန်တီးနည်း

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်