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

الگوریتم خوشه‌بندی K-Means همراه با مثال و پیاده سازی در پایتون مجله پی‌استور

خروجی فوق نشان می دهد که این مجموعه داده دارای 1797 نمونه با 64 ویژگی است. حال، با کمک کد زیر می توانیم مراکز خوشه ها را که توسط برآوردگر k-means پایتون انتخاب شده است را رسم کنیم. سپس، به صورت تصادفی تعداد k نقطه داده را انتخاب کنید و هر یک را به یک خوشه تخصیص دهید. اگه پایتون بلدی و می‌خوای وارد دنیای هوش مصنوعی بشی، این دوره مخصوص توئه! با آموزش پروژه‌محور و همراهی اساتید حرفه‌ای، یاد بگیر چطور از هوش مصنوعی تو زمینه‌هایی مثل پزشکی، بورس و املاک استفاده کنی.

در اجرای یادگیری ضریب Silhouette، میانگین ضریب Silhouette همه نمونه ها در یک مقدار خلاصه می شود. کلاس برآوردگر KMeans در scikit-learning جایی است که شما پارامترهای الگوریتم را قبل از برآوردگر به داده ها وصل می کنید. اجرای scikit-learn انعطاف پذیر است و چندین پارامتر قابل تنظیم را ارائه می دهد. مجموعه داده ها معمولاً حاوی ویژگی های عددی هستند که در واحدهای مختلف اندازه گیری شده اند، مانند قد (اینچ) و وزن (پوند). یک الگوریتم یادگیری ماشین وزن را مهمتر از قد می داند زیرا مقادیر وزن بزرگتر هستند و تنوع بالاتری از فرد به فرد دیگر دارند.

در این پست آموزش پایتون پیشرفته – راهنمایی عملی خوشه بندی K-Means در پایتون توضیح داده شد و منابع مهم آموزشی برای یادگیری شما عزیزان قید شد. پیشنهاد می کنیم فرصت های شغلی برنامه نویسی پایتون – معرفی ۱۰ شغل مهم و پردرآمد برنامه نویسی پایتون را نیز مطالعه کنید تا بیشتر به مزایای زبان برنامه نویسی پایتون علاقه مند شوید. هدف از این شکل در آموزش پایتون پیشرفته، نشان دادن این مفهوم است که مقداردهی اولیه centroids یک گام اساسی و مهم در الگوریتم k-means است. همچنین استفاده از SSE به عنوان معیاری برای عملکرد خوشه بندی مهم جلوه می دهد. پس انتخاب تعداد خوشه و centroids اولیه، مرحله حداکثر سازی انتظارات را تکرار می کند تا زمانی که موقعیت های مرکزی به همگرایی برسند و بدون تغییر باقی بماند.

سپس، با استفاده از کتابخانه Scipy ، dendrograms مربوط به نقاط داده خود را رسم خواهیم کرد. برای درک روش agglomerative فرض کنید در دنیا، ابتدا هر فرد یک خوشه است. حال این فرد در مرحله‌ی بعد با اعضای خانواده خود یک خوشه را تشکیل می‌دهد. بعد از آن، خانوداده‌ها با هم شهرها را تشکیل داده و شهرها با هم استان‌ها و بعد از آن کشورها، قاره‌ها و در نهایت کل جهان را تشکیل می‌دهند. واضح است که روش partitioning برعکسِ این عمل می‌کند و از کلِ جهان در هر مرحله به یک فرد می‌رسد.

