Menu
CoddyTech
flag Ar iconالعربيةdown icon

مقدمة إلى K-Means

الدرس 9 من 19 في دورة مقدمة في تعلم الآلة على Coddy.

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

Incheol، CC BY-SA 4.0، عبر ويكيميديا كومنز

كيف تعمل خوارزمية K-Means؟

تتبع الخوارزمية إجراءً تكرارياً بسيطاً وفعالاً لتقسيم مجموعة بيانات إلى k من المجموعات.

  1. تهيئة المراكز (Centroids): أولاً، اختر k من النقاط كمراكز أولية من مجموعة البيانات. يمكن اختيار هذه النقاط عشوائياً أو بناءً على استراتيجية محددة.
  2. تعيين المجموعات: لكل نقطة في مجموعة البيانات، ابحث عن أقرب مركز (باستخدام مقاييس المسافة مثل المسافة الإقليدية - Euclidean distance) وقم بتعيين النقطة لتلك المجموعة.
  3. تحديث المراكز: بمجرد تعيين جميع النقاط للمجموعات، أعد حساب المراكز عن طريق أخذ متوسط جميع النقاط في كل مجموعة.
  4. تكرار الخطوتين 2 و3: يتم تكرار الخطوات المذكورة أعلاه حتى لا تتغير المراكز بشكل ملحوظ. هذا يعني أن الخوارزمية قد تقاربت (converged)، وأصبحت المجموعات مستقرة.
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

يعد تحديد العدد الأمثل للمجموعات، k، خطوة حاسمة. هناك طرق مختلفة لذلك، وتعتبر طريقة الكوع (Elbow Method) واحدة من أكثر الطرق شيوعاً.

تتضمن هذه التقنية تشغيل K-means بشكل متكرر من k=1 إلى k=n. لكل قيمة من قيم k، نقوم بحساب قيمة مجموع المربعات داخل المجموعة (WCSS).

لكل مجموعة مركز (centroid)، و WCSS هو مجموع كل المسافات من المركز مربعة.

قم بإنشاء دالة تسمى wcss تستقبل قائمة من نقاط البيانات (من نفس المجموعة) وتعيد قيمة wcss للمجموعة. اتبع الخطوات التالية:

  • أوجد المركز (centroid) - المركز هو نقطة تمثل متوسط الموقع لجميع النقاط في المجموعة: 
    Centroid formula
    على سبيل المثال، إليك قائمة بنقطتين ثلاثيتي الأبعاد: (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 عبر الإنترنت