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 ဖန်တီးနည်း