کلاس Pipeline در این شرایط کمک زیادی به ما می‌کند، چون می‌توانیم با یک حلقه for عملیات تنظیم پارامترها را در آن انجام دهیم. روال پردازشی الگوریتم k-means در این مقاله، عملکرد خوبی داشت، اما هنوز هم جا برای بهتر شدن دارد. دلیل اصلی ساخت روال پردازشی نیز این است که می‌توان بعدها با تنظیم مجدد پارامترهای آن، نتایج خوشه‌بندی را به نتایج مطلوب نزدیک‌تر کرد. قطعه کد بعدی شما را با مفهوم روال پردازشی در scikit-learn  آشنا می‌سازد. کلاس Pipeline در scikit-learn  در واقع به‌نوعی همان روال پردازشی یادگیری ماشینی است. تحلیل مؤلفه اساسی Principal Component Analysis (PCA) یا PCA یکی از تکنیک‌های تقلیل ابعاد است که با نگاشت داده‌های ورودی روی تعداد کمتری از ابعاد (که مؤلفه Components نامیده می‌شوند)، آن‌ها را تبدیل می‌کند.

مدیریت و تجزیه و تحلیل کلان داده ها به بخشی ضروری از امور مالی مدرن، خرده فروشی، بازاریابی، علوم اجتماعی، توسعه و تحقیقات، پزشکی و دولت تبدیل شده است. این MOOC که توسط یک تیم دانشگاهی از Goldsmiths، دانشگاه لندن طراحی شده است، به سرعت شما را با مفاهیم اصلی علم داده آشنا می کند تا شما را برای دوره های متوسط ​​و پیشرفته علوم داده آماده کند. این بر روی ریاضیات، آمار و مهارت های برنامه نویسی اساسی تمرکز دارد که برای کارهای معمولی تجزیه و تحلیل داده ها ضروری است. شما این مفاهیم اساسی را در یک کار نمونه‌ای خوشه‌بندی داده در نظر خواهید گرفت و از این مثال برای یادگیری مهارت‌های برنامه‌نویسی اولیه که برای تسلط بر تکنیک‌های علم داده ضروری هستند، استفاده خواهید کرد. در طول دوره، از شما خواسته می‌شود که یک سری تمرین‌های ریاضی و برنامه‌نویسی و یک پروژه خوشه‌بندی داده‌های کوچک برای یک مجموعه داده انجام دهید.

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

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

در شکل سمت چپ، دو خوشه دایره‌ای با شعاع متفاوت را مشاهده می‌کنید که میانگین یکسانی دارند. همچنین اگر مانند شکل سمت راست، خوشه‌ها شکل دایره‌ای نداشته باشند، الگوریتم K-Means نمی‌تواند عمل خوشه‌بندی را انجام دهد. حال، زمانی که خوشه بزرگ شکل گرفت، طولانی ترین فاصله عمودی انتخاب می شود. از آنجایی که خط افقی خط آبی را در دو نقطه قطع می کند، تعداد خوشه ها 2 خواهد بود. همان طور که در مرحله قبل توضیح داده شد، نقش dendrograms زمانی شروع می شود که خوشه بزرگ شکل گرفته باشد.

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

در این مقاله، مثالی از الگوریتم K میانگین را قدم به قدم از مرحله پیش‌پردازش داده‌ها تا ارزیابی نتایج بررسی می‌کنیم و کد آن را به زبان پایتون می‌نویسیم. یکی از اصلی‌ترین ایرادات الگوریتم k میانگین این است که از میانگین به عنوان مرکز خوشه استفاده می‌کند. در تصویر زیر به خوبی نشان داده شده چرا استفاده از این مقدار مناسب نیست. با نگاه کردن به سمت چپ تصویر متوجه می‌شویم که دو خوشه دایره‌ای با شعاع‌ متفاوت وجود دارد که در مرکز همان میانگین قرار گرفته‌اند. به دلیل این‌که میانگین خوشه‌ها بسیار به هم نزدیک هستند، الگوریتم k عملکرد خوبی ندارد.

برخلاف سایر روش‌های خوشه‌بندی در این رویکرد لازم نیست کاربر تعداد خوشه‌ها را تعیین کند. خوشه‌های معنادار دانش تخصصی حوزه کاری Domain knowledge شما را گسترش می‌دهند. برای مثال، محققان در حوزه پزشکی یک الگوریتم خوشه‌بندی بر روی آزمایشات بیان ژن Gene expression اعمال کردند که توانست بیماران را بر اساس نوع واکنش‌شان به روش‌های درمانی در چند گروه مختلف قرار دهد. داده‌ها و اسناد مختلف تحقیقاتی را می‌توان بر اساس شباهت‌های خاصی گروه‌بندی کرد. الگوریتم خوشه بندی می‌تواند در این موارد برای خوشه بندی متن و گروه بندی آن در دسته‌های مختلف مفید باشد. تکنیک‌های بدون نظارت مانند LDA نیز در این موارد برای یافتن موضوعات پنهان در یک مجموعه بزرگ مفید هستند.

الگوریتم خوشه‌بندی «K میانه» (K-Median) شبیه به الگوریتم K میانگین است؛ با این تفاوت که برای محاسبه مجدد مراکز خوشه از معیار میانه بردارهای نمونه هر کلاس استفاده می‌کند. احتمال وجود نمونه‌های پرت در این الگوریتم کمتر بوده اما از طرفی و چون محاسبه بردار میانه به مرتب‌سازی نیاز دارد، عملکرد آن برای مجموعه‌داده‌های بزرگ به مراتب آهسته‌تر است. اگر در انتخاب ویژگی برای مدل یادگیری ماشین خود تردید دارید، الگوریتم های خوشه بندی با کشف الگوهای پنهان به شما در یافتن ویژگی‌های مناسب کمک می‌کنند. به‌طور کلی، هر چه اطلاعات محدودتری نسبت به داده‌ها داشته باشید، یعنی خوشه‌بندی همان روشی است که باید در نظر بگیرید. شاید انتخاب الگوریتم خوشه بندی مناسب کمی زمان‌بر باشد، اما در مرحله بعدی متوجه روابطی ارزشمند میان داده‌ها می‌شوید. سازمان‌ها در سراسر جهان از داده‌ها برای پیش‌بینی رفتارها و استخراج بینش‌های ارزشمند دنیای واقعی برای تصمیم‌گیری استفاده می‌کنند.

خوشه‌بندی به شناسایی دو خصلت معنی‌داری Meaningfulness و کاربرد Usefulness داده‌ها به ما کمک می‌کند. در این نوشتار به معرفی 5 الگوریتم برتر خوشه‌بندی پرداختیم که تمامی متخصصین علوم داده باید با آن‌ها آشنایی داشته باشند! این نوشتار را با ارائه تصویری که در آن نحوه عملکرد خوب (به دلیل استفاده از Scikit Learn) این 5 الگوریتم و الگوریتم‌های دیگر نشان داده شده است به پایان می‌رسانیم. مقایسه عملکرد الگوریتم‎‌های مختلف در مواجهه با داده‌ها گوناگون جالب است. به منظور پیدا کردن پارامترهای گوسی برای هر یک از خوشه‌ها ( میانگین و انحراف از معیار) از یک الگوریتم بهینه‌سازی موسوم به الگوریتم بیشینه‌سازی انتظار (EM) استفاده می‌کنیم. به تصویر مقابل توجه کنید که در آن منحنی‌های گوسی‌ در خوشه‌ها جای می‌گیرند.

در این درس سعی داریم روش پایین به بالا (Bottom Up) یا همان Agglomerative را توضیح دهیم. ما باید نمونه آزمایشی را با ارائه هر تعداد دلخواه بیشتر از 1600، که نمونه های آموزشی بود، ایجاد کنیم. در واقع 1797 تصویر وجود دارد اما ما از 1600 تصویر اول به عنوان نمونه آموزش استفاده می کنیم و 197 تصویر باقیمانده را برای تست نگهداری می کنیم. ما باید مدل K-means را از طریق تمام مقادیر تکرار کنیم و همچنین باید آن را با داده های ورودی آموزش دهیم. با کمک کد زیر، با استفاده از make_blob از بسته sklearn.dataset ، مجموعه داده ای دو بعدی را که شامل چهار blobs است، تولید خواهیم کرد.

