إعلاناتي كانت تستهدف الجميع… وبالتالي لم تصل لأحد: كيف استخدمتُ نماذج التجزئة (Clustering) لاكتشاف شرائح عملاء لم أكن أعرف بوجودها؟

“يا جماعة الخير، تطبيق للكل!”… أكبر كذبة كذبتها على نفسي

قبل كم سنة، كنت قاعد مع صاحبي “أبو خليل” على فنجان قهوة سادة في مكتبي الصغير. كنت شغال ليل نهار على تطبيق لإدارة المصاريف الشخصية، تطبيق بسيط و”مرتب” زي ما بنحكي. لما صار جاهز، الحماس أخذني، وعملت حملة إعلانية بسيطة على فيسبوك. شو كانت رسالة الإعلان؟ “تطبيق جديد لإدارة مصاريفك بسهولة… نزّله الآن!”.

الاستهداف؟ كل حدا عمره بين 18 و 65، مهتم بالتكنولوجيا والمال. يعني بالعربي، كنت بستهدف الكرة الأرضية تقريبًا. كنت مفكر إنه تطبيقي مفيد للكل، وبالتالي الكل لازم يشوف إعلاني. بعد أسبوع، النتائج كانت… “بتخزي”. صرفت ميزانية محترمة، وعدد التحميلات كان على قد الأصابع. حسيت حالي زي اللي “برمي فشك بالهوا”، بصرف مصاري بدون ما أعرف وين بتروح.

قعدت مع حالي، محبط، وبراجع الأرقام. أبو خليل شافني “مطنقر” وسألني: “مالك يا زلمة؟”. شرحتله القصة. ضحك وقلي: “يا أبو عمر، لما تحكي مع الكل، أنت فعليًا ما بتحكي مع حدا. مين هما الناس اللي جد بدهم تطبيقك؟ الطالب اللي بحوّش حق سندويشة الفلافل؟ ولا الموظف اللي بستنى الراتب؟ ولا رجل الأعمال اللي عنده أسهم واستثمارات؟”.

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

ما هي تجزئة العملاء (Customer Segmentation) وليش هي مهمة؟

قبل ما ندخل في التفاصيل التقنية، خلينا نبسّط المفهوم. تجزئة العملاء هي ببساطة تقسيم قاعدة عملائك الكبيرة إلى مجموعات أصغر متشابهة. بدل ما تشوفهم ككتلة واحدة، بتصير تشوفهم كقبائل مختلفة، كل قبيلة إلها عاداتها، اهتماماتها، ولغتها الخاصة.

التجزئة التقليدية بتعتمد على:

  • الديموغرافيا: العمر، الجنس، الموقع الجغرافي.
  • السلوك: تاريخ الشراء، معدل الاستخدام.

هاي الطريقة منيحة، بس سطحية شوي. الذكاء الاصطناعي، وتحديدًا خوارزميات التجميع أو التجزئة (Clustering)، بتسمحلنا نروح أعمق من هيك. هي بتقدر تلاقي أنماط وعلاقات بين عشرات المتغيرات، أنماط مستحيل عين الإنسان تلاحظها.

فكر فيها هيك: الخوارزمية بتعمل زي اللي بفرز كومة كبيرة من البقوليات المشكّلة (عدس، حمص، فاصوليا)، وبتحط كل نوع في صحن لحال، بدون ما حدا يكون قايللها شو أسماء هاي البقوليات أصلًا. هي بتتعرف على التشابهات بنفسها.

K-Means: الخوارزمية السحرية لفرز العملاء

