مقدمة إلى K-Means
الدرس 9 من 19 في دورة مقدمة في تعلم الآلة على Coddy.
تعد خوارزمية K-means واحدة من أبسط خوارزميات التجميع (clustering) وأكثرها استخداماً. تهدف إلى تقسيم n من الملاحظات إلى k من المجموعات (clusters) حيث تنتمي كل ملاحظة إلى المجموعة ذات المتوسط (المركز - centroid) الأقرب، والذي يعمل كنموذج أولي للمجموعة. لنفترض أن لديك مجموعة من الفواكه المختلفة وتريد فرزها في سلال بناءً على نوعها، ولكن ليس لديك ملصقات. تساعدك K-means على القيام بذلك تماماً ولكن باستخدام نقاط البيانات بدلاً من الفاكهة!

Incheol، CC BY-SA 4.0، عبر ويكيميديا كومنز
كيف تعمل خوارزمية K-Means؟
تتبع الخوارزمية إجراءً تكرارياً بسيطاً وفعالاً لتقسيم مجموعة بيانات إلى k من المجموعات.
- تهيئة المراكز (Centroids): أولاً، اختر
kمن النقاط كمراكز أولية من مجموعة البيانات. يمكن اختيار هذه النقاط عشوائياً أو بناءً على استراتيجية محددة. - تعيين المجموعات: لكل نقطة في مجموعة البيانات، ابحث عن أقرب مركز (باستخدام مقاييس المسافة مثل المسافة الإقليدية - Euclidean distance) وقم بتعيين النقطة لتلك المجموعة.
- تحديث المراكز: بمجرد تعيين جميع النقاط للمجموعات، أعد حساب المراكز عن طريق أخذ متوسط جميع النقاط في كل مجموعة.
- تكرار الخطوتين 2 و3: يتم تكرار الخطوات المذكورة أعلاه حتى لا تتغير المراكز بشكل ملحوظ. هذا يعني أن الخوارزمية قد تقاربت (converged)، وأصبحت المجموعات مستقرة.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهليعد تحديد العدد الأمثل للمجموعات، k، خطوة حاسمة. هناك طرق مختلفة لذلك، وتعتبر طريقة الكوع (Elbow Method) واحدة من أكثر الطرق شيوعاً.
تتضمن هذه التقنية تشغيل K-means بشكل متكرر من k=1 إلى k=n. لكل قيمة من قيم k، نقوم بحساب قيمة مجموع المربعات داخل المجموعة (WCSS).
لكل مجموعة مركز (centroid)، و WCSS هو مجموع كل المسافات من المركز مربعة.
قم بإنشاء دالة تسمى wcss تستقبل قائمة من نقاط البيانات (من نفس المجموعة) وتعيد قيمة wcss للمجموعة. اتبع الخطوات التالية:
أوجد المركز (centroid) - المركز هو نقطة تمثل متوسط الموقع لجميع النقاط في المجموعة:

على سبيل المثال، إليك قائمة بنقطتين ثلاثيتي الأبعاد:(1, 2 ,3), (4, 5, 6). المركز هو:(1 + 4) / 2 = 2.5, (2 + 5) / 2 = 3.5, (3 + 6) / 2 = 4.5, >> (2.5, 3.5, 4.5)- احسب المسافة الإقليدية (Euclidian distance) بين كل نقطة والمركز
- أعد مجموع كل المسافات مقسوماً على عدد النقاط
جرّب بنفسك
def euclidian_distance(point_a, point_b):
return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
def wcss(points):
# اكتب الكود هناجميع دروس مقدمة في تعلم الآلة
تدرّب بنفسك: مترجم Python عبر الإنترنت