Yolo فيجن شنتشن
شنتشن
انضم الآن
مسرد المصطلحات

خوارزمية أقرب جار K (KNN)

استكشف K-Nearest Neighbors (KNN). تعرف على كيفية عمل خوارزمية التعلم الخاضع للإشراف هذه في التصنيف والانحدار، واستخدامها في البحث المرئي، وتكاملها مع Ultralytics .

K-Nearest Neighbors (KNN) هي خوارزمية قوية وبديهية تستخدم في مجال التعلم الخاضع للإشراف لكل من مهام التصنيف و الانحدار. تتميز KNN ببساطتها، وغالبًا ما تصنف على أنها "متعلمة كسولة" لأنها لا تبني نموذجًا أو تتعلم معلمات خلال مرحلة التدريب. بدلاً من ذلك، تحفظ مجموعة بيانات التدريب بأكملها وتقوم بإجراء الحسابات فقط عند طلب التنبؤ. يعتمد المبدأ الأساسي للخوارزمية على تشابه الميزات: فهي تفترض أن النقاط ذات السمات المتشابهة موجودة على مقربة من بعضها البعض داخل مساحة ميزات متعددة الأبعاد.

كيف يعمل الخوارزمية

تعتمد آلية K-Nearest Neighbors على حسابات المسافة. عند إدخال نقطة استعلام جديدة، تبحث الخوارزمية في مجموعة البيانات المخزنة للعثور على عدد "K" من عينات التدريب الأقرب إلى الإدخال الجديد.

  1. قياس المسافة: يحسب النظام المسافة بين نقطة الاستعلام وكل نقطة أخرى في قاعدة البيانات. المقياس الأكثر شيوعًا هو المسافة الأوقليدية، التي تقيس المسافة الخطية بين النقاط. يمكن استخدام مقاييس أخرى مثل مسافة مانهاتن (هندسة سيارات الأجرة) أو مسافة مينكوفسكي اعتمادًا على نوع البيانات .
  2. اختيار الجيران: بعد حساب المسافات، تقوم الخوارزمية بفرزها وتحديد أقرب K إدخالات.
  3. اتخاذ القرار:
    • للتصنيف: تستخدم الخوارزمية نظام "التصويت بالأغلبية". يتم تعيين تسمية الفئة التي تظهر بشكل متكرر بين الجيران K إلى نقطة الاستعلام. يستخدم هذا على نطاق واسع في مهام تصنيف الصور الأساسية.
    • بالنسبة للانحدار: يتم حساب التنبؤ عن طريق حساب متوسط قيم أقرب جيران K لتقدير متغير مستمر.

اختيار الحرف "K" المناسب

يعد اختيار القيمة المثلى لـ "K" خطوة حاسمة في ضبط المعلمات الفائقة. يؤثر اختيار K بشكل كبير على أداء النموذج وقدرته على التعميم على البيانات الجديدة.

  • قيمة K منخفضة: قيمة K صغيرة (على سبيل المثال، K=1) تجعل النموذج شديد الحساسية للضوضاء والقيم المتطرفة في البيانات، مما قد يؤدي إلى الإفراط في الملاءمة.
  • قيمة K عالية: تؤدي قيمة K الكبيرة إلى تسوية حدود القرار، مما يقلل من تأثير الضوضاء ولكن قد يؤدي إلى تشويش الأنماط المتميزة، مما ينتج عنه تناسب غير كافٍ.

تطبيقات واقعية

على الرغم من بساطته مقارنة بالشبكات العصبية العميقة، لا يزال KNN وثيق الصلة بالذكاء الاصطناعي الحديث، لا سيما عند الجمع بينه وبين تقنيات استخراج الميزات المتقدمة.

  • أنظمة التوصية: يسهل KNN التصفية التعاونية في بث الوسائط والتجارة الإلكترونية. من خلال تحديد المستخدمين الذين لديهم سجلات مشاهدة أو سلوكيات شراء متشابهة (الجيران)، يمكن للمنصات اقتراح المنتجات التي من المحتمل أن يستمتع بها المستخدم بناءً على تفضيلات "أقرب جيرانه".
  • كشف الحالات الشاذة: في مجال الأمن السيبراني والتمويل، يُستخدم KNN لكشف الحالات الشاذة. يتم تعيين المعاملات أو أنشطة الشبكة في مساحة مميزة؛ ويتم وضع علامة على أي نقطة بيانات جديدة تقع بعيدًا عن المجموعات الكثيفة للأنشطة "العادية" على أنها احتيال محتمل أو خرق أمني.
  • البحث المرئي: غالبًا ما تعتمد محركات البحث المتجه الحديثة على خوارزميات أقرب جار تقريبي (ANN) — وهي نسخة محسنة من KNN — لاسترجاع الصور المماثلة بسرعة استنادًا إلى التضمينات عالية الأبعاد التي تولدها نماذج مثل YOLO26.

التحديات والاعتبارات

على الرغم من فعالية KNN، إلا أنه يواجه لعنة الأبعاد. مع زيادة عدد الميزات (الأبعاد)، تصبح نقاط البيانات متفرقة، وتفقد مقاييس المسافة فعاليتها. بالإضافة إلى ذلك، نظرًا لأنه يخزن جميع بيانات التدريب، يمكن أن يكون KNN كثيفًا في استخدام الذاكرة ويعاني من تأخر كبير في الاستدلال على مجموعات البيانات الكبيرة. لمعالجة هذا الأمر، غالبًا ما يقوم الممارسون بمعالجة البيانات مسبقًا باستخدام تقنيات تقليل الأبعاد مثل تحليل المكونات الرئيسية (PCA) أو استخدام هياكل بيانات متخصصة مثل KD-Trees لتسريع البحث. لتوسيع نطاق مجموعات البيانات وتدريب النماذج على مستوى المؤسسات، يمكن أن يساعد استخدام Ultralytics في إدارة موارد الحوسبة المطلوبة لمعالجة البيانات المعقدة مسبقًا.

التمييز بين KNN و K-Means

من المهم التمييز بين K-Nearest Neighbors و K-Means clustering، لأن أسمائهما المتشابهة غالبًا ما تسبب الالتباس.

  • KNN هي خوارزمية تعلم خاضعة للإشراف تستخدم البيانات المصنفة لإجراء التنبؤات.
  • K-Means هو خوارزمية تعلم غير خاضعة للإشراف يستخدم لتجميع البيانات غير المصنفة في مجموعات بناءً على أوجه التشابه الهيكلية.

مثال على التنفيذ

يوضح مقتطف الشفرة التالي سير عمل تصنيف 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)")

انضم إلى مجتمع Ultralytics

انضم إلى مستقبل الذكاء الاصطناعي. تواصل وتعاون وانمو مع المبتكرين العالميين

انضم الآن