خوشه بندی
آموزشآموزش‌های پایه‌ای هوش مصنوعییادگیری بدون نظارت

خوشه‌ بندی با K-means

    2
    خوشه‌ بندی clustering  یکی از پرکاربردترین روش‌های یادگیری بدون نظارت unsupervised learning  است. همان‌طور که از نامش پیداست، خوشه‌ بندی به عملِ گروه‌بندی داده‌هایی اشاره می‌کند که خصوصیات مشابهی دارند. خوشه‌ بندی زمانی در حوزه یادگیری ماشین مورد استفاده قرار می‌گیرد که هیچ برچسب دادۀ از پیش تعیین‌شده‌ای موجود نباشد. به عبارت دیگر، روش خوشه‌ بندی در صورتی به کار برده می‌شود که مشخص نباشد چه نوع گروهی باید ایجاد شود.هدف نهایی این است که داده‌ها در دسته‌های مشابهی جای گیرند، به طوری که:
    • میزان شباهت درون‌دسته‌ای بالا باشد.
    • میزان شباهت میان‌دسته‌ای پایین باشد.

    دو نوع اصلی خوشه‌ بندی تحت عنوان خوشه‌ بندی K-means و خوشه‌ بندی سلسله‌مراتبی متراکم‌شونده Hierarchical Agglomerative Clustering وجود دارد. در خوشه‌ بندی K-means، پیدا کردنِ مراکز خوشه k به عنوان میانگین نقطه داده‌ای در دستور کار قرار دارد. اینجا، تعداد خوشه‌ها (k) از قبل تعیین گردیده است و مدل سعی می‌کند بهینه‌ترین خوشه‌ها را بر این اساس پیدا کند. ما در مقاله حاضر فقط بر خوشه‌بندی K-means تمرکز خواهیم کرد. در همین راستا، می‌خواهیم از دیتاست وضعیت هوا Kaggle استفاده کنیم. این دیتاست حاوی شاخص‌هایی از قبیل فشار هوا، سرعت حداکثر باد، رطوبت نسبی و غیره است. داده‌ها در بازه سه ساله (از ماه سپتامبر ۲۰۱۱ تا ماه سپتامبر ۲۰۱۴) در سن‌دیگو جمع‌آوری شد. لازم به ذکر می‌باشد که این داده‌ها دربردانده اندازه‌گیری‌های حسگر خام بوده و در بازه‌های یک‌دقیقه‌ای جمع‌آوری شده است.در مرحله اول باید کتابخانه‌های لازم را وارد کرد:

    و حالا دیتاست:

    خوشه بندیمی‌توان با بررسی دقیق داده‌ها به این نتیجه رسید که ۱.۵۸۷.۲۵۷ ردیف و ۱۳ ستون وجود دارد. چون این دیتاست خیلی بزرگ است، باید نمونه‌ها را به صورت تصادفی به دست آوریم. علاوه بر این، ضروری است که ابتدا در روش خوشه‌بندی K-means، موقعیت مرکز اولیه هر خوشه را پیدا کنیم تا الگوریتم به همگرایی برسد. پس به جای کار کردن با کل دیتاست، یک نمونه انتخاب کرده و نقاط مرکزی اولیه به صورت تصادفی مورد بررسی قرار می‌گیرند.
    یک نمونه از هر ده ردیف انتخاب کرده و دیتافریم نمونه‌های جدید را به صورت زیر ایجاد می‌کنیم:

    این اقدام باعث ایجاد ۱۵۸.۷۲۶ ردیف و ۱۳ ستون می‌شود.
    با بررسی مقادیر پوچ، زمینه برای صرفنظر کردن از rain_accumulation و rain_duration فراهم می‌شود.

    خوشه بندی

    خوشه بندی

    از میان دو مقدار (سرعت حداکثر باد/ جهت و سرعت حداقل باد/ جهت)، فقط سرعت حداکثر باد با هدف خوشه‌ بندی در این مقاله انتخاب شده است. البته هر کس این اختیار را دارد که مقادیر دیگر را در فرایند تحلیل بگنجاند. سرانجام، ستون‌هایی که در خوشه‌بندی به آنها علاقمندیم، به ترتیب زیر در یک دیتافریم جدید سامان داده می‌شود:

    خوشه بندی

    گام بعدی این است که مقادیر را مقیاس‌بندی کنیم تا همگی اهمیتی برابر داشته باشند. مقیاس‌بندی از دید خوشه‌ بندی نیز حائز اهمیت می‌باشد زیرا فاصله میان نقاط بر نحوه شکل‌گیری خوشه‌ها تاثیر می‌گذارد.
    حال نوبت آن است که دیتافریم‌مان را با استفاده از StandardScaler تغییر دهیم:

    خوشه بندی

    خوشه‌ بندی K-means

    همان‌طور که پیشتر اشاره شد، تعداد خوشه‌ها در K-means برای اجرای مدل از قبل تعیین شده است. می‌توان تعداد پایه برای k در نظر گرفت و آن را برای یافتن بهینه‌ترین مقدار تکرار کرد. به منظور اینکه مشخص شود چه تعداد خوشه در دیتاست‌مان وضعیت بهینه دارند یا برازش خوشه را محاسبه گردد، می‌توان از دو روش امتیازدهی «ضریب نیم‌رخ» Silhouette Coefficient  و «شاخص کالینسکی هاراباسز» Calinski Harabasz Score  استفاده کرد. در واقعیت، بسته به اینکه کدام معیار اندازه‌گیری بالاترین اهمیت را در مدل دارد، می‌توان از روش‌های امتیازدهی مختلفی استفاده نمود. معمولاً یکی از مدل‌ها به عنوان مدل استاندارد انتخاب می‌شود. من در این مقاله از دو مدل برای تجزیه و تحلیل نتایج استفاده کردم. ضریب نیم‌رخ با استفاده از فاصله میانگین درون‌دسته‌ای mean intra-cluster distance  و فاصله میانگین نزدیک‌ترین خوشه mean nearest-cluster distance  در هر نمونه مورد محاسبه قرار می‌گیرد. شاخص کالینسکی هاراباسز یا نسبت واریانس به نسبت میانِ پراکندگی درون خوشه‌ای within-cluster dispersion  و پراکندگی بین خوشه‌ای پراکندگی بین خوشه‌ای between-cluster dispersion  اطلاق می‌شود.اکنون نوبت اجرای الگوریتم K-means با استفاده از sci-kit learn مهیا شده است.

    n_clusters= 12

    محاسبه ضریب نیم‌رخ …

    ۰.۲۴۰۵

    محاسبه شاخص کالینسکی هاراباسز …

    ۳۹۰۷۸.۹۳

    حالا بیایید همین کار را برای مقدار تصادفی دیگری انجام دهیم (مثلاً n_clusters = 8)

    باید ضریب نیم‌رخ و شاخص کالینسکی هاراباسز را مجدداً محاسبه کرد:

    ضریب نیم‌رخ: ۰.۲۴۴

    شاخص کالینسکی هاراباسز: ۴۱۱۰۵.۰۱

    نکته قابل توجه در هر دو شاخص این است که ۸ خوشه، مقدار بهتری ارائه می‌دهند. با این حال، لازم است این فرایند چندین بار با تعداد خوشه‌های مختلف تکرار شود تا خوشه بهینه به دست آید. در همین راستا، امکانِ استفاده از روشی موسوم به elbow plot برای یافتن مقدار بهینه وجود دارد. اینجا دو معیار حائز اهمیت است: اعوجاج و لَختی اعوجاج به متوسط فاصله اقلیدسی از مرکز خوشه گفته می‌شود. اما لَختی مجموع مجذور فاصله نمونه‌ها با نزدیک‌ترین مرکز خوشه است.

    به خاطر داشته باشید که شباهت درون خوشه‌ای در K-means حائز اهمیت است و elbow plot نقش مهمی در این زمینه ایفا می‌کند.

    خوشه بندیکاهشِ مجموع مجذور فاصله پس از k=5 مشهود است. از این رو، ۵ به عنوان تعداد بهینه خوشه‌ها در تحلیل شناخته می‌شود. این ادعا با محاسبه ضریب نیم‌رخ و شاخص کالینسکی هاراباسز در k=5 قابل محاسبه است.

    ضریب نیم‌رخ: ۰.۲۶۱
    شاخص کالینسکی هاراباسز: ۴۸۰۶۸.۳۲

    خوشه بندی
    هر دو مقدار بالاتر از مقادیری هستند که در خوشه‌های ۱۲ و ۸ به دست آمد. پس می‌توان این چنین نتیجه گرفت که k=5 تعداد بهینه برای خوشه‌هاست. از تابع زیر برای ایجاد نقشه استفاده شد.

    خوشه بندی

    طبق محاسبات، انسان‌ها قادر به کنترل ماشین های فراهوشمند نیستند

    مقاله قبلی

    کاربرد هوش مصنوعی در تربیت حیوانات خانگی

    مقاله بعدی

    شما همچنین ممکن است دوست داشته باشید

    بیشتر در آموزش

    2 نظرات

    1. خیلی وقت بود دنبال مقاله تو زمینه ی خوشه‌ بندی با K-means بودم
      ممنون

    2. سلام ببخشین من این کد شما رو توی پایتون قرار دادم اما اروری مبنی بر این که نام sum_of_squared_distances تعریف نشده است،گرفتم میشه لطفا راهنماییم کنین ؟؟

    پاسخ دهید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *