R တွင် kl ကွဲပြားမှုကို တွက်ချက်နည်း (ဥပမာနှင့်အတူ)
စာရင်းဇယားများတွင်၊ Kullback–Leibler (KL) ကွဲပြားမှုသည် ဖြစ်နိုင်ခြေဖြန့်ဝေမှုနှစ်ခုကြားရှိ ကွာခြားချက်ကို တွက်ချက်သည့် အကွာအဝေးမက်ထရစ်တစ်ခုဖြစ်သည်။
အကယ်၍ ကျွန်ုပ်တို့တွင် ဖြစ်နိုင်ခြေ ဖြန့်ဝေမှု နှစ်ခုဖြစ်သော P နှင့် Q ရှိပါက၊ “ P မှ Q ၏ ခြားနားခြင်း” ကို ဆိုလိုသော သင်္ကေတ KL(P || Q) ကို အသုံးပြု၍ ယေဘုယျအားဖြင့် ကျွန်ုပ်တို့သည် KL ကွဲပြားမှုကို ရေးပါသည်။
အောက်ပါဖော်မြူလာကို အသုံးပြု၍ ၎င်းကို ကျွန်ုပ်တို့ တွက်ချက်ပါသည်။
KL(P || Q) = ΣP(x) ln (P(x) / Q(x))
ဖြန့်ဖြူးမှုနှစ်ခုကြားရှိ KL ကွဲပြားမှုသည် သုညဖြစ်ပါက၊ ၎င်းသည် ဖြန့်ဝေမှုများ တူညီကြောင်း ညွှန်ပြသည်။
R တွင်ဖြစ်နိုင်ခြေဖြန့်ဝေမှုနှစ်ခုကြားရှိ KL ကွဲပြားမှုကို တွက်ချက်ရန် အရိုးရှင်းဆုံးနည်းလမ်းမှာ philentropy ပက်ကေ့ခ်ျမှ KL() လုပ်ဆောင်ချက်ကို အသုံးပြုခြင်းဖြစ်သည်။
အောက်ဖော်ပြပါ ဥပမာသည် ဤလုပ်ဆောင်ချက်ကို လက်တွေ့အသုံးချနည်းကို ပြသထားသည်။
ဥပမာ- R တွင် KL ကွဲပြားမှုကို တွက်ချက်ခြင်း။
R တွင်အောက်ပါဖြစ်နိုင်ခြေဖြန့်ဝေမှုနှစ်ခုရှိသည်ဆိုပါစို့။
#define two probability distributions
P <- c(.05, .1, .2, .05, .15, .25, .08, .12)
Q <- c(.3, .1, .2, .1, .1, .02, .08, .1)
မှတ်ချက် – ဖြန့်ဖြူးမှုတစ်ခုစီ၏ ပေါင်းလဒ်တစ်ခုစီသို့ ဖြစ်နိုင်ခြေရှိရန် အရေးကြီးသည်။
ဖြန့်ဝေမှုနှစ်ခုကြားရှိ KL ကွဲပြားမှုကို တွက်ချက်ရန် အောက်ပါကုဒ်ကို ကျွန်ုပ်တို့ အသုံးပြုနိုင်ပါသည်။
library (philentropy)
#rbind distributions into one matrix
x <- rbind(P,Q)
#calculate KL divergence
KL(x, unit=' log ')
Metric: 'kullback-leibler' using unit: 'log'; comparing: 2 vectors.
kullback-leibler
0.5898852
Q ဖြန့်ဖြူးမှုမှ P ဖြန့်ဖြူးခြင်း၏ KL ကွဲလွဲမှုသည် ခန့်မှန်းခြေ 0.589 ဖြစ်သည်။
ဤတွက်ချက်မှုတွင် အသုံးပြုသည့် ယူနစ်များကို သတင်းအချက်အလက်၏ သဘာဝယူနစ် ၏ အတိုကောက်ဖြစ်သော နတ်များ ဟု လူသိများကြောင်း သတိပြုပါ။
ဒါကြောင့် KL ကွဲပြားမှုဟာ 0.589 nats လို့ ပြောနိုင်ပါတယ်။
KL ကွဲပြားမှုသည် အချိုးကျမက်ထရစ်မဟုတ်ကြောင်းကိုလည်း သတိပြုပါ။ ဆိုလိုသည်မှာ၊ ကျွန်ုပ်တို့သည် P ဖြန့်ဖြူးမှုမှ Q ဖြန့်ဝေမှု၏ KL ကွဲပြားမှုကို တွက်ချက်ပါက၊ ကျွန်ုပ်တို့သည် မတူညီသောတန်ဖိုးကို ရနိုင်သည်-
library (philentropy)
#rbind distributions into one matrix
x <- rbind(Q,P)
#calculate KL divergence
KL(x, unit=' log ')
Metric: 'kullback-leibler' using unit: 'log'; comparing: 2 vectors.
kullback-leibler
0.4975493
P ဖြန့်ဖြူးမှုမှ Q ဖြန့်ဖြူးခြင်း၏ KL ကွဲလွဲမှုသည် ခန့်မှန်းခြေအားဖြင့် 0.497 nats ဖြစ်သည်။
အချို့သော ဖော်မြူလာများသည် KL ကွဲပြားမှုကို တွက်ချက်ရန် log base-2 ကို အသုံးပြုကြောင်း သတိပြုပါ။ ဤကိစ္စတွင် ကျွန်ုပ်တို့သည် နတ်များထက် bits ၏ ခြားနားမှုကို ပြောနေပါသည်။
KL ကွဲပြားမှုကို bits ၏သတ်မှတ်ချက်များတွင်တွက်ချက်ရန်၊ ယူနစ် အငြင်းအခုံတွင် log2 ကိုသုံးနိုင်သည်။
library (philentropy)
#rbind distributions into one matrix
x <- rbind(P,Q)
#calculate KL divergence (in bits)
KL(x, unit=' log2 ')
Metric: 'kullback-leibler' using unit: 'log2'; comparing: 2 vectors.
kullback-leibler
0.7178119
Q ဖြန့်ဖြူးမှုမှ P ဖြန့်ဖြူးခြင်း၏ KL ကွဲလွဲမှုသည် ခန့်မှန်းခြေအားဖြင့် 0.7178 bits ဖြစ်သည်။
ထပ်လောင်းအရင်းအမြစ်များ
အောက်ဖော်ပြပါ သင်ခန်းစာများသည် R တွင် အခြားဘုံအလုပ်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-