أساسيات تعلم الآلة1967تأسيسي11 دقيقة قراءة

تصنيف الأنماط بالجار الأقرب

Nearest Neighbor Pattern Classification

Cover, T. · Hart, P. — IEEE Transactions on Information Theory

المشكلة

المُصنِّفات الإحصائية التقليدية تشترط افتراضات صارمة: أن تكون البيانات موزَّعة توزيعاً غاوسياً، وأن تكون حدود الفئات خطية، وأن تنتمي إلى عائلة معاملية معروفة. حين تتحقق هذه الشروط يعمل المُصنِّف بكفاءة، لكنّ الواقع مختلف تماماً: توزيعات البيانات مجهولة، وحدود الفئات منحنية ومعقدة، ولا يوجد معاملي واحد يناسبها. ما احتاجه المهندسون هو مُصنِّف يعمل دون الاعتماد على أي افتراض عن شكل التوزيع، مع ضمانات واضحة حول مقدار الدقة التي يدفعها ثمناً لهذه المرونة.

الإسهام

أثبت كَفر وهارت أنّ أبسط قاعدة تصنيف ممكنة — خُذ تصنيف أقرب جار — لها معدل خطأ مُقارب R محصور بين R* ≤ R ≤ 2R*(1 − R*)، حيث R* هو الخطأ الأمثل لبايز. في حالة M فئة يصبح الحد R ≤ R*(2 − MR*/(M−1))، وهذه الحدود مُحكمة لا يمكن تحسينها. المعنى العملي: هذه القاعدة التي لا تملك أي معاملات قابلة للضبط تلتقط نصف معلومات على الأقل من عيّنة لا نهائية — ضمانة قوية لأسلوب لا يحتاج أي بالمعنى التقليدي.

الأثر

أسّست هذه الورقة التصنيف اللامعاملي بوصفه حقلاً بحثياً له أسس نظرية صارمة. أصبح k-NN المعيار المرجعي الذي يُقاس عليه أداء أي مُصنِّف جديد في تعلّم الآلة وتمييز الأنماط. ومن أفكارها نمت أساليب النواة، والتعلّم المبني على الأمثلة، وأنظمة البحث التقريبي الحديثة مثل FAISS التي تُشغِّل اليوم محركات التوصية والتوليد المعزَّز بالاسترجاع.

تخيّل أنك وصلت لتوِّك إلى مدينة لا تعرف فيها شيئاً، وتريد أن تأكل في مطعم جيد. لا دليل عندك ولا تقييمات. كل ما تملكه هو أنّ صديقاً أوصاك بمطعم واحد. خطتك: ادخل أقرب مطعم جغرافياً إلى ذلك المطعم الموصى به. لا تعرف شيئاً عن توزيع المطابخ في المدينة ولا عن معادلة التقييم — كل ما تعتمد عليه هو القرب المكاني.

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

ما أظهره كَفر وهارت أنّ هذه الاستراتيجية «الكسولة» فعّالة بشكل مُدهش: كلما توفّرت توصيات أكثر، اقتربت جودة اختياراتك من شخص يعرف التقييم الحقيقي لكل مطعم.

القاعدة: حين تصبح البساطة ميزة

قاعدة الجار الأقرب من أبسط أفكار التصنيف على الإطلاق. الفكرة كالتالي: لديك مجموعة نقاط تدريب مُصنَّفة (x1,θ1),(x2,θ2),,(xn,θn)(x_1, \theta_1), (x_2, \theta_2), \ldots, (x_n, \theta_n)، كل نقطة xix_i تقع في فضاء متري ما، وθi\theta_i هو تصنيفها. حين تأتيك نقطة جديدة xx، ابحث عن أقرب نقطة لها xx' في بيانات التدريب وأعطها التصنيف نفسه θ\theta'. هذا كل ما في الأمر.

لا معاملات تُقدَّر، ولا تُفترض، ولا عملية تعمل في الخلفية. القاعدة تعمل في أي فضاء يمكنك فيه قياس — سواء كان ، أو مسافة تحرير النصوص، أو حتى فضاءات مترية مجردة.

هذا ما يجعلها مُصنِّفاً لامعاملياً: لا تفترض شكلاً محدداً لـالتوزيع الاحتمالي الكامن وراء البيانات. البيانات وحدها هي التي تحدد القرار.

افتح في المختبر
انقر في أي مكان لإضافة نقطة اختبار. المُصنِّف يبحث عن أقرب جار لها ويأخذ تصنيفه. جرّب تغيير k لترى كيف يتغيّر القرار.
تستيقظ التجربة عند وصولك…

حدود القرار: تقسيم فورونوي

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

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

الملاحظة المهمة هنا: كلما أضفت نقاط تدريب جديدة، تتقلّص خلايا فورونوي ويزداد حد القرار دقة وتفصيلاً — فيتكيّف مع الشكل الحقيقي لمناطق الفئات من تلقاء نفسه، دون أن تحتاج إلى تحديد شكل الحد مسبقاً.

افتح في المختبر
انقر لإضافة نقاط تدريب (كل فئة بلون مختلف). راقب كيف تتشكّل خلايا فورونوي وتُحدّد حدود القرار. أضف نقاطاً أكثر وراقب كيف تزداد الحدود دقة.
تستيقظ التجربة عند وصولك…

المبرهنة: نصف المعلومات في جار واحد

السؤال الذي انطلق منه كَفر وهارت واضح ومباشر: ما أسوأ ما يمكن أن تُقدّمه قاعدة الجار الأقرب مقارنةً بأفضل مُصنِّف ممكن نظرياً؟

أفضل مُصنِّف ممكن هو مُصنِّف بايز الأمثل، وهو مُصنِّف افتراضي يعرف التوزيع الاحتمالي الحقيقي P(yx)P(y|x) ويختار دائماً الفئة الأكثر احتمالاً. معدل RR^* يمثّل الحد الأدنى المطلق الذي لا تستطيع أي تجاوزه — فهو يعكس الضوضاء الأصيلة في البيانات نفسها.

قاعدة الجار الأقرب لا تعرف P(yx)P(y|x) أصلاً، فالتوقع الطبيعي أن يكون خطؤها أكبر بكثير. لكنّ كَفر وهارت أثبتا نتيجة مُدهشة: مع بيانات تدريب لا نهائية، يخضع خطأ الجار الأقرب RR لمتباينة مزدوجة مُحكَمة.

RR2R(1R)R^* \leq R \leq 2R^*(1 - R^*)
حد كَفر-هارت (التصنيف الثنائي)R* هو خطأ بايز، أي أفضل أداء يحققه أي مُصنِّف. خطأ الجار الأقرب R لا يتجاوز 2R*(1−R*)، وهو دائماً أقل من 2R*. هذا الحد المُحكم يعني أنّ الجار الأقرب يلتقط نصف معلومات التصنيف في البيانات على الأقل.

ما المعنى العملي لهذه النتيجة؟ لو كان خطأ بايز 10%، فخطأ الجار الأقرب لن يتجاوز 18%. ولو كان خطأ بايز 0% — أي أنّ الفئات قابلة للفصل تماماً — فالجار الأقرب أيضاً يحقق 0%. وفي الطرف الآخر، لو كان خطأ بايز 50% — ضوضاء بحتة بلا أي معلومات تصنيفية — فالجار الأقرب يُعطي 50% كذلك. عند الحدّين المتطرفين يتطابق الأداء تماماً مع بايز، وبينهما يكون أسوأ بعامل لا يتجاوز 2.

في حالة MM فئة يتعمّم الحد:

RRR ⁣(2MRM1)R^* \leq R \leq R^*\!\left(2 - \frac{M\,R^*}{M-1}\right)
حد كَفر-هارت (التعميم لعدد M من الفئات)مهما كان عدد الفئات M، لا يتجاوز خطأ الجار الأقرب ضعف خطأ بايز. هذه الحدود هي الأكثر إحكاماً لجميع التوزيعات ذات النعومة الكافية.
افتح في المختبر
حرّك شريط خطأ بايز R* ولاحظ كيف يتغيّر حد خطأ الجار الأقرب. انتبه كيف يتطابق الاثنان عند الحدّين المتطرفين (0% و50%).
تستيقظ التجربة عند وصولك…

الحَدْس: لماذا ينجح جار واحد إلى هذا الحد؟

البرهان يعتمد على حجّة مُقاربية أنيقة. الفكرة الأساسية: كلما ازداد عدد نقاط التدريب بحيث nn \to \infty، يقترب الجار الأقرب xx' لأي نقطة اختبار xx من النقطة xx نفسها — في أي توزيع مستمر. عملياً إذن، القاعدة تُجري سحبين مستقلين من التوزيع عند الموضع xx: التصنيف الحقيقي لنقطة الاختبار، والتصنيف الحقيقي للجار.

متى تُخطئ القاعدة؟ حين يختلف هذان السحبان. في التصنيف الثنائي مع p=P(y=1x)p = P(y=1|x)، يكون الخطأ الشرطي:

r(x)=p(1p)+(1p)p=2p(1p)r(x) = p(1-p) + (1-p)p = 2p(1-p)

هذا بالضبط احتمال أن تعطي رميتا عملة مستقلتان — بانحياز pp — نتيجتين مختلفتين. قارن ذلك بخطأ بايز عند النقطة نفسها: r(x)=min(p,1p)r^*(x) = \min(p, 1-p).

حين نحسب المتوسط على كامل فضاء المدخلات نحصل على الحد الشامل R2R(1R)R \leq 2R^*(1-R^*). الفكرة المحورية: الجار الأقرب يرتكب بالضبط الخطأ المتوقع حين تملك تصنيفين مُشوَّشَين بدلاً من معرفة الحقيقي — وهذا أسوأ بالضعف فحسب.

من جار واحد إلى k جيران: قوة التصويت

إذا كان جار واحد يلتقط نصف المعلومات، فالسؤال الطبيعي: ماذا لو استشرنا kk جيران بدلاً من واحد؟ هذا هو التوسيع المنطقي — قاعدة الجيران الأقرب k (k-NN): ابحث عن أقرب kk نقطة تدريب وأعطِ نقطة الاختبار تصنيف الأغلبية بينها.

كلما ازداد kk — بشرط أن تبقى النسبة k/n0k/n \to 0 — يتقارب خطأ k-NN نحو خطأ بايز RR^* ذاته، وليس مجرد ضعفه. أثبت ستون ذلك عام 1977 بصرامة رياضية، وبيّن أنّ k-NN يتمتع بـ: يتقارب نحو المُصنِّف الأمثل لـكل توزيع احتمالي ممكن، بلا أي افتراضات.

واضحة هنا: kk صغير يُنتج حد قرار مرناً لكن مُضطرباً ( عالٍ، منخفض). kk كبير يُنتج حداً أنعم (تباين منخفض، انحياز أعلى). النقطة المثلى تعتمد على طبيعة البيانات — وعادةً ما تقع بين 3 و15.

افتح في المختبر
حرّك شريط k وراقب تأثيره على حد القرار. k صغير يعطي حدوداً متعرّجة، وk كبير يعطي حدوداً ناعمة. لاحظ كيف يتبدّل تصنيف نقطة الاختبار.
تستيقظ التجربة عند وصولك…

الفكرة نفسها في شيفرة برمجية

مُصنِّف الجيران الأقرب k، الشيفرة الكاملةpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np
from collections import Counter

def knn_classify(X_train, y_train, x_query, k=1):
    """صنِّف x_query بتصويت أغلبية أقرب k جيران."""
    # الخطوة 1: احسب المسافة من نقطة الاستعلام إلى كل نقطة تدريب
    distances = np.sqrt(np.sum((X_train - x_query) ** 2, axis=1))

    # الخطوة 2: حدِّد أقرب k جيران
    nearest_indices = np.argsort(distances)[:k]
    nearest_labels = y_train[nearest_indices]

    # الخطوة 3: صوّت بالأغلبية
    vote_counts = Counter(nearest_labels)
    return vote_counts.most_common(1)[0][0]

