اكتشف DBSCAN: خوارزمية تجميع قوية لتحديد الأنماط، والتعامل مع الضوضاء، وتحليل مجموعات البيانات المعقدة في التعلم الآلي.
DBSCAN (التجميع المكاني المستند إلى الكثافة للتطبيقات مع الضوضاء) هي خوارزمية مستخدمة على نطاق واسع في التعلم الآلي (ML) المصممة لتحديد مجموعات متميزة ضمن مجموعة بيانات بناءً على كثافة نقاط البيانات. على عكس الخوارزميات التي تفترض أن المجموعات كروية أو تتطلب عددًا محددًا مسبقًا من المجموعات، فإن DBSCAN تتفوق في اكتشاف مجموعات ذات أشكال وأحجام عشوائية وأحجام عشوائية. وهي فعالة بشكل خاص في مهام التعلم غير الخاضعة للإشراف حيث تحتوي البيانات تحتوي على ضوضاء أو قيم متطرفة، مما يجعلها أداة قوية لاستكشاف البيانات والتعرف على الأنماط.
المبدأ الأساسي ل DBSCAN هو أن المجموعة تتكون من منطقة كثيفة من النقاط مفصولة عن المجموعات الأخرى بمناطق ذات كثافة أقل. تعتمد الخوارزمية على اثنين من معيارين حاسمين لتحديد هذه الكثافة:
eps): المسافة القصوى بين نقطتين حتى يمكن اعتبار إحداهما في
مجاورة للأخرى. يحدد نصف القطر هذا المنطقة المحلية للتحقيق.
min_samples): الحد الأدنى لعدد النقاط المطلوبة لتكوين منطقة كثيفة
داخل المنطقة eps نصف القطر.
استنادًا إلى هذه المعلمات، تصنف DBSCAN كل نقطة بيانات إلى ثلاثة أنواع محددة، مما يؤدي إلى تصفية فعالة الضوضاء أثناء مرحلة المعالجة المسبقة للبي انات:
min_samples النقاط (بما في ذلك
نفسها) ضمن eps الحي.
للتعمّق أكثر في التفاصيل التقنية، يمكن الاطلاع على وثائق Scikit-learn على DBSCAN تفاصيل تنفيذ شاملة، ويمكنك استكشاف المفاهيم الأساسية في الورقة البحثية الأصلية لعام 1996.
إن فهم الفرق بين DBSCAN و K-Means Clusterering أمر ضروري لاختيار الأداة المناسبة لخط أنابيب تحليل البيانات الخاص بك.
على الرغم من أن DBSCAN هي خوارزمية تجميع عامة، إلا أنها تلعب دورًا مهمًا في الرؤية الحاسوبية الحديثة وسير عمل الذكاء الاصطناعي كخطوة ما بعد المعالجة.
يوضح المثال التالي كيفية استخدام DBSCAN لتجميع البيانات المكانية. في خط أنابيب الرؤية، فإن
detections يمكن أن تمثل المصفوفة (x, y) إحداثيات الأجسام المكتشفة بواسطة
نموذج YOLO.
import numpy as np
from sklearn.cluster import DBSCAN
# Simulated centroids from YOLO11 detections (x, y coordinates)
# Points clustered around (10,10) and (50,50), with one outlier at (100,100)
detections = np.array([[10, 10], [11, 12], [10, 11], [50, 50], [51, 52], [100, 100]])
# Initialize DBSCAN with a neighborhood radius of 5 and min 2 points per cluster
clustering = DBSCAN(eps=5, min_samples=2).fit(detections)
# Output labels: 0 and 1 are clusters, -1 represents the noise point (outlier)
print(f"Cluster Labels: {clustering.labels_}")
# Expected Output: [ 0 0 0 1 1 -1]
غالبًا ما يتم استخدام DBSCAN جنبًا إلى جنب مع نماذج التعلم العميق لتحسين النتائج. على سبيل المثال، بعد إجراء تجزئة الصورة أو تجزئة الصورة، يمكن للخوارزمية فصل الحالات المتميزة للأجسام المتجاورة مكانيًا التي قد يتم دمجها. كما أنها ذات قيمة في التعلّم شبه الخاضع للإشراف لنشر التسميات من مجموعة صغيرة من البيانات المصنفة إلى نقاط قريبة غير مصنفة داخل مناطق عالية الكثافة.
للباحثين والمهندسين، مكتبات مثل NumPy و تسهل Scikit-learn دمج DBSCAN في خطوط أنابيب أكبر أكبر مدعومة بأطر عمل مثل PyTorch. إن فهم هذه التقنيات الكلاسيكية هذه يعزز القدرة على تفسير ومعالجة مخرجات الشبكات العصبية المعقدة.