الگوریتم خوشه بندی سلسله مراتبی پایتون!

گره منبع: 1055669

این مقاله به عنوان بخشی از بلاگاتون علم داده

معرفی

در این مقاله، رویکرد متفاوتی برای خوشه‌بندی K Means به نام خوشه‌بندی سلسله مراتبی بررسی می‌کنیم. در مقایسه با K Means یا K Mode، خوشه‌بندی سلسله مراتبی الگوریتم زیربنایی متفاوتی برای نحوه عملکرد مکانیسم خوشه‌بندی دارد. خوشه‌بندی سلسله مراتبی از تکنیک‌های تجمعی یا تقسیمی استفاده می‌کند، در حالی که K Means از ترکیب فاصله مرکز و اقلیدسی برای تشکیل خوشه‌ها استفاده می‌کند. دندروگرام ها را می توان برای تجسم خوشه ها در خوشه بندی سلسله مراتبی استفاده کرد که می تواند به تفسیر بهتر نتایج از طریق طبقه بندی های معنادار کمک کند. هنگام ساخت دندروگرام لازم نیست تعداد خوشه ها را مشخص کنیم.

در اینجا ما از پایتون برای توضیح مدل خوشه‌بندی سلسله مراتبی استفاده می‌کنیم. ما اطلاعات 200 مشتری مرکز خرید را در مجموعه داده خود داریم. شناسه مشتری، ژانر، سن، درآمد سالانه و امتیاز هزینه هر مشتری در چارچوب داده گنجانده شده است. مقدار محاسبه شده برای امتیازات هزینه هر یک از مشتریان آنها بر اساس چندین معیار است، مانند درآمد آنها، تعداد دفعات بازدید از مرکز خرید در هفته و مقدار پولی که در یک سال خرج کرده اند. این امتیاز از 1 تا 100 متغیر است. چون ما پاسخ ها را نمی دانیم، یک مشکل تجاری به یک مشکل خوشه بندی تبدیل می شود. دسته بندی نهایی داده ها برای ما ناشناخته است. در نتیجه، هدف ما کشف برخی از خوشه‌های مشتریان ناشناخته قبلی است.

اما ابتدا به چند اصطلاح مهم در خوشه بندی سلسله مراتبی نگاه می کنیم.

اصطلاحات مهم در خوشه بندی سلسله مراتبی

روش های پیوند

اگر (a) مشاهدات اصلی a[0]،…,a[|a|1] در خوشه (a) و (b) اشیاء اصلی b[0]،…،b[|b|1] در خوشه وجود داشته باشد ( ب) سپس باید فاصله بین دو خوشه (الف) و (ب) را محاسبه کنیم تا آنها را با هم ترکیب کنیم (ب). فرض کنید یک نقطه (d) وجود دارد که به هیچ یک از خوشه ها اختصاص داده نشده است. ما باید بفهمیم که خوشه (a) چقدر از خوشه (d) و خوشه (b) از خوشه (d) فاصله دارد.

در حال حاضر خوشه‌ها معمولاً حاوی چندین نقطه هستند که نیاز به روش متفاوتی برای محاسبه ماتریس فاصله دارد. روشی که به وسیله آن فاصله بین خوشه ها یا فاصله نقطه به خوشه محاسبه می شود توسط پیوند تعیین می شود. در زیر برخی از متداول ترین مکانیسم های پیوند استفاده می شود:

پیوند واحد - فواصل بین مشابه ترین اعضا برای هر جفت خوشه محاسبه می شود و سپس خوشه ها بر اساس کوتاه ترین فاصله ادغام می شوند.

پیوند متوسط - فاصله بین همه اعضای یک خوشه و همه اعضای یک خوشه دیگر محاسبه می شود. پس از آن، از میانگین این فواصل برای تعیین اینکه کدام خوشه ها ادغام خواهند شد، استفاده می شود.

پیوند کامل - برای هر جفت خوشه، فواصل بین غیر مشابه ترین اعضا محاسبه می شود و سپس خوشه ها بر اساس کوتاه ترین فاصله ادغام می شوند.

پیوند میانی - ما از فاصله میانه به جای فاصله متوسط ​​به روشی مشابه پیوند متوسط ​​استفاده می کنیم.

پیوند بخش - فاصله بین خوشه ها را با استفاده از روش تحلیل واریانس تعیین می کند.

