كيفية حساب تباعد kl في r (مع مثال)


في الإحصاء، يعد تباعد كولباك-ليبلر (KL) مقياسًا للمسافة يحدد الفرق بين توزيعين احتماليين.

إذا كان لدينا توزيعان احتماليان، P و Q، فإننا نكتب عمومًا تباعد KL باستخدام الرمز KL(P || Q)، والذي يعني “اختلاف P عن Q”.

ونحسبها باستخدام الصيغة التالية:

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

إذا كان تباعد KL بين توزيعين صفراً، فهذا يشير إلى أن التوزيعات متطابقة.

إن أبسط طريقة لحساب تباعد KL بين توزيعين احتماليين في R هو استخدام دالة KL() من الحزمة philentropy .

يوضح المثال التالي كيفية استخدام هذه الوظيفة عمليًا.

مثال: حساب تباعد KL في R

لنفترض أن لدينا التوزيعتين الاحتماليتين التاليتين في 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 

يبلغ انحراف KL لتوزيع P عن توزيع Q حوالي 0.589 .

لاحظ أن الوحدات المستخدمة في هذا الحساب تُعرف باسم nats ، وهي اختصار للوحدة الطبيعية للمعلومات .

لذلك يمكننا أن نقول أن تباعد KL هو 0.589 ناتس .

لاحظ أيضًا أن تباعد KL ليس مقياسًا متماثلًا. هذا يعني أننا إذا قمنا بحساب انحراف KL لتوزيع Q عن توزيع P، فمن المحتمل أن نحصل على قيمة مختلفة:

 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 

يبلغ انحراف KL لتوزيع Q عن توزيع P حوالي 0.497 ناتس .

لاحظ أيضًا أن بعض الصيغ تستخدم السجل ذو الأساس 2 لحساب تباعد KL. في هذه الحالة نحن نتحدث عن الاختلاف من حيث البتات بدلا من nats.

لحساب تباعد KL من حيث البتات، يمكنك استخدام 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

يبلغ انحراف KL لتوزيع P عن توزيع Q حوالي 0.7178 بت .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:

كيفية إنشاء التوزيع الطبيعي في R
كيفية رسم التوزيع الطبيعي في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *