تقنية

عامل الشذوذ المحلي: لماذا نقارن كثافة النقطة بكثافة جيرانها؟

مخطط يجمع كثافة العشرة ومتوسط كثافتي جاريها في حساب نسبة عامل الشذوذ
المقارنة مع الجيران تفسر الدرجة، ولا تثبت سبب الحالة.

يقارن عامل الشذوذ المحلي كثافة الوصول المحلية للنقطة بكثافات جيرانها. ترتفع درجته عندما تكون النقطة أقل كثافة من محيطها. [1]

الخلاصة السريعة

في LOF نحسب كثافة النقطة وكثافات جيرانها، ثم نأخذ متوسط نسب كثافة الجار إلى كثافة النقطة؛ البعد وحده ليس الحساب الكامل. [1]

  • تستبعد النقطة نفسها من جوارها، وقد يزيد عدد الجيران عن k عند تعادل مسافات الحد في تعريف الورقة. [1]
  • للقيم 0 و 1 و 2 و 10، مع k يساوي 2 ومسافة خطية، تكون كثافات الوصول للنقاط 0 و 1 و 2 هي 2/3 و 1/2 و 2/3.
  • كثافة النقطة 10 تساوي 2/17، ومتوسط كثافتي جاريها 7/12؛ لذلك درجتها اليدوية 119/24، أي نحو 4.96.
  • يحفظ scikit-learn عكس الدرجة في negative_outlier_factor_؛ الإشارة السالبة لا تجعل الدرجة احتمالًا أو إثباتًا لسبب الشذوذ. [2]

حدد الجوار قبل الدرجة

نضع أربع قيم افتراضية على خط: صفر، وواحد، واثنان، وعشرة. المسافة هي الفرق المطلق، ونختار k يساوي اثنين. لا نخلط هذا الاختيار مع عتبة لاتخاذ قرار، ولا نزعم أنه أفضل إعداد لبيانات أخرى.

تستبعد الورقة النقطة نفسها، وتضم كل جار لا تتجاوز مسافته مسافة الجار ذي الرتبة k؛ التعادل عند الحد قد يزيد العدد. [1] في مثالنا يبقى العدد اثنين لكل نقطة، ولا توجد نقطة إضافية عند الحد.

جارا العشرة هما اثنان وواحد؛ مسافتاهما ثمانية وتسعة. مسافة الجار الثاني لصفر وواحد واثنين وعشرة هي على الترتيب: اثنان، وواحد، واثنان، وتسعة. هذه القائمة تخص كل نقطة، فلا نستبدلها كلها بمسافة العشرة.

من مسافة الوصول إلى الكثافة

مسافة الوصول من النقطة إلى جارها هي الأكبر بين المسافة الفعلية ومسافة الجار ذي الرتبة k لذلك الجار. كثافة الوصول المحلية مقلوب متوسط مسافات الوصول. [1]

من صفر إلى واحد تكون مسافة الوصول واحدًا، ومن صفر إلى اثنين تكون اثنين؛ المتوسط 1.5، ومقلوبه 2/3. ومن واحد إلى صفر واثنين تكون مسافتا الوصول اثنين واثنين، فتكون كثافته 1/2.

وبالتناظر تكون كثافة اثنين 2/3. راجعنا هنا جوار الجار أيضًا: لا يكفي أخذ مقلوب متوسط المسافات الخام؛ فالمسافة من واحد إلى صفر أصلًا واحد، لكنها تدخل الحساب بقيمة اثنين بسبب مسافة الحد الخاصة بصفر.

لماذا تحصل العشرة على درجة مرتفعة؟

للعشرة، لا يغير أخذ القيمة الأكبر مسافتي ثمانية وتسعة؛ المتوسط 8.5، والكثافة 2/17. متوسط كثافتي جاريها اثنين وواحد هو نصف مجموع 2/3 و 1/2، أي 7/12.

نقسم 7/12 على 2/17 فنحصل على 119/24، أي نحو 4.96. هذه عملية يدوية من إعداد المقال؛ لم نشغل نموذجًا أو ندخل الإزاحات العددية الصغيرة التي قد يستخدمها التنفيذ.

الجيران متقاربون في المنطقة الأولى بينما العشرة بعيدة عنهم. يشرح الحساب ارتفاع درجتها بالنسبة إليهم. لكنه لا يخبرنا هل سجلها خطأ قياس أم حدثًا حقيقيًا نادرًا؛ البيانات العددية نفسها لا تحمل جواب السبب.

اقرأ اسم المخرج وإشارته

تعيد خاصية negative_outlier_factor_ في scikit-learn عكس عامل الشذوذ لعينات التدريب؛ القيم الأعلى فيها أقرب إلى السلوك المعتاد. [2]

إذا حولنا درجتنا اليدوية إلى هذا الاصطلاح فقط، نكتب سالب 119/24. ذلك تحويل للإشارة في المثال، لا مخرجًا حصلنا عليه من ملاءمة المكتبة. احتفظ باسم الخاصية إلى جانب الرقم حتى لا تعكس ترتيب الحالات خطأ.

ولا تقرأ 4.96 بوصفها احتمالًا قدره 496 بالمئة. إنها نسبة كثافات تحت جوار محدد. عند مراجعة حالة، سجل المسافة وk والدرجة والمعلومات التي تحتاجها لتفسير السبب، بدل تحويل وصف حسابي إلى تهمة أو تشخيص.

المصادر ومتابعة القراءة

  1. Breunig et al.: LOF, SIGMOD 2000 (يفتح في نافذة جديدة)sigmodrecord.org
  2. scikit-learn: LocalOutlierFactor (يفتح في نافذة جديدة)scikit-learn.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.