پیوند مرکز - مرکز هر خوشه با میانگین گیری تمام نقاط اختصاص داده شده به خوشه محاسبه می شود و سپس فاصله بین خوشه ها با استفاده از این مرکز محاسبه می شود.

محاسبه دور

روش های متعددی برای محاسبه فاصله بین دو یا چند خوشه وجود دارد که فاصله اقلیدسی محبوب ترین آنهاست. سایر معیارهای فاصله مانند Minkowski، City Block، Hamming، Jaccard و Chebyshev را می توان با خوشه بندی سلسله مراتبی نیز استفاده کرد. همانطور که در شکل 2 نشان داده شده است، معیارهای فاصله متفاوت بر خوشه بندی سلسله مراتبی تأثیر می گذارد.

محاسبه فاصله

دندروگرام

رابطه بین اشیاء در یک فضای ویژگی با یک دندروگرام نشان داده می شود. در یک فضای ویژگی، برای نشان دادن فاصله بین هر جفت از اشیاء متوالی ادغام شده استفاده می شود. دندروگرام ها اغلب برای بررسی خوشه های سلسله مراتبی قبل از تصمیم گیری در مورد تعداد مناسب خوشه برای مجموعه داده استفاده می شوند. فاصله دندروگرام فاصله بین دو خوشه هنگام ترکیب آنهاست. فاصله دندروگرام تعیین می کند که آیا دو یا چند خوشه ناهمگون هستند یا می توانند به یکدیگر متصل شوند تا یک خوشه واحد را تشکیل دهند.

مثال

اکنون به نمونه هایی با استفاده از پایتون برای نشان دادن مدل خوشه بندی سلسله مراتبی نگاه می کنیم. ما اطلاعات 200 مشتری مرکز خرید را در اختیار داریم مجموعه داده. شناسه مشتری، ژانر، سن، درآمد سالانه و امتیاز هزینه هر مشتری در چارچوب داده گنجانده شده است. مقدار محاسبه شده برای امتیازات هزینه هر یک از مشتریان آنها بر اساس چندین معیار است، مانند درآمد آنها، تعداد دفعات بازدید از مرکز خرید در هفته و پولی که برای یک سال خرج کرده اند. این امتیاز از 1 تا 100 متغیر است. چون ما پاسخ ها را نمی دانیم، یک مشکل تجاری به یک مشکل خوشه بندی تبدیل می شود.

شماره 1 وارد کردن کتابخانه ها
وارد کردن numpy به‌عنوان np واردات matplotlib.pyplot به‌عنوان plt پانداهای وارداتی به‌عنوان pd
شماره 2 وارد کردن مجموعه داده های Mall_Customers توسط پانداها
مجموعه داده = pd.read_csv('Mall_Customers.csv') X = dataset.iloc[:, [3,4]].values

این مرحله جدید در خوشه بندی سلسله مراتبی مستلزم تعیین تعداد بهینه خوشه ها نیز می باشد. این بار از روش آرنج استفاده نمی کنیم. ما از دندروگرام استفاده خواهیم کرد.

#3 استفاده از دندروگرام برای یافتن تعداد بهینه خوشه ها. # اولین کاری که می خواهیم انجام دهیم این است که کتابخانه scipy را وارد کنیم. scipy یک کتابخانه # Python منبع باز است که حاوی ابزارهایی برای انجام خوشه بندی سلسله مراتبی و ساخت دندروگرام است. # فقط ابزار مورد نیاز را وارد کنید. وارد کردن scipy.cluster.hierarchy به عنوان sch 
#بیایید یک متغیر دندروگرام ایجاد کنیم پیوند # در واقع خود الگوریتم خوشه بندی سلسله مراتبی است و سپس در #پیوند باید مشخص کنیم که روی کدام داده اعمال و درگیر شویم. این X مجموعه داده dendrogram = sch.dendrogram(sch.linkage(X، روش = "بخش")) plt.title('Dendrogram') plt.xlabel('Customers') plt.ylabel('فاصله های اقلیدسی') plt. نمایش ()

روش Ward روشی است که سعی در کاهش واریانس در هر خوشه دارد. این تقریباً مشابه زمانی است که از K-means برای به حداقل رساندن wcss برای رسم نمودار روش آرنج خود استفاده کردیم. تنها تفاوت این است که به جای wcss، انواع درون خوشه‌ای را به حداقل می‌رسانیم. در هر خوشه، این واریانس است. دندروگرام در زیر نشان داده شده است.

