تقنية

ترجيح المسافة في أقرب الجيران: ليس كل جار متساويًا

فرع العد يعطي ب وفرع مقلوب المسافة يعطي أ للجيران أنفسهم
الفئة الفائزة تعتمد على مساهمة الجيران، لا عددهم وحده.

يتيح KNeighborsClassifier إعطاء الجيران أوزانًا متساوية أو أوزانًا بمقلوب المسافة، فتزداد مساهمة الجار الأقرب في الخيار الثاني. [1]

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

ترجيح المسافة قد يغير الفئة الفائزة مع بقاء الجيران أنفسهم؛ وزن التصويت يصف قاعدة الجمع، ولا يقيس وحده صحة القرار.

  • تحدد uniform مساهمة متساوية، وdistance مساهمة بمقلوب المسافة عند المسافات الموجبة. [1]
  • مع ثلاثة جيران ثابتين ومسافات موجبة 0.1 و 0.8 و 1.2، تفوز ب بالعد، وتفوز أ بمجموع مقلوبات المسافات.
  • في تنفيذ scikit-learn الموثق، إذا وجدت مسافة صفرية يسهم الجيران المطابقون وحدهم؛ لا نحسب 1/0 كوزن عددي عادي. [2]
  • تغيير وحدة المسافة بعامل موجب مشترك يحفظ الفائز في المثال ذي المسافات الموجبة والجيران الثابتين؛ ليس مجموع الأوزان احتمال نجاح.

من عد الجيران إلى جمع مساهماتهم

نفترض أن اختيار الجيران انتهى بالفعل. نغير الآن طريقة جمع أصوات هذه المجموعة، ونثبت تسمياتها والمسافات إليها. بذلك لا ننسب فرق النتيجة إلى إدخال جار جديد أو حذف جار قديم.

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

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

ثلاثة جيران يقلبون الفائز

نختار k=3. الجار الأول من أ ومسافته 0.1، والثاني والثالث من ب ومسافتاهما 0.8 و 1.2. بالتصويت المتساوي تحصل أ على صوت، وب على صوتين؛ لذلك تفوز ب.

عند استعمال مقلوب المسافة، وزن أ يساوي 1/0.1=10. مجموع ب يساوي 1/0.8+1/1.2=1.25+0.833333≈2.083333. الآن تفوز أ رغم أن عدد جيرانها أقل.

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

لماذا تحتاج المسافة الصفرية معالجة خاصة؟

يعالج الكود الموثق خيار distance عند وجود مسافات صفرية بإعطاء المطابقات وزنًا واحدًا وإعطاء الجيران غير المطابقين وزنًا صفرًا في الصف نفسه. [2]

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

لو وجدت مطابقات من فئتين، فقد نحتاج إلى قاعدة حسم تعادل موثقة. والمطابقة في الخصائص لا تثبت أن التسمية سليمة. هذا وصف لتنفيذ محدد، فلا ننقله آليًا إلى دالة أوزان مخصصة أو برنامج آخر.

ماذا يبقى عند تغيير الوحدة؟

في المثال الأول، اضرب المسافات كلها في 100 مع حفظ الجيران. تصبح أوزانها 0.1 و 0.0125 و 0.008333 تقريبًا؛ كلها قسمت على 100، ولذلك تبقى أ الفائزة.

اختلاف المجموع العددي هنا لا يعني اختلاف الثقة أو اختلاف صحة الحالة. لم تدخل معلومة جديدة عن تسميتها، ولم نقارن النتيجة بحقيقة معروفة. لا تحول الوزن 10 إلى احتمال أو إلى نسبة دقة.

هذا الاستنتاج مقيد بعامل موجب مشترك ومسافات موجبة وقائمة جيران ثابتة. إذا غيرنا خاصية واحدة فقط أو تجاوزنا هذه الشروط، يلزم إعادة حساب المسافات والاختيار. احتفظ بجدول الأصوات لتفسير ما تغير فعلًا.

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

  1. scikit-learn: KNeighborsClassifier (يفتح في نافذة جديدة)scikit-learn.org
  2. scikit-learn source: _get_weights (يفتح في نافذة جديدة)raw.githubusercontent.com

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