خوشه‌بندی (Clustering) چیست؟

مدرس: مسعود کاویانی

فرض کنید، شما یک فروشگاه بزرگِ موادغذایی دارید و مشتریانِ این فروشگاه که بالغ بر ۱۰۰ هزار نفر هستند ویژگی‌های مختلفی دارند. اجازه دهید، سه ویژگیِ زیر را برای یک مشتریِ خاص از مشتریان این فروشگاهِ بزرگ موادغذایی در نظر بگیریم (بقیه‌ی مشتریان نیز این ویژگی‌ها را دارند):

۱. این مشتری آخرین خریدِ خود را چند روز پیش انجام داده است؟ (که با R نام گذاری می‌کنیم)

۲. این مشتری در یکسالِ گذشته، به طورِ میانگین چند روز یک بار از فروشگاه ما خرید کرده است؟ (که با F نام گذاری میکنیم)

۳. این مشتری در یکسالِ گذشته به طورِ میانگین در هر بار خرید، چه مبلغی از فروشگاه خرید کرده است؟ (که با M نامگذاری میکنیم)

حال به جدول زیر که نوعی ماتریس است نگاهی بیندازید. این‌ها قسمتی از داده‌های ما هستند:

خوشه‌بندی

هر سطر در این جدول، یک مشتری را نشان میدهد. ستو‌ن‌های R و F و M به ترتیب سه ویژگی یا سه بُعدِ مسئله ما را تشکیل می‌دهند که مطابق با سه ویژگیِ گفته شده در بالا است. این‌ها ۵ نمونه از ۱۰۰ هزار مشتریِ فروشگاه ما را تشکیل می دهند که در جدول بالا نمایش داده شده است. به فرد شماره ۱ توجه کنید: این فرد ۳ روز گذشته آخرین خرید خود را انجام داده است (ویژگی R). در یکسال گذشته به طور میانگین هر ۴ روز یکبار خرید انجام داده (ویژگی F). و به طورِ میانگین در یکسال گذشته در هر خرید ۵۰۰۰ تومان خرید کرده است. بقیه‌ی مشتریان را هم می‌توانید به همین ترتیب تفسیر کنید.

از لحاظِ کسب و کار قطعاً می‌دانید که نباید با تمامی مشتریان به یک صورت برخورد کنید. پس نیاز دارید تا بینِ گروهِ مشتریانِ مختلفِ خود تمایز قائل شوید. برای این کار م‌یتوانید از الگوریتم‌های خوشه‌بندی (clustering) یا همان یادگیری غیرنظارت شده (unsupervised learning) استفاده کنید. این الگوریتم‌ها می‌توانند با استفاده از ویژگی‌ها یا همان ابعادِ مسئله (در اینجا R و F و M) گروه‌های مختلفی از نمونه‌هایی را که شبیه به هم هستند، پیدا کنند. مثلا فرض کنید از الگوریتم معروف KMeans استفاده می‌کنیم. این الگوریتم تعداد گروه‌ها (خوشه‌ها) را از شما می‌خواهد، شما عدد ۸ را به الگوریتم می‌دهید، به این معنی که می‌خواهید الگوریتم ۱۰۰ هزار مشتریِ شما را به ۸ گروه یا همان ۸ خوشه تقسیم نماید، به صورتی که مشتریان در یک گروه، به یکدیگر شباهت‌های زیادی داشته باشند. مثلاً فرض کنید یکی از این ۸ گروه (که الگوریتم KMeans تقسیم بندی کرده است) حدوده ۱۵ هزار مشتری دارد که معمولاً دارای M و F بالایی هستند. به این معنی که این گروه پول زیادی در هر خرید خرج می کنند (مثلاً هر بار حدود ۱۲۰ هزار تومان – ویژگی M)، ولی دوره برگشتشان به فروشگاه طولانی است (مثلاً هر ۳۰ روز یکبار به فروشگاه مراجعه می‌کنند – ویژگی F). پس ما از میان داده‌هایمان توانستیم چندین خوشه یا گروه استخراج کنیم که یکی از این خوشه‌ها ویژگی F و M بالایی داشت. حال می‌توان برای این خوشه تصمیمِ مشخصی گرفت. برای مثال احتمالاً این خوشه بیشتر احتیاج به مایع ظرف‌شویی بزرگ دارد تا یک مایع ظرفشویی کوچک، زیرا معمولاً مشتریانِ این خوشه خریدهایی با مبلغ بالا برای مدت طولانی انجام می‌دهد، پس می‌توان در یک تبلیغ پیامکی، اجناسِ بزرگ (مانند مایعِ ظرف‌شوییِ چند کیلویی) را برای این گروه از مخاطبان فرستاد. در واقع نوعی هوشمندی در کسب و کار با استفاده از خوشه‌بندی ارائه شده است.