# مثال: نقاط في بُعدين، فئتان
X = np.array([[1,2],[2,3],[3,1],[6,5],[7,7],[8,6]])
y = np.array([0, 0, 0, 1, 1, 1])

# صنِّف نقطة جديدة باستخدام k=3
label = knn_classify(X, y, np.array([5, 5]), k=3)
# label = 1 (أغلبية الجيران الثلاثة من الفئة 1)

# هذا كل شيء. لا ()fit.، لا تدرُّجات، لا حقبات تدريبية.
# «النموذج» بالكامل ليس إلا بيانات التدريب نفسها.

المسافة: الافتراض الوحيد

قاعدة الجار الأقرب تقوم على افتراض ضمني واحد فقط: أنّ النقاط القريبة في فضاء السمات تحمل تصنيفات متشابهة. اختيار مقياس المسافة هو ما يُحدِّد معنى «القرب»، وله تأثير حاسم في جودة التصنيف.

الخيار الأكثر شيوعاً هو المسافة الإقليدية: d(x,x)=i(xixi)2d(x, x') = \sqrt{\sum_i (x_i - x'_i)^2}. لكنّ مقاييس أخرى قد تناسب بيانات معينة بشكل أفضل. مسافة مانهاتن (L1L_1) تجمع الفروقات المطلقة وتكون أكثر مقاومة لـ في المنفردة. مسافة مينكوفسكي (LpL_p) تُعمِّم كلتيهما. أما في النصوص، فيُقاس الذي يهتم بالزاوية بين ويتجاهل حجمها.

مسألة جوهرية. تخيّل أنّ سمة تتراوح بين 0 و1000 وأخرى بين 0 و1 — السمة الأولى ستُهيمن على حساب المسافة وتُلغي تأثير الثانية تماماً. لذلك، ضبط السمات على نطاقات متقاربة يكاد يكون ضرورة في كل تطبيق عملي.

dp(x,x)=(i=1dxixip)1/pd_p(x, x') = \left(\sum_{i=1}^{d} |x_i - x'_i|^p\right)^{1/p}
مسافة مينكوفسكي — العائلة العامةعند p=1 نحصل على مسافة مانهاتن، وعند p=2 نحصل على المسافة الإقليدية، وعند p→∞ نحصل على مسافة تشيبيشيف التي تساوي أكبر فرق بين الإحداثيات.

نقطة الضعف الكبرى: لعنة الأبعاد

حد كَفر-هارت يفترض بيانات تدريب لا نهائية. لكن في الواقع البيانات محدودة، وقد لا يكون الجار الأقرب قريباً بالمعنى الفعلي — خصوصاً حين يكون عدد كبيراً.

في فضاء بـdd بُعد، تحتاج عدداً من العيّنات ينمو أُسِّيّاً مع dd لمجرد الحفاظ على كثافة معقولة حول أي نقطة اختبار. في مكعب فائق وحدوي ذي 100 بُعد مثلاً، حتى مليون نقطة تبقى متناثرة — المسافة إلى أقرب جار تصبح كبيرة، وافتراض أنّ القرب في السمات يدل على تشابه التصنيفات ينهار.

هذا ما يُعرف بـ****. مع ازدياد عدد الأبعاد، تتركّز جميع المسافات الزوجية حول قيمة واحدة، فتفقد كلمة «الأقرب» معناها. النسبة بين أبعد نقطة وأقرب نقطة تقترب من 1، ويصبح الجار الأقرب لا يحمل معلومات تزيد عمّا تحمله نقطة تدريب مختارة عشوائياً.

افتح في المختبر
زِد عدد الأبعاد وراقب كيف تتقارب المسافات بين أقرب الجيران وأبعدهم. في الأبعاد العالية تفقد كلمة «الأقرب» دلالتها.
تستيقظ التجربة عند وصولك…