برای مقابله با این مشکل، برخی از روش‌ ها مانند جستجوی تصادفی یا گرادیان نزولی با نرخ یادگیری تطبیقی به کار میروند که میتوانند از قله‌ های محلی فرار کرده و به نواحی بهینه‌تر در فضای جستجو برسند. در بررسی ­هایی که اخیرا صورت گرفته است پایتون سومین نرم افزار کاربردی و پرطرفدار در میان مجموعه نرم افزارهای گوناگون از جمله MATLAB، PHP، R، Java و … قرار گرفته است. همان‌طور که می‌بینید، در ابتدا ۷خوشه داریم (از پایین به بالا ببینید). در مرحله‌ی اول نمونه‌های ۲ و ۵ با هم تجمیع می‌شوند و در مرحله دوم نمونه‌های ۳ و ۷. به همین ترتیب جلو می‌رویم تا در مرحله ۶ تمامیِ خوشه‌ها با یکدیگر تجمیع شده و یک خوشه‌ی واحد را می‌سازند.

در این روش کاربر باید تعداد خوشه‌ها را که همان متغیر k است، مشخص کند. طرز کار بسیاری از الگوریتم‌های خوشه‌بندی به این صورت است که طی فرایندی تکراری، زیرمجموعه‌هایی از نقطه داده‌ها‌ را به k خوشه تعریف‌شده تخصیص می‌دهند. الگوریتم K میانگین و لگوریتم K واسط k-medoids دو نمونه از الگوریتم‌های خوشه‌بندی تفکیکی هستند. الگوریتم خوشه بندی سلسله مراتبی (Agglomerative Hierarchical Clustering) یک نمونه محبوب از HCA است. این الگوریتم برای گروه‌بندی مجموعه داده‌ها در خوشه‌ها، از رویکرد پایین به بالا پیروی می‌کند. در نهایت، تصمیم شما در مورد تعداد خوشه ها برای استفاده باید ترکیبی از دانش حوزه و معیارهای ارزیابی خوشه بندی باشد.

می توان با ساخت خوشه های متنوع از روند های مشابه، از خوشه بندی برای تشخیص روند در داده پویا استفاده کرد. حال باید هر نقطه داده را به خوشه ای (نقطه مرکزی) که از سایر خوشه ها نزدیک تر است تخصیص دهیم. همان‌طور که در نمودار نیز با رنگ‌های مختلف نشان داده شده است، داده‌ها در ۱۰ کلاس مجزا توسط الگوریتم انتشار وابستگی دسته‌بندی شده‌اند. با توجه به نمودار فوق، سه خوشه مختلف توسط الگوریتم DBSCAN شناسایی شده‌اند. با توجه به نمودار فوق، به سادگی می توان مشاهده کرد که دو خوشه در نقاط داده داریم، اما در داده دنیای واقعی، می تواند هزاران خوشه وجود داشته باشد.

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

Ε نیز نشان‌دهنده فاصله حداکثر بین نقاط است که مورد استفاده قرار می‌گیرد تا تعیین کند که یک نقطه به یک خوشه تعلق دارد یا خیر. الگوریتم DBSCAN قابلیت شناسایی خوشه‌هایی با اشکال مختلف دارد و به طور خودکار تعداد خوشه‌ها را تشخیص می‌دهد. همچنین، DBSCAN قادر است با شناسایی نقاط نویز، داده‌هایی را که به هیچ خوشه‌ای تعلق ندارند، مشخص کند. این الگوریتم یکی از الگوریتم‌های خوشه‌بندی محبوب در حوزه داده‌کاوی و تحلیل داده است. پایداری و ثبات دیگر الگوریتم های خوشه بندی به مراتب از روش K میانگین بیشتر است.

