كيفية حساب تباعد 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