k-NN الموزون: ليس كل الجيران سواء

في k-NN القياسي، كل جار يحصل على صوت واحد بغض النظر عن بُعده. لكنّ المنطق يقول إنّ جاراً على مسافة 0.1 يجب أن يكون أكثر تأثيراً من جار على مسافة 5.0. هذا هو مبدأ k-NN الموزون بالمسافة: كل جار يحصل على وزن يتناسب عكسياً مع مسافته:

wi=1/d(x,xi)w_i = 1 / d(x, x_i)

الفئة المُتنبَّأ بها هي صاحبة أعلى مجموع أوزان. الفائدة العملية أنّ هذا يُقلِّل حساسية النتيجة لاختيار kk، لأنّ الجيران البعيدين يُخفَّض تأثيرهم تلقائياً. هذه الفكرة ترتبط بشكل طبيعي بـ و من خلال تفسير .

لماذا غيَّرت هذه الورقة المسار

قبل ورقة كَفر وهارت، كان الوضع النظري للأساليب اللامعاملية ضبابياً. المهندسون كانوا يستخدمون قاعدة الجار الأقرب في التطبيقات العملية منذ أن اقترحها فيكس وهودجز عام 1951، لكن لم يكن أحد قد أثبت رياضياً كم هي جيدة مقارنةً بالحد الأمثل النظري.

مبرهنة كَفر-هارت منحت التصنيف اللامعاملي أول أساس نظري متين. أظهرت أنّ الأساليب البسيطة التي لا تعتمد على أي افتراضات تملك ضمانات أداء مُثبتة رياضياً — وهذه نتيجة شكّلت عقوداً من البحث في نظرية التعلّم الإحصائي، بدءاً من تطوير أساليب النواة وصولاً إلى نظرية الاتساق في .

  1. 1951

    فيكس وهودجز يقترحان قاعدة الجار الأقرب

    أول اقتراح لقاعدة الجار الأقرب في التصنيف، ضمن تقرير تقني غير منشور للقوات الجوية الأمريكية. لم تكن مصحوبة بأي ضمانات نظرية.

  2. 1967

    كَفر وهارت يُبرهنان حد الخطأ

    الورقة التأسيسية التي أثبتت أنّ خطأ الجار الأقرب لا يتجاوز ضعف خطأ بايز، وأرست التصنيف اللامعاملي كحقل بحثي ذي أسس رياضية صارمة.

  3. 1968

    هارت يقترح قاعدة الجار الأقرب المُكثَّف

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

  4. 1977

    ستون يُثبت الاتساق العالمي لـ k-NN

    أثبت أنّ k-NN يتقارب نحو خطأ بايز لكل توزيع بلا استثناء، وليس فقط التوزيعات الملساء — وهي أقوى ضمانة نظرية لأي مُصنِّف لامعاملي.

  5. 2003

    التجزئة الحساسة للموقع (LSH)

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

  6. 2017

    مكتبة FAISS من فيسبوك للذكاء الاصطناعي

    مكتبة للبحث التقريبي عن الجار الأقرب على نطاق صناعي. تُشغِّل البحث بالتشابه في محركات التوصية، والتوليد المعزَّز بالاسترجاع، والبحث في التضمينات بمقياس مليارات النقاط.

فكرة الجار الأقرب لم تتوقف عن التطوّر. FAISS والمكتبات المشابهة حلّت مشكلة التكلفة الحسابية من خلال البحث التقريبي. ويمكنك أن تنظر إلى آلات المتجهات الداعمة على أنها تتعلّم أيَّ الجيران يستحق الاهتمام أكثر من غيره. وفي كل مرة يسترجع فيها وثائق ذات صلة لتحسين إجابته، فهو في حقيقة الأمر يُجري بحثاً عن الجار الأقرب في — رؤية كَفر وهارت البسيطة، لكن على مقياس مليارات المتجهات.

المرجعCover, Hart. Nearest Neighbor Pattern Classification. IEEE Transactions on Information Theory, 1967.

مصطلحات هذه الورقة