أشهر وأبسط خوارزمية للتجزئة هي K-Means. فكرتها عبقرية وبسيطة، وبتتلخص في خطوات قليلة:

  1. اختيار K: أنت بتقرر مسبقًا كم مجموعة (عنقود أو Cluster) بدك تلاقي. خلينا نقول بدنا نلاقي 4 مجموعات (K=4).
  2. تحديد المراكز: الخوارزمية بتختار 4 نقاط عشوائية في فضاء البيانات تبعك وبتسميهم “مراكز” (Centroids).
  3. التوزيع: بتقيس المسافة بين كل عميل (نقطة بيانات) وبين كل مركز من المراكز الأربعة، وبتنسب كل عميل للمركز الأقرب إله.
  4. التحديث: بعد ما كل العملاء توزعوا على المجموعات، الخوارزمية بتحسب نقطة الوسط الحقيقية لكل مجموعة، وبتنقل “المركز” لهالنقطة الجديدة.
  5. التكرار: بتعيد الخطوتين 3 و 4 مرة ورا مرة، وفي كل مرة المراكز بتتحرك شوي والمجموعات بتصير أدق، لحد ما المراكز تثبت في مكانها وما تتغير. وقتها بنعرف إنه لقينا أفضل توزيع ممكن.

طيب يا أبو عمر، ورجينا شغل عملي!

أكيد! الحكي النظري حلو، بس “الشغل نظيف”. خلينا نشوف كيف طبقت هاد الحكي على بيانات تطبيقي باستخدام لغة بايثون والمكتبات المشهورة زي `pandas` و `scikit-learn`.

الخطوة الأولى: تجهيز البيانات

أول إشي، جمعت البيانات اللي عندي في ملف واحد. كانت بتحتوي على معلومات زي هيك لكل مستخدم:

  • `age`: العمر
  • `days_since_signup`: عدد الأيام منذ التسجيل
  • `num_transactions`: إجمالي عدد العمليات المسجلة
  • `avg_transaction_value`: متوسط قيمة العملية الواحدة
  • `num_categories_used`: عدد الفئات المختلفة المستخدمة (أكل، فواتير، تسوق…)

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# تحميل البيانات (هذا مثال، بياناتك ستكون مختلفة)
# df = pd.read_csv('user_data.csv')
data = {
    'user_id': range(1, 101),
    'age': [22, 45, 33, 25, 50, 19, 28, 60, 35, 41] * 10,
    'days_since_signup': [10, 365, 180, 50, 300, 5, 90, 400, 200, 250] * 10,
    'num_transactions': [15, 100, 60, 20, 120, 5, 40, 80, 70, 90] * 10,
    'avg_transaction_value': [10, 150, 70, 15, 200, 5, 50, 120, 80, 180] * 10,
    'num_categories_used': [3, 8, 5, 3, 9, 2, 4, 7, 6, 8] * 10
}
df = pd.DataFrame(data)

# خلينا نختار الميزات اللي بدنا نحللها
features = df[['age', 'days_since_signup', 'num_transactions', 'avg_transaction_value', 'num_categories_used']]

# نصيحة من أبو عمر: البيانات لازم تكون "نظيفة"
# تأكد من معالجة القيم المفقودة (Missing Values) قبل أي تحليل
features = features.dropna()

# توحيد المقاييس (Scaling) - خطوة جوهرية!
# ليش؟ لأنه العمر (مثلا 50) قيمته أكبر بكثير من عدد الفئات (مثلا 5)
# وهذا ممكن يخلي الخوارزمية تنحاز للمتغيرات ذات القيم الكبيرة
scaler = StandardScaler()
scaled_features = scaler.fit_transform(features)

الخطوة الثانية: إيجاد العدد الأمثل للمجموعات (K)

كيف أعرف كم مجموعة أختار؟ 3 ولا 4 ولا 10؟ هون بنستخدم تقنية اسمها “طريقة الكوع” (Elbow Method). الفكرة إننا بنجرّب الخوارزمية مع عدد مجموعات مختلف (من 1 لـ 10 مثلًا) وفي كل مرة بنحسب إشي اسمه “مجموع مربع المسافات داخل العنقود” (WCSS). لما نرسم هاي القيم، رح نلاحظ إنه الرسم البياني بشبه شكل الكوع أو المرفق. النقطة اللي عندها الرسم “بنكسر” هي غالبًا أفضل قيمة لـ K.


wcss = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)
    kmeans.fit(scaled_features)
    wcss.append(kmeans.inertia_)

# رسم بياني لتوضيح طريقة الكوع
plt.plot(range(1, 11), wcss)
plt.title('طريقة الكوع (Elbow Method)')
plt.xlabel('عدد المجموعات (K)')
plt.ylabel('WCSS')
plt.show()

بالنظر للرسم البياني (اللي رح يظهر عندك)، رح تلاقي نقطة واضحة بتشبه الكوع. في حالتي، كانت عند K=4. هذا معناه إنه بياناتي بتنقسم بشكل طبيعي لأربع مجموعات رئيسية.

الخطوة الثالثة: تطبيق الخوارزمية وتحليل النتائج

الآن بعد ما عرفنا إنه K=4 هو الرقم السحري، بنرجع نطبّق الخوارزمية مرة أخيرة بهذا الرقم وبنحلل المجموعات اللي طلعت معنا.


# تطبيق الخوارزمية مع أفضل قيمة لـ K
kmeans = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=0)
clusters = kmeans.fit_predict(scaled_features)

# إضافة رقم المجموعة لكل مستخدم في الداتا فريم الأصلية
df['cluster'] = clusters

# الآن، الجزء الممتع: تحليل خصائص كل مجموعة
cluster_analysis = df.groupby('cluster').mean()
print(cluster_analysis)

لما شغّلت الكود وطلعت النتائج، قعدت أتأمل الأرقام. كانت زي اللي بفك شيفرة سرية. الأرقام بدأت تحكيلي قصة، وظهرت عندي 4 شخصيات واضحة لعملائي:

  • المجموعة 0: “الطلاب المقتصدون” 👨‍🎓

    خصائصهم: أصغر عمرًا، عدد عمليات قليل بقيم منخفضة جدًا، يستخدمون فئات قليلة (غالبًا أكل ومواصلات). هؤلاء هم المستخدمون الجدد الذين يحاولون تتبع مصاريفهم اليومية البسيطة.

  • المجموعة 1: “المحترفون المشغولون” 💼

    خصائصهم: أكبر عمرًا، نشاط عالي جدًا على التطبيق (عدد عمليات كبير)، متوسط قيمة العملية مرتفع، يستخدمون فئات متنوعة تشمل السفر، الاستثمار، والفواتير الكبيرة. هؤلاء هم “power users” الذين يعتمدون على التطبيق لإدارة حياتهم المالية المعقدة.

  • المجموعة 2: “مدبّرو ميزانية العائلة” 👨‍👩‍👧‍👦

    خصائصهم: متوسطو العمر، عدد عمليات منتظم ومتوسط، يركزون على فئات مثل “السوبر ماركت”، “فواتير الكهرباء والماء”، و”مصاريف الأولاد”. هدفهم هو ضبط ميزانية الأسرة الشهرية.

  • المجموعة 3: “المستكشفون المترددون” 🤔

    خصائصهم: سجلوا منذ فترة طويلة لكن استخدامهم قليل جدًا (low transactions). يبدو أنهم نزّلوا التطبيق بدافع الفضول لكنهم لم يلتزموا باستخدامه.

من التحليل إلى التسويق الذكي: كيف تغير كل شيء؟

هذا التحليل كان نقطة التحول. بدل الإعلان اليتيم العام اللي كنت عامله، صرت أجهز 4 حملات مختلفة، كل حملة مصممة “تفصيل” لشريحة معينة:

  1. للطلاب المقتصدين: عملت إعلانات على انستغرام وتيك توك بصور شبابية ورسالة مثل: “حوّش حق فنجان القهوة الجاي! تطبيقنا يساعدك تعرف وين بتروح مصاريفك الصغيرة”.
  2. للمحترفين المشغولين: استهدفتهم على LinkedIn بإعلانات احترافية ورسالة مثل: “أدر استثماراتك ومصاريف عملك من مكان واحد. تحليلات ذكية لقرارات أذكى”. حتى إني فكرت أضيف ميزات مدفوعة خاصة لهم.
  3. لمدبّري ميزانية العائلة: إعلانات على فيسبوك بصور عائلية ورسالة مثل: “التخطيط لميزانية العائلة صار أسهل. راقب فواتيرك ومصاريف السوبر ماركت بلمسة زر”.
  4. للمستكشفين المترددين: بدل ما أصرف عليهم فلوس إعلانات، جهزت حملة بريد إلكتروني بسيطة لإعادة تفعيلهم، فيها فيديو قصير يشرح أسهل طريقة للبدء باستخدام التطبيق.

