K-Nearest Neighbors (KNN)
استكشف أقرب الجيران K (KNN). تعلم كيف تعمل خوارزمية التعلم الخاضع للإشراف هذه للتصنيف والانحدار، واستخدامها في البحث المرئي، والتكامل مع Ultralytics YOLO26.
خوارزمية الجيران القريبين الأK (KNN) هي خوارزمية قوية وبديهية تُستخدم في مجال التعلم الخاضع للإشراف لكل من مهام التصنيف والانحدار. تتميز خوارزمية KNN ببساطتها وغالباً ما تُصنف على أنها "متعلم كسلان" لأنها لا تبنى نموذجاً أو تعلم معاملات أثناء مرحلة التدريب. بدلاً من ذلك، تقوم بحفظ مجموعة بيانات التدريب بأكملها وتنفذ الحسابات فقط عند طلب التنبؤ. يعتمد المبدأ الأساسي للخوارزمية على تشابه الميزات: فهي تفترض أن نقاط البيانات ذات السمات المتشابهة توجد على مقربة شديدة من بعضها البعض داخل مساحة ميزات متعددة الأبعاد.
كيفية عمل الخوارزمية#
تعتمد آلية عمل الجيران الأقرب على حسابات المسافة. عند إدخال نقطة استعلام جديدة، تبحث الخوارزمية في مجموعة البيانات المخزنة للعثور على عدد 'K' من عينات التدريب الأقرب إلى المدخل الجديد.
-
قياس المسافة: يقوم النظام بحساب المسافة بين نقطة الاستعلام وكل نقطة أخرى في قاعدة البيانات. المقياس الأكثر شيوعاً هو المسافة الإقليدية، والتي تقيس المسافة في خط مستقيم بين النقاط. يمكن استخدام مقاييس أخرى مثل مسافة منهاتن (هندسة سيارات الأجرة) أو مسافة مينكوفسكي اعتماداً على نوع البيانات.
-
اختيار الجيران: بعد حساب المسافات، تقوم الخوارزمية بترتيبها وتحديد أفضل 'K' من المدخلات الأقرب.
-
اتخاذ القرار: - للتصنيف: تستخدم الخوارزمية نظام "التصويت بالأغلبية". يتم تعيين تسمية الفئة التي تظهر بشكل متكرر بين الجيران الـ K إلى نقطة الاستعلام. يُستخدم هذا على نطاق واسع في مهام تصنيف الصور الأساسية. - للانحدار: يتم حساب التنبؤ عن طريق أخذ متوسط قيم الجيران القريبين الـ K لتقدير متغير مستمر.
اختيار 'K' المناسبة#
يعد اختيار القيمة المثلى للحرف 'K' خطوة حاسمة في ضبط المعلمات الفائقة. يؤثر اختيار K بشكل كبير على أداء النموذج وقدرته على التعميم على البيانات الجديدة.
- قيمة K منخفضة: تجعل قيمة K الصغيرة (مثل K=1) النموذج شديد الحساسية للتشويش والقيم المتطرفة في البيانات، مما قد يؤدي إلى فرط التخصيص.
- قيمة K عالية: تقوم قيمة K الكبيرة بتسهيل حدود القرار، مما يقلل من تأثير التشويش ولكنها قد تطمس الأنماط المميزة، مما ينتج عنه نقص التخصيص.
تطبيقات العالم الحقيقي#
على الرغم من بساطتها مقارنة بالشبكات العصبية العميقة، تظل خوارزمية KNN ذات صلة كبيرة بالذكاء الاصطناعي الحديث، لا سيما عند دمجها مع تقنيات استخراج الميزات المتقدمة.
- أنظمة التوصية: تسهل خوارزمية KNN التصفية التعاونية في بث الوسائط والتجارة الإلكترونية. من خلال تحديد المستخدمين الذين لديهم تاريخ مشاهدة أو سلوكيات شراء مماثلة (الجيران)، يمكن للمنصات اقتراح منتجات من المرجح أن تستحوذ على إعجاب المستخدم بناءً على تفضيلات "الجيران القريبين" له.
- كشف الشذوذ: في الأمن السيبراني والتمويل، تُستخدم خوارزمية KNN لـ كشف الشذوذ. يتم تعيين المعاملات أو أنشطة الشبكة في مساحة الميزات؛ وأي نقطة بيانات جديدة تقع بعيداً عن المجموعات الكثيفة من النشاط "الطبيعي" يتم الإبلاغ عنها على أنها احتيال محتمل أو خرق أمني.
- البحث البصري: غالباً ما تعتمد محركات البحث المتجهي الحديثة على خوارزميات الجار القريب التقريبي (ANN) - وهي تنويع محسن لخوارزمية KNN - لاسترجاع الصور المشابهة بسرعة بناءً على التضمينات عالية الأبعاد التي تولدها نماذج مثل YOLO26.
التحديات والاعتبارات#
على الرغم من فعالية خوارزمية KNN، إلا أنها تواجه لعنة الأبعاد. مع زيادة عدد الميزات (الأبعاد)، تصبح نقاط البيانات متفرقة، وتفقد مقاييس المسافة فعاليتها. بالإضافة إلى ذلك، نظراً لأنها تخزن جميع بيانات التدريب، يمكن أن تكون خوارزمية KNN كثيفة الاستخدام للذاكرة وتعاني من زمن وصول الاستدلال العالي على مجموعات البيانات الكبيرة. لمعالجة هذه المشكلة، غالباً ما يقوم الممارسون بمعالجة البيانات مسبقاً باستخدام تقنيات تقليل الأبعاد مثل تحليل المكونات الرئيسية (PCA) أو استخدام هياكل بيانات مخصصة مثل أشجار KD لتسريع البحث. بالنسبة للتوسع على مستوى المؤسسات لمجموعات البيانات وتدريب النماذج، يمكن أن يساعد استخدام منصة Ultralytics في إدارة موارد الحوسبة المطلوبة لمعالجة البيانات المعقدة مسبقاً.
التمييز بين KNN و K-Means#
من المهم التمييز بين الجيران القريبين الكلاسيكيين والتجميع بالوسائل K (K-Means)، نظراً لأن أسمائهما المتشابهة غالباً ما تسبب الارتباك.
- 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)")