این یک الگوریتم یادگیری بدون نظارت است که برای گروه بندی نقاط داده بدون برچسب با ویژگی های مشابه استفاده می شود. این الگوریتم یکی دیگر از الگوریتم های قدرتمند خوشه بندی است که در یادگیری بدون نظارت از آن استفاده می شود. برخلاف خوشه بندی K-means ، از آنجایی که mean – shift یک الگوریتم بدون پارامتر است، هیچ فرضی را در نظر نمی گیرد. یکی از مهمترین ملاحظات مربوط به مدل یادگیری ماشین، ارزیابی کارایی آن و یا به عبارتی کیفیت مدل است. در صورت استفاده از الگوریتم های یادگیری تحت نظارت، ارزیابی کیفیت مدل آسان خواهد بود زیرا برای همه مثال ها بر چسب داریم. در این متدها، خوشه بندی به واسطه تقسیم اشیا در k تعداد خوشه تشکیل می شود.

الگوریتم های خوشه بندی در واقع رویکردی نظارت نشده هستند که از تفکیک داده‌ها به عنوان هدف اصلی آن‌ها یاد می‌شود. از جمله اصلی‌ترین روش‌های خوشه‌بندی می‌توان به روش‌های مبتنی‌بر چگالی، مبتنی‌بر توزیع، مبتنی‌بر مرکز و سلسله مراتبی اشاره کرد. الگوریتم های خوشه بندی برای مدیریت انواع داده، از روش‌های مختلفی تشکیل شده‌اند که در این بخش به بررسی چهار گروه اصلی آن می‌پردازیم. برای مثال آن ها وظیفه دارند که الگوریتم ها و کد هایی را توسعه دهند که در نتیجه ی آن ها یک نرم افزار جذاب و مورد نیاز مردم خلق شود و مردم بتوانند از اینگونه نرم افزار ها برای رفع نیاز روزمره خود استفاده کنند. ۱.الگوریتم بهینه‌ سازی چیست و چگونه عمل میکند؟این الگوریتم‌ ها مجموعه‌ای از روش‌ ها هستند که برای پیدا کردن بهترین یا نزدیک‌ ترین پاسخ به یک مسئله خاص طراحی شده‌اند. این الگوریتم‌ ها با استفاده از داده‌ها و منابع محدود، سعی در دستیابی به بهترین نتیجه ممکن دارند.

برای شروع این مسیر جذاب، ما به شما دوره آموزشی الگوریتم چیست؟ (اولین قدم شروع برنامه نویسی) را پیشنهاد می کنیم. پس از این دوره وقت آن است که یک زبان برنامه نویسی را در حوزه متنوع خود انتخاب کنید و در آن عمیق شوید. بدین ترتیب در این آموزش به یادگیری دو گام بسیار مهم و موثر در علم یادگیری عمیق (خوشه بندی و کاهش ویژگی) می­ پردازیم. شاخص ARI برخلاف ضریب silhouette، به کمک خوشه‌های واقعی، میزان شباهت‌ بین برچسب‌های واقعی و پیش‌بینی‌شده را می‌سنجند. اگر می‌خواهید بدانید الگوریتم K میانگین برای حل چه مسائلی قابل‌استفاده است و چگونه می‌توان آن را در پایتون پیاده‌سازی کرد، در این مقاله آموزشی همراه ما باشید.

همزمان با برقراری ارتباط، مجموعه‌ای از داده‌ها با عنوان «نمونه‌های شاخص» (Exemplars) پیدا شده که در واقع همان خوشه‌ها را تشکیل می‌دهند. همان‌طور که در تصویر نیز ملاحظه می‌کنید، نقاط داده در دو گروه متمایز قرار داشته و باید ببینیم که آیا الگوریتم های خوشه بندی قادر به شناسایی این دو گروه هستند یا خیر. در ادامه، از این مجموعه‌داده برای سنجش عملکرد الگوریتم های خوشه بندی استفاده می‌کنیم. در این مطلب، ابتدا تعریفی از خوشه‌بندی ارائه داده و به شرح چهار دسته کلی از الگوریتم های خوشه بندی می‌پردازیم. سپس با موارد استفاده این الگوریتم ها آشنا شده و ۱۰ مورد از رایج‌ترین آن‌ها را معرفی و پیاده‌سازی می‌کنیم.


برنامه نویسی و طراحی سایت