این یک مثال از خوشه‌بندی بود. همان‌طور که در درس طبقه‌بندی (classification) متوجه شدید، در طبقه‌بندی یک ستونِ برچسب (lable) داریم در حالی که در خوشه‌بندی این ستونِ برچسب وجود ندارد. در واقع الگوریتم‌ها و روش‌های خوشه‌بندی، می‌توانند به صورتِ غیرِنظارت‌شده و بدونِ استفاده از برچسب، عملیاتِ خوشه‌بندی را با استفاده از ویژگی‌های مختلفِ مسئله انجام دهند. به عبارت ساده‌تر خوشه‌بندی یک نوع تقسیم‌بندیِ داده‌ها با توجه به الگوها یا همان patterns ذاتیِ داده‌ها است.

الگوریتم‌های مختلف خوشه‌بندی مانند KMeans، DB Scan، OPTICS و… وجود دارند که در دوره‌ی خوشه‌بندی به آن‌ها خواهیم پرداخت.

ترتیب پیشنهادی خواندن درس‌های این مجموعه به صورت زیر است:

22 دیدگاه دربارهٔ «خوشه‌بندی (Clustering) چیست؟»

  1. با سلام
    توضیح ساده و بسیار قابل فهمی از مفهوم خوشه بندی اراءه نموده اید در متن که بسیار عالی ایت و برای کاربرانی که از نظر علم داده کاوی مبتدی هستن بسیار مفید وقابل درک است…
    سپاس

  2. با سلام و درود
    یک سوالی از خدمت شما داشتم.
    من یک ست دیتا دارم و قصد دارم جوری آن ها را خوشه بندی کنم که داده هایی که روی خطوط با شیب ۱ قرار می گیرند، در یک خوشه مجزا قرار بگیرند. منظورم این هست که چند خوشه تولید بشه که در هر خوشه، همه داده ها روی خط راست با شیب یک هستند.

    آیا روش خوشه بندی خاصی هست؟
    امکانش هست منبع یا روشی برای مطالعه معرفی کنید؟

    در ضمن رشته من مهندسی نفت هست.
    با تشکر

    1. برای این کار به نظر روش Spectral Clusterin و همچنین DBSCAN و یا MeanShift مناسب به نظر می‌رسد. ولی بایستی الگوریتم‌های مختلف را امتحان کرده و با توجه به داده‌های خود، بهترین الگوریتم را انتخاب کنید

  3. با سلام

    روی داده های کوچک میتوان از داده کاوی استفاده کرد؟ من یک مجموعه داده در حدود ۱۵۰ رکورد درحوزه سلامت دارم و میخوام اثر تک تک متغیر ها روی بیماری بررسی و درنهایت الگوهای خاصی طراحی کنم که افراد با چه ویژگی ها چه درمانی در آنها جواب می دهد؟

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

  5. استاد مرسی مرسی مرسی..عالی بود..سر کلاس که خود استاد هم فکر نکنم فهمیده باشه چی درس داده
    من بعد از کلی گشت زدن توی نت بالاخره یه سایت پیدا کردم که همه چیز درباره ی داده کاوی رو از بیس و روان توضیح بده..خدا قوت .‌ایشالله باز هم مطالبی به این خوبی و قابل فهمی برای مبتدیان(دانشجویان) قرار بدید.

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

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