دندوگرام

مشتریان در محور x و فاصله اقلیدسی بین خوشه ها در محور y نمایش داده می شوند. چگونه بر اساس این نمودار بهترین تعداد خوشه ها را دریابیم؟ ما می‌خواهیم طولانی‌ترین فاصله عمودی را بدون عبور از خطوط افقی پیدا کنیم، که این همان خط قاب قرمز در نمودار بالا است. بیایید خطوط روی نمودار را بشماریم و بفهمیم که چه تعداد خوشه بهترین هستند. برای این مجموعه داده، عدد خوشه 5 خواهد بود.

#4 تناسب خوشه‌بندی سلسله مراتبی به مجموعه داده‌های Mall_Customes # دو الگوریتم برای خوشه‌بندی سلسله مراتبی وجود دارد: خوشه‌بندی سلسله مراتبی تجمعی و # خوشه‌بندی سلسله مراتبی تقسیم‌بندی. ما فاصله اقلیدسی و روش بخش را برای # کلاس الگوریتم خود از sklearn.cluster import AgglomerativeClustering انتخاب می کنیم. در حالی که بردار خوشه # را ایجاد می کند که به هر مشتری می گوید که مشتری متعلق به کدام خوشه است. y_hc=hc.fit_predict(X)
شماره 5 تجسم خوشه ها. این کد مشابه کد تصویرسازی k-means است. #ما فقط نام بردار y_kmeans را به y_hc برای خوشه بندی سلسله مراتبی plt.scatter جایگزین می کنیم (X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = 'خوشه 1') plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='blue', label ='Cluster 2') plt.scatter( X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='green', label ='Cluster 3') plt.scatter(X[y_hc==3, 0] , X[y_hc==3, 1], s=100, c='cyan', label ='Cluster 4') plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1 ], s=100, c='magenta', label ='Cluster 5') plt.title('خوشه های مشتریان (مدل خوشه بندی سلسله مراتبی)') plt.xlabel('درآمد سالانه(k$)') plt.ylabel ('Spending Score(1-100') plt.show()
خوشه ها | خوشه بندی سلسله مراتبی
Cluster1 (قرمز)، Cluster2 (آبی)، Cluster3 (سبز)، Cluster4 (فیروزه)، Cluster5 (ریغابی)

این خوشه ها را می توان به عنوان بخش مشتریان مرکز خرید در نظر گرفت.

این تمام چیزی است که در یک مدل خوشه بندی سلسله مراتبی استاندارد وجود دارد. مجموعه داده و همچنین تمام کدها در بخش Github موجود هستند.

نتیجه

در هر تمرین خوشه‌بندی، تعیین تعداد خوشه‌ها فرآیندی زمان‌بر است. از آنجایی که جنبه تجاری کسب و کار بیشتر به استخراج معنا از این گروه ها می پردازد، بسیار مهم است که خوشه ها را در دو بعد تجسم کنید و ببینید که آیا آنها متمایز هستند یا خیر. برای رسیدن به این هدف می توان از PCA یا آنالیز عاملی استفاده کرد. این یک روش رایج برای ارائه نتایج نهایی به ذینفعان مختلف است که مصرف خروجی را برای همه آسان‌تر می‌کند.

پینوشت

با تشکر از شما برای خواندن!
امیدوارم از مقاله لذت برده باشید و اطلاعات خود را افزایش داده باشید.
خواهش میکنم برای تماس با من راحت باشید on پست الکترونیک (ایمیل)
چیزی ذکر نشده است یا می خواهید نظرات خود را به اشتراک بگذارید؟ در زیر نظر بدهید و من با شما تماس خواهم گرفت.

درباره نویسنده

هاردیکومار ام دادوک
تحلیلگر داده | کارشناس تحلیل داده های دیجیتال | یادگیرنده علوم داده
با من در ارتباط باشید لینکدین
با من در ارتباط باشید گیتهاب

رسانه های نشان داده شده در این مقاله متعلق به Analytics Vidhya نیستند و به صلاحدید نویسنده استفاده می شوند.

منبع: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/

تمبر زمان:

بیشتر از تجزیه و تحلیل Vidhya