MyMisPal
→ دروس الذكاء الاصطناعي العملي
الدرس 7 من 11

تقسيم العملاء لشرائح: التجميع k-means

قسم التسويق في نخلة يرسل نفس العرض لكل العملاء، والنتيجة ضعيفة. الأفضل نقسمهم شرائح متشابهة ونخاطب كل شريحة بطريقتها. المشكلة: ما عندنا إجابات جاهزة (ما فيه عمود «الشريحة»). هنا يجي التجميع.

k-means أشهر خوارزمية تجميع. تختار عدد الشرائح k، وبعدها تكرر خطوتين لين تثبت: (1) التوزيع: كل عميل يروح لأقرب مركز. (2) التحديث: كل مركز ينتقل لمتوسط عملائه. جرّبها خطوة بخطوة:

0100200300024681012زيارات بالشهرمتوسط السلة (ريال)

المراكز (✚) في أماكن عشوائية. اضغط «وزّع العملاء».

النموذج ما يعطيك أسماء للشرائح؛ أنت كمحلل تفسرها: «زوار كثير بسلة صغيرة» = عملاء البقالات اليومية، «زيارات قليلة بسلة كبيرة» = مشتريات المناسبات والهدايا. وبعدها يجي القرار: عرض كميات للأولى، وتغليف هدايا للثانية.

PYTHON
# customers: [visits per month, basket in tens of SAR]
customers = [[2, 4], [3, 5], [2, 5], [9, 6], [10, 4], [8, 7], [4, 21], [3, 19], [5, 23]]
centers = [[2, 5], [9, 5], [4, 20]]

def nearest(p):
    best, best_d = 0, None
    for i, c in enumerate(centers):
        d = ((p[0] - c[0]) ** 2 + (p[1] - c[1]) ** 2) ** 0.5
        if best_d is None or d < best_d:
            best, best_d = i, d
    return best

for p in customers:
    print(p, "-> segment", nearest(p) + 1)
انتبهفي التسويق تشوف كثير تحليل RFM: الحداثة (Recency: متى آخر شراء)، والتكرار (Frequency)، والقيمة (Monetary). هذي الثلاث خصائص ممتازة لـ k-means، وتقدر تجهزها بـ SQL من جدول الطلبات.

تمارين

تمرين 1 · ترتيب

رتّب خطوات k-means:

  1. 1اختر عدد الشرائح k وحط مراكز مبدئية
  2. 2وزّع كل عميل على أقرب مركز
  3. 3كرر التوزيع والتحديث لين ما يتغير شي
  4. 4فسّر الشرائح وحوّلها لقرارات
  5. 5انقل كل مركز لمتوسط عملائه
تمرين 2 · اختيار

وش الفرق الأساسي بين التجميع والتصنيف؟

تمرين 3 · Python · يتصحح بالتشغيل

عندك مراكز 3 شرائح. اكتب دالة nearest(p) ترجع رقم أقرب مركز (0 أو 1 أو 2) للعميل p.

لقيت خطأ في هذي الصفحة، أو عندك فكرة تحسّن الموقع؟