اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

هي طريقة لعمل تقسيم للبيانات الغير معنونة، unlabeled data ويستخدم في التعلم بلا إشراف يحل مشكلة K-Means في تشكل العناقيد في البيانات التي فيها كثافات متفاوتة حيث تعتمد على إنشاء دوائر حول كل عينة من البيانات ويتم بعدها تصنيف العينات على أنها عينات أساسية أو حدية أو ضوضاء.
حيث تعتبر العينة التي تحتوى على عدد  min_samples  أو أكثر من العينات بعينة أساسية وتعتبر العينة حدية إذا كان min_samples أقل في حين أن العينات التي لا تحوي دوائرها عينات تعتبر ضوضاء.
يتم استخدامه عبر الموديول sklearn.cluster.
استدعاء المكتبات:

 from sklearn.cluster import DBSCAN

في البداية قمنا باستدعاء المكتبة التي يوجد فيها هذا الموديل.
الشكل العام للموديل:

DB=DBSCAN(eps=0.5, min_samples=5, algorithm='auto', p=None, n_jobs=None)

الوسيط  الأول eps هو اختصار ل epsilon  أكبر مسافة بين عينتين من البيانات.
الوسيط الثاني min_samples أقل عدد من العينات لتحديد فيما إذا كانت العينات أساسية أو حدية أو ضوضاء.
الوسيط الثالث algorithm نوع الخوارزمية الذي يستخدمها NearestNeighbors لحساب أقرب جار وحساب المسافات بين العينات  وهي ‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’ ولكن ينصح باعتماد auto لكي يتم اختيار أفضل خوارزمية. 
الوسيط الرابع  p  الطاقة لمقياس مينكوفسكي حيث عندما تساوي 1 يكون حساب المسافة عن طريق قانون منهاتن للمسافات وعندما تساوي 2 يتم الحساب عن طريق المسافة الإقليدية وفي الحالة الافتراضية يتم استخدام مينكوفسكي.
الوسيط الخامس  n_jobs عدد المعالجات التي تعمل بالتوازي وبتالي كلما زاد العدد زاد التسريع ,يوضع -1 للدلاله على عمل كامل المعالجات
طبعا قمت بشرح الشكل العام للموديل ولكن عن طريقة استخدامه سهل جدا فقط بعد أن تقوم بتقسيم الداتا إلى X_train,X_test  تسطيع كتابة الأتي لعملية التدريب.
الشكل العام للموديل:

DB=DBSCAN(eps=0.5, min_samples=5,algorithm='auto', p=None, n_jobs=None)
DB.fit(X_train)

حيث الدالة fit يوجد ضمنها جميع العمليات الداخلية لعملية التدريب  .
يوجد دالة أخرى تستخدم لغرض التنبؤ كالآتي:
نستطيع فيها حساب قيم التقسيم على التدريب والاختبار عن طريق التابع fit_predict  ويكون وفق الشكل:

y_pred_train = DB.fit_predict(X_train)
y_pred_test = DB.fit_predict(X_test)
print('DB Train data are : ' ,y_pred_train)
print('DB Test data are : ' ,y_pred_test)

لنأخذ مثال يوضح الموديل:

# استدعاء المكتبات
from sklearn.cluster import DBSCAN 
import numpy as np
# تعين داتا دخل مزيفة
X = np.array([[50, 3], [4, 5], [25, 30],
              [4, 1], [2, 7], [2, 8]])
# بناء الموديل
DB= DBSCAN(eps=3, min_samples=2)
# طباعة تصنيف العينه
DB.fit_predict([[1,2]])

 

  • 1
نشر

لابد أنك تعلم ان من تقنيات تعلم الاَلة التجميع clustering و هو المستخدم بصورة موسعة في عدد من المجالات مثل تقسيم العملاء Customer segmentation، توصيات منتجات أمازون Amazon’s recommendation system، الرابط بين هذه البيانات الضخمة هو غياب العناوين labels، وهنا تأتي خوارزميات عدة مثل K-Means و DBSCAN لتحل المشكلة بالإعتماد إما خصائص البيانات مثل كثافتها أو المسافة بينها و غيرها.

ما يميز DBSCAN عن خورازميات اخرى مثل K-Means و Hierarchical Clustering هو عجزهم عن إنشاء مجموعات تعتمد على شكل البيانات إذا قمنا بتمثيلها في مخطط أبعاد dimensional diagram.

db7-1.png

بالنظر للصورة أعلاه ترى كيف تقوم الخوارزميات بتقسيم البيانات إلى مجموعات مختلفة، و الأن لنرى كيف تقوم خوارزمية DBSCAN بتقسيم البيانات.

db6-e1584577503359.png

لاحظ أن الخوارزمية أخذت في الإعتبار القيم الشاذة أو المتطرفة بوضعها في مجموعة مختلفة، حيث انها لا تنتمي إلى أي من المجموعات الأخرى.

اقتباس

DBSCAN stands for Density-Based Spatial Clustering of Applications with Noise.

لعلك لاحظت من الإسم أن DBSCAN تعتمد على كثافة البيانات وهي بعكس K-Means لا تحتاج لتعريف مسبق بعدد المجموعات المراد أخذها في الإعتبار للقيام بعملية التقسيم.

 

 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...