مقدمه
در علم داده، تحلیل خوشهای (Cluster Analysis) یکی از ابزارهای بنیادی برای کاوش در دادهها و دستهبندی نقاط داده بر اساس شباهت یا نزدیکی آنها به کار گرفته میشود. هدف از این فرآیند، یافتن گروههای طبیعی (خوشهها) در دادهها بدون نیاز به برچسب یا دستهبندی از پیش تعیین شده است.
شاخصهای شباهت نقش کلیدی در تحلیل خوشهای ایفا میکنند، زیرا برای سنجش میزان شباهت یا نزدیکی بین نقاط داده مورد استفاده قرار میگیرند. انتخاب شاخص شباهت مناسب به ماهیت دادهها و هدف از خوشهبندی بستگی دارد.
مفاهیم کلیدی در تحلیل خوشهای با شاخصهای شباهت
- شاخص شباهت: معیاری برای سنجش میزان شباهت یا نزدیکی بین دو نقطه داده.
- ماتریس شباهت: ماتریسی که میزان شباهت بین هر دو نقطه داده را نشان میدهد.
- خوشه: دستهای از نقاط داده که به لحاظ مشخصهها با یکدیگر شباهت دارند.
- مرکز خوشه: نماینده یا نقطه مرکزی یک خوشه خاص.
- فاصله: معیاری برای سنجش میزان شباهت یا نزدیکی بین دو نقطه داده.
- الگوریتم خوشهبندی: روشی برای دستهبندی نقاط داده به خوشههای مجزا.
دستهبندی شاخصهای شباهت
شاخصهای شباهت مختلفی برای سنجش میزان شباهت بین نقاط داده وجود دارد که به طور کلی به دو دسته اصلی تقسیم میشوند:
- شاخصهای مبتنی بر فاصله: این شاخصها از فاصله بین دو نقطه داده برای سنجش میزان شباهت آنها استفاده میکنند.
- فاصله اقلیدسی: متداولترین شاخص مبتنی بر فاصله است که فاصله مستقیم بین دو نقطه را در فضای n-بعدی محاسبه میکند.
- فاصله منهتن: فاصله بین دو نقطه را به عنوان مجموع مقادیر مطلق اختلافات آنها در هر بعد محاسبه میکند.
- شاخصهای مبتنی بر همبستگی: این شاخصها از میزان همبستگی بین دو نقطه داده برای سنجش میزان شباهت آنها استفاده میکنند.
- ضریب همبستگی پیرسون: متداولترین شاخص مبتنی بر همبستگی است که میزان همبستگی خطی بین دو متغیر را اندازهگیری میکند.
- ضریب همبستگی اسپیرمن: مشابه ضریب همبستگی پیرسون است، اما به جای مقادیر واقعی، از رتبهبندی مقادیر استفاده میکند.
انتخاب شاخص شباهت مناسب
انتخاب شاخص شباهت مناسب به ماهیت دادهها و هدف از خوشهبندی بستگی دارد.
- برای دادههای عددی: میتوان از شاخصهای مبتنی بر فاصله مانند فاصله اقلیدسی یا فاصله منهتن استفاده کرد.
- برای دادههای دستهبندی شده: میتوان از شاخصهای مبتنی بر همبستگی مانند ضریب همبستگی پیرسون یا ضریب همبستگی اسپیرمن استفاده کرد.
مراحل کلی تحلیل خوشهای با شاخصهای شباهت
مراحل کلی تحلیل خوشهای با شاخصهای شباهت به شرح زیر است:
- آمادهسازی دادهها: در این مرحله، دادهها پاکسازی شده، مقادیر گمشده حذف و در صورت نیاز استانداردسازی میشوند.
- انتخاب شاخص شباهت: با توجه به نوع داده و هدف از خوشهبندی، شاخص شباهت مناسب انتخاب میشود.
- محاسبه ماتریس شباهت: ماتریسی که میزان شباهت بین هر دو نقطه داده را نشان میدهد، محاسبه میشود.
- انتخاب الگوریتم خوشهبندی: با توجه به نوع داده و هدف از خوشهبندی، الگوریتم خوشهبندی مناسب انتخاب میشود.
- اجرای الگوریتم: الگوریتم انتخاب شده بر روی ماتریس شباهت اجرا شده و خوشهها ایجاد میشوند.
- ارزیابی نتایج: کیفیت خوشهبندی با استفاده از معیارهای مختلف مانند شاخص سیلوئت یا نسبت قطر خوشه ارزیابی میشود.
- تفسیر نتایج: خوشهها تفسیر شده و یافتههای حاصل از خوشهبندی برای حل مسئله یا تصمیمگیری مورد استفاده قرار میگیرند.
مثال: خوشهبندی سبدهای خرید با استفاده از شاخصهای شباهت در Python
فرض کنید میخواهیم سبدهای خرید مشتریان یک فروشگاه اینترنتی را بر اساس محتوای آنها به خوشههای مجزا دستهبندی کنیم. دادههای ما شامل موارد زیر است:
- شناسه مشتری: یک شناسه منحصر به فرد برای هر مشتری
- محصولات: لیست محصولات خریداری شده توسط هر مشتری
مراحل:
1. کتابخانهها را وارد کنید:
import pandas as pd
from sklearn.metrics import pairwise_distances
from sklearn.cluster import KMeans
2. دادهها را بارگیری کنید:
data = pd.read_csv("shopping_carts.csv")
3. دادهها را آماده کنید:
# تبدیل لیست محصولات به رشته
data["products_str"] = data["products"].apply(lambda x: ", ".join(x))
# تبدیل رشته محصولات به لیست کد محصول
data["product_codes"] = data["products_str"].apply(lambda x: [int(i) for i in x.split(", ")])
4. محاسبه ماتریس شباهت:
# محاسبه ماتریس فاصله جاکارد بین سبدهای خرید
distance_matrix = pairwise_distances(data["product_codes"], metric="jaccard")
# تبدیل ماتریس فاصله به ماتریس شباهت
similarity_matrix = 1 - distance_matrix
5. انتخاب الگوریتم و آموزش:
# انتخاب تعداد خوشهها (در این مثال 3 خوشه انتخاب میکنیم)
n_clusters = 3
# ایجاد مدل KMeans
kmeans = KMeans(n_clusters=n_clusters)
# آموزش مدل با استفاده از ماتریس شباهت
kmeans.fit(similarity_matrix)
6. پیشبینی خوشهها برای هر سبد خرید:
# اضافه کردن برچسب خوشه به DataFrame اصلی
data["cluster"] = kmeans.labels_
7. تحلیل نتایج:
- بررسی توزیع سبدهای خرید در هر خوشه:
print(data['cluster'].value_counts())
- بررسی محصولات رایج در هر خوشه:
for cluster_id in range(n_clusters):
cluster_data = data[data["cluster"] == cluster_id]
most_common_products = cluster_data["product_codes"].value_counts().head(10)
print(f"Cluster {cluster_id}: {most_common_products}")
تفسیر نتایج:
با تحلیل نتایج میتوان ویژگیهای مشترک سبدهای خرید در هر خوشه را شناسایی کرد.
برای مثال، خوشه 1 ممکن است شامل سبدهای خریدی باشد که شامل محصولات الکترونیکی و لباسهای مردانه هستند، در حالی که خوشه 2 شامل سبدهای خریدی باشد که شامل لوازم آرایشی و لباسهای زنانه هستند.
این اطلاعات میتواند برای بازاریابی هدفمند، توسعه محصولات جدید و ارائه خدمات بهتر به مشتریان مورد استفاده قرار گیرد.
نکات:
- تعداد بهینه خوشهها به ماهیت دادهها و هدف از خوشهبندی بستگی دارد.
- میتوان از روشهای مختلفی مانند elbow method یا silhouette analysis برای تعیین تعداد مناسب خوشهها استفاده کرد.
- کیفیت خوشهبندی را میتوان با استفاده از معیارهای مختلفی مانند شاخص سیلوئت یا نسبت قطر خوشه ارزیابی کرد.