K-Nearest Neighbors (KNN)
استكشف أقرب الجيران K (KNN). تعلم كيف تعمل خوارزمية التعلم الخاضع للإشراف هذه للتصنيف والانحدار، واستخدامها في البحث المرئي، والتكامل مع Ultralytics YOLO26.
خوارزمية الجيران الأقرب (KNN) هي خوارزمية قوية وبديهية تُستخدم في مجال التعلم المُشرف لمهام التصنيف والانحدار على حد سواء. تتميز خوارزمية KNN ببساطتها، وغالبًا ما تُصنف على أنها "متعلم كسول" (lazy learner) لأنها لا تبني نموذجًا أو تتعلم معاملات خلال مرحلة التدريب. بدلاً من ذلك، تقوم بحفظ مجموعة بيانات التدريب بأكملها وتجري الحسابات فقط عند طلب تنبؤ. يعتمد المبدأ الأساسي للخوارزمية على تشابه السمات: فهي تفترض أن نقاط البيانات ذات السمات المتشابهة توجد في أماكن متقاربة داخل فضاء سمات متعدد الأبعاد.
Link to this sectionكيفية عمل الخوارزمية#
تعتمد آلية عمل الجيران الأقرب على حسابات المسافة. عند إدخال نقطة استعلام جديدة، تبحث الخوارزمية في مجموعة البيانات المخزنة للعثور على عدد 'K' من عينات التدريب الأقرب إلى المدخل الجديد.
-
قياس المسافة: يقوم النظام بحساب المسافة بين نقطة الاستعلام وكل نقطة أخرى في قاعدة البيانات. المقياس الأكثر شيوعًا هو المسافة الإقليدية، التي تقيس المسافة في خط مستقيم بين النقاط. قد تُستخدم مقاييس أخرى مثل مسافة مانهاتن (هندسة سيارات الأجرة) أو مسافة مينكوفسكي اعتمادًا على نوع البيانات.
-
اختيار الجيران: بعد حساب المسافات، تقوم الخوارزمية بترتيبها وتحديد أفضل 'K' من المدخلات الأقرب.
-
اتخاذ القرار: - للتصنيف: تستخدم الخوارزمية نظام "التصويت بالأغلبية". يتم تعيين تسمية الفئة التي تظهر بشكل متكرر بين جيران K لنقطة الاستعلام. يُستخدم هذا على نطاق واسع في مهام تصنيف الصور الأساسية. - للانحدار: يتم حساب التنبؤ عن طريق حساب متوسط قيم جيران K الأقرب لتقدير متغير مستمر.
Link to this sectionاختيار 'K' المناسبة#
يُعد اختيار القيمة المثلى لـ 'K' خطوة حاسمة في ضبط المعاملات الفائقة. يؤثر اختيار K بشكل كبير على أداء النموذج وقدرته على التعميم على بيانات جديدة.
- قيمة K منخفضة: تجعل قيمة K الصغيرة (مثل K=1) النموذج شديد الحساسية للضوضاء والقيم المتطرفة في البيانات، مما قد يؤدي إلى فرط التخصيص.
- قيمة K مرتفعة: تعمل قيمة K الكبيرة على تنعيم حدود القرار، مما يقلل من تأثير الضوضاء ولكنه قد يؤدي إلى طمس الأنماط المميزة، مما ينتج عنه نقص التخصيص.
Link to this sectionتطبيقات العالم الحقيقي#
على الرغم من بساطتها مقارنة بالشبكات العصبية العميقة، تظل KNN ذات أهمية كبيرة في الذكاء الاصطناعي الحديث، خاصة عند دمجها مع تقنيات استخراج السمات المتقدمة.
- أنظمة التوصية: تسهل KNN الترشيح التعاوني في بث الوسائط والتجارة الإلكترونية. من خلال تحديد المستخدمين ذوي سجلات المشاهدة أو سلوكيات الشراء المتشابهة (الجيران)، يمكن للمنصات اقتراح منتجات من المرجح أن يستمتع بها المستخدم بناءً على تفضيلات "أقرب جيرانه".
- كشف الشذوذ: في الأمن السيبراني والتمويل، تُستخدم KNN لـ كشف الشذوذ. يتم تعيين المعاملات أو أنشطة الشبكة في فضاء سمات؛ وأي نقطة بيانات جديدة تقع بعيدًا عن مجموعات النشاط "الطبيعي" الكثيفة يتم وضع علامة عليها كاحتمالية احتيال أو خرق أمني.
- البحث المرئي: تعتمد محركات البحث المتجهي الحديثة غالبًا على خوارزميات الجيران الأقرب التقريبية (ANN)—وهي نسخة محسنة من KNN—لاسترداد الصور المتشابهة بسرعة بناءً على التضمينات عالية الأبعاد التي تولدها نماذج مثل YOLO26.
Link to this sectionالتحديات والاعتبارات#
على الرغم من فعاليتها، تواجه KNN لعنة الأبعاد. مع زيادة عدد السمات (الأبعاد)، تصبح نقاط البيانات متناثرة وتفقد مقاييس المسافة فعاليتها. بالإضافة إلى ذلك، نظرًا لأنها تخزن جميع بيانات التدريب، يمكن أن تكون KNN كثيفة الاستهلاك للذاكرة وتعاني من تأخير في الاستنتاج كبير على مجموعات البيانات الضخمة. لمعالجة ذلك، يقوم الممارسون غالبًا بمعالجة البيانات مسبقًا باستخدام تقنيات تقليل الأبعاد مثل تحليل المكونات الرئيسية (PCA) أو استخدام هياكل بيانات متخصصة مثل KD-Trees لتسريع البحث. لتحجيم مجموعات البيانات وتدريب النماذج على مستوى المؤسسات، يمكن أن يساعد استخدام منصة Ultralytics في إدارة موارد الحوسبة المطلوبة لمعالجة البيانات المعقدة مسبقًا.
Link to this sectionالتمييز بين KNN و K-Means#
من المهم التمييز بين الجيران الأقرب وتجميع K-Means، حيث تتسبب أسماؤهما المتشابهة غالبًا في حدوث ارتباك.
- KNN هي خوارزمية تعلم مُشرف تستخدم بيانات مصنفة لإجراء تنبؤات.
- K-Means هي خوارزمية تعلم غير مُشرف تُستخدم لتجميع البيانات غير المصنفة في مجموعات بناءً على أوجه التشابه الهيكلية.
Link to this sectionمثال على التنفيذ#
يوضح مقتطف الكود التالي سير عمل تصنيف KNN بسيط باستخدام مكتبة Scikit-learn الشهيرة. في سياق الرؤية الحاسوبية، يتم عادةً استخراج "السمات" المدخلة بواسطة نموذج تعلم عميق مثل YOLO26 قبل تمريرها إلى مصنف KNN.
from sklearn.neighbors import KNeighborsClassifier
# Simulated feature vectors (e.g., extracted from YOLO26) and labels
# Features: [Size, Redness], Labels: 0=Apple, 1=Orange
features = [[0.8, 0.9], [0.9, 0.8], [0.2, 0.3], [0.3, 0.2]]
labels = [0, 0, 1, 1]
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(features, labels)
# Predict the class of a new object [Size=0.85, Redness=0.85]
prediction = knn.predict([[0.85, 0.85]])
print(f"Predicted Class: {prediction[0]} (0=Apple, 1=Orange)")