النتيجة؟ تكلفة اكتساب العميل (CAC) انخفضت بشكل كبير، ومعدل التحويل (Conversion Rate) ارتفع بشكل جنوني. الأهم من كل هاد، صرت أفهم عملائي بجد، وأطور التطبيق بناءً على احتياجاتهم الحقيقية، مش على تخميناتي.

خلاصة ونصائح من قلب التجربة 🚀

يا صديقي المبرمج، المسوّق، أو صاحب المشروع، إذا كنت لا تزال “ترمي فشك بالهوا” وتستهدف الجميع، اسمحلي أقلّك إنك بتهدر وقتك ومصاريك.

  • ابدأ بالبيانات اللي عندك: مهما كانت قليلة أو فوضوية، هي نقطة البداية. لا تنتظر البيانات المثالية.
  • الجودة أهم من الكمية: نظّف بياناتك وجهّزها جيدًا. عشر دقائق إضافية في تنظيف البيانات توفر عليك ساعات من التحليل الخاطئ.
  • الأداة وسيلة وليست غاية: الهدف ليس تطبيق خوارزمية معقدة، بل استخراج رؤى (insights) قابلة للتنفيذ. التحليل الحقيقي يبدأ بعد أن يعطيك الكود النتائج.
  • التجزئة عملية مستمرة: سلوك العملاء يتغير. أعد هذا التحليل كل 3-6 أشهر لتبقى على اطلاع دائم بتغيرات “قبائل” عملائك.

الذكاء الاصطناعي ليس مجرد كلمة طنّانة، بل هو منظار قوي يريك ما لا تراه بالعين المجردة. استخدمه لتفهم عملائك بعمق، وخاطبهم بلغتهم، وسترى كيف أن التسويق الدقيق والمبني على البيانات هو أقصر طريق للنجاح.

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

التوسع والأداء العالي والأحمال

قاعدة بياناتي كانت تتوسل للرحمة: كيف أنقذتني استراتيجية التخزين المؤقت (Caching) من الانهيار؟

أتذكر ذلك اليوم جيدًا، قاعدة البيانات تكاد تنهار تحت ضغط الطلبات المتزايدة. في هذه المقالة، أشارككم قصة حقيقية وكيف كانت استراتيجية التخزين المؤقت، وتحديداً Redis،...

11 مارس، 2026 قراءة المزيد
التكنلوجيا المالية Fintech

رفضنا عملاء حقيقيين وقبلنا محتالين: كيف أصلحتُ نظام ‘اعرف عميلك’ (KYC) الفاشل بالذكاء الاصطناعي

أتذكر جيدًا ذلك الاجتماع الكارثي الذي كشف أن نظام التحقق من الهوية (KYC) اليدوي لدينا كان يرفض العملاء الصادقين ويفتح الأبواب للمحتالين. في هذه المقالة،...

11 مارس، 2026 قراءة المزيد
​معمارية البرمجيات

كل خدمة تنادي الأخرى مباشرة… حتى انهار كل شيء: كيف أنقذتني المعمارية الموجهة بالأحداث (EDA) من كابوس الاقتران المحكم؟

أشارككم قصة حقيقية عن ليلة كاد فيها نظامنا أن ينهار بالكامل بسبب الاقتران المحكم بين الخدمات. سأشرح لكم كيف كانت المعمارية الموجهة بالأحداث (EDA) هي...

9 مارس، 2026 قراءة المزيد
البودكاست