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 တွင် အခြားဘုံအလုပ်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-

R တွင် ပုံမှန်ဖြန့်ဖြူးနည်း
R တွင် ပုံမှန်ဖြန့်ဖြူးနည်း

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

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