ابوالفضل وکیلی
ابوالفضل وکیلی
خواندن ۳ دقیقه·۳ سال پیش

دسته بندی مشتریان

با ردیابی و نظارت بر مهم ترین معیارها، می‌توانیم بر تقسیم بندی مشتریان تمرکز کنیم. تقسیم بندی مشتریان فرآیند گروه بندی مشتریان با ویژگی های مشترک به گروه های همگن است. این روش به کسب‌وکارها اجازه می‌دهد تا مشتریانی را با نیازهای خاص هدف قرار دهند، از منابع آن به طور مؤثرتری استفاده کنند و تصمیمات بازاریابی استراتژیک بهتری اتخاذ کنند.

برای دستیابی به این هدف، ما از روش RFM (Recency - Frequency - Monetary) استفاده می‌کنیم تا مشتریان را بر اساس ارزش تجاری خود به گروه‌هایی تقسیم کنیم.

در مثال در نظر گرفته شده، قصد داریم بر روی مجموعه داده زیر کار کنیم. (لینک سورس کد، در قسمت انتهای نوشته مشخص شده است.)

سپس با استفاده از کوئری SQL زیر، توسط دیتابیس Sqlite، به آماده سازی مجموعه داده خود برای تحلیل می پردازیم.

Select cast(CustomerID as integer) as CustomerID, min(Cast (( JulianDay((select max(InvoiceDate) from log)) - JulianDay(InvoiceDate) ) As Integer)) as Recency, count(distinct InvoiceNo) as Frequency, sum( UnitPrice * Quantity ) as Revenue from log where Country='United Kingdom' and CustomerID IS NOT NULL group by CustomerID

خروجی:

ستون Recency نشان می دهد که یک مشتری چقدر اخیرا خرید کرده است. بنابراین، ما باید آخرین تاریخ فاکتور را برای هر مشتری استخراج کنیم و سپس تعداد روزهای غیرفعال بودن آنها را محاسبه کنیم.

در ستون Frequency، میزان مراجعه هر مشتری را بدست می آوریم.

و ستون Revenue، بیانگر میزان درآمد هر مشتری مشخص شده است.

حال با استفاده از تابع describe توصیفی از ویژگی های مهم دیتاست بدست آوریم.

به عنوان مثال، اگرچه میانگین تعداد روز از آخرین خرید (Recency) 90 روز است، اما میانه آن 49 است که به این معنی است که داده ها پراکنده شده اند.


خوشه بندی هر ویژگی

به ازای هر ویژگی مشخص شده در بالا، می‌بایست کاربران را براساس رفتارشان دسته بندی کنیم. مهم ترین نکته این مرحله دستیابی به بهترین تعداد خوشه هاست.

بهینه ترین تعداد: 3

بهینه ترین تعداد: 4

بهینه ترین تعداد: 3

پس از یافتن بهینه ترین تعداد خوشه ها، به خوشه بندی آن ها می پردازیم.

# build 3 clusters for recency and add it to dataframe kmeans = KMeans(n_clusters=3) kmeans.fit(df_customers[['Recency']]) df_customers['RecencyCluster'] = kmeans.predict(df_customers[['Recency']]) # apply order_cluster to order the clusters df_customers = order_cluster('RecencyCluster', 'Recency',df_customers,True) # build 4 clusters for frequency and add it to the customer dataframe freq_kmeans = KMeans(n_clusters=4) freq_kmeans.fit(df_customers[['Frequency']]) df_customers['FrequencyCluster'] = freq_kmeans.predict(df_customers[['Frequency']]) # apply order_cluster function df_customers = order_cluster('FrequencyCluster','Frequency',df_customers,True) # build 3 clusters for revenue and add it to the customer dataframe revenue_kmeans = KMeans(n_clusters=3) revenue_kmeans.fit(df_customers[['Revenue']]) df_customers['RevenueCluster'] = revenue_kmeans.predict(df_customers[['Revenue']]) # apply order_cluster to order the clusters df_customers = order_cluster('RevenueCluster', 'Revenue',df_customers,True)

وضعیت ویژگی ها بعد از خوشه بندی:

وضعیت Recency :

جدول بالا ویژگی های مختلف هر خوشه ای را که تولید کرده ایم نشان می دهد. مشتریان در خوشه 2 جدیدترین مشتریان با میانگین 30 روز اخیر هستند در حالی که خوشه 1 و 2 به ترتیب دارای میانگین 153 و 294 روز هستند. مشتریان در خوشه 2 در مقایسه با خوشه 1 و 0 جدیدتر هستند.


وضعیت Frequency :

جدول بالا نشان می دهد که مشتریان در خوشه 0 به طور متوسط 3 سفارش ثبت می کنند در حالی که خوشه 1، 2 و 3 به ترتیب دارای 14، 45 و 151 سفارش هستند. خوشه 3 فرکانس سفارش بالاتری دارد به این معنی که مشتریان سفارش های بیشتری را ثبت می کنند و بنابراین در مقایسه با خوشه های دیگر ارزش بیشتری دارند.


وضعیت Revenue :

جدول بالا نشان می دهد که خوشه 0 درآمد کمتری نسبت به سایر خوشه ها دارد، خوشه 2 بیشترین درآمد زایی را دارد.


تقسیم بندی RMF

اکنون که امتیاز های Recency - Frequency - Monetary را داریم، می‌توانیم یک امتیاز کلی را با استفاده از میانگین هر یک از خوشه‌ها برای هر مشتری محاسبه کنیم.

همچنین برای تحلیل بهتر جدول بالا، نمودار آن را نیز ترسیم می‌نماییم.

جدول بالا نشان می دهد که مشتریان در امتیاز کلی 4، نسبت به مشتریان در امتیاز کلی 0 با ارزش تر هستند. به منظور مطابقت با الزامات کسب و کار، ما قصد داریم امتیازها را به صورت زیر طبقه بندی کنیم:

0: ارزش کم - نقطه قرمز

1 و 2: ارزش متوسط - نقاط مشکی

3 و 4: ارزش بالا - نقاط سبز


این تحلیل می تواند به تیم مارکتینگ کمک کند تا تصمیمات مناسبی در خصوص گروه های مشتریان بگیرد. به عنوان مثال:

دسته ارزش بالا:

  • بهبود حفظ (Retention) و فرکانس

دسته ارزش متوسط:

  • بهبود حفظ و فرکانس

دسته ارزش کم:

  • افزایش فرکانس


سورس کد برنامه را می توانید از اینجا ببینید.


باتشکر از همراهیتان



دسته بندی مشتریان
instagram : @a_vakily7
شاید از این پست‌ها خوشتان بیاید