ویرگول
ورودثبت نام
حسین بحری
حسین بحریسالهاست برنامه نویسی رو چه به عنوان حرفه و چه به عنوان سرگرمی و علاقمندی شخصی دنبال می کنم.
حسین بحری
حسین بحری
خواندن ۹ دقیقه·۷ روز پیش

کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش پنجم(K-means)

سایر بخشهای این سلسله مقالات را از دست ندهید:
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش اول
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش دوم
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش سوم
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش چهارم

کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش پنجم(K-means)

کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ بخش ششم و آخر(KNN)

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

در این بخش از سلسله مقالات «کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟»، به سراغ یکی از پرکاربردترین الگوریتم‌های یادگیری نظارت‌نشده می‌رویم: K-means. خواهیم دید که چگونه این الگوریتم بدون هیچ راهنمایی قبلی، داده‌ها را به گروه‌های معنادار تقسیم کرده و چرا ابزاری کلیدی در بخش‌بندی مشتریان، فشرده‌سازی تصاویر و شناسایی ناهنجاری‌ها محسوب می‌شود.

فرض کنید یک پلتفرم بانکی می‌خواهد مشتریان جدید خود را بر اساس شباهت رفتاری و مالی‌شان به مشتریان قبلی، در یکی از دو گروه «کم‌ریسک» (مناسب برای وام) یا «پرریسک» (نامناسب برای وام) دسته‌بندی کند.

الگوریتم K-means برای حل این مسئله سه مرحله ساده دارد:

۱. انتخاب مراکز اولیه (K=2)
چون دو گروه ریسک می‌خواهیم، K=2 است. الگوریتم دو نقطه تصادفی از داده‌های تاریخی را به‌عنوان مرکز اولیهٔ خوشه‌ها انتخاب می‌کند. مثلاً:

  • مرکز اول (خوشه A): مشتری با «درآمد ۵ میلیون تومان» و «امتیاز اعتباری ۶۰۰».

  • مرکز دوم (خوشه B): مشتری با «درآمد ۲۰ میلیون تومان» و «امتیاز اعتباری ۸۵۰».

۲. فاصله‌ها محاسبه می‌شوند
برای هر مشتری، فاصله اقلیدسی تا هر دو مرکز محاسبه می‌شود تا ببینیم به کدام گروه نزدیک‌تر است.

  • مثلاً مشتری سامان (درآمد ۴ میلیون، امتیاز ۵۸۰): فاصله‌اش تا مرکز اول بسیار کم است، پس به خوشه A تعلق می‌گیرد.

  • مشتری ندا (درآمد ۲۵ میلیون، امتیاز ۹۰۰): فاصله‌اش تا مرکز دوم کمتر است، پس در خوشه B قرار می‌گیرد.

۳. مراکز به‌روزرسانی می‌شوند
حال میانگین ویژگی‌های تمام اعضای هر گروه محاسبه شده و مرکز جدید آن گروه تعیین می‌شود. این چرخه (انتساب مشتری به نزدیک‌ترین مرکز و سپس جابه‌جایی مرکز به میانگین جدید) آنقدر تکرار می‌شود تا مراکز دیگر تغییر نکنند و خوشه‌ها تثبیت شوند.

نتیجه نهایی و تحلیل آن توسط بانک:
پس از هم‌گرایی الگوریتم، دو گروه مشخص شکل می‌گیرند:

  • خوشه ۱ (پرریسک): شامل سامان و سایر مشتریان با درآمد پایین و سابقه پرداخت ضعیف.

  • خوشه ۲ (کم‌ریسک): شامل ندا و سایر مشتریان با درآمد بالا و سابقه اعتباری عالی.

حال اگر مشتری جدیدی به نام سارا (درآمد ۲۲ میلیون، امتیاز ۸۷۰) وارد سیستم شود، الگوریتم فاصله او را تا دو مرکز نهایی می‌سنجد. سارا به مرکز خوشه ۲ بسیار نزدیک‌تر است. بنابراین، بدون نیاز به بررسی دستی پرونده، الگوریتم پیشنهاد می‌دهد که سارا در گروه «کم‌ریسک» قرار گیرد و احتمال بازپرداخت وام توسط او بالاست.

به زبان ساده، K-means مثل این است که بانک مشتریان را بر اساس رفتار مالی‌شان خودبه‌خود در دو صف جداگانه مرتب کند؛ یک صف برای کسانی که ریسک پایینی دارند و صف دیگر برای کسانی که نیاز به بررسی دقیق‌تر دارند، بدون اینکه از قبل بداند کدام مشتری خوب است و کدام بد.

مثال : شناسائی ریسک انصراف دانشجویان

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

الگوریتم K-means برای مثال در سه مرحله اجرا می‌شود:

۱. انتخاب مراکز اولیه (K=2)
فرض می‌کنیم می‌خواهیم دانشجویان را به دو گروه اصلی تقسیم کنیم، پس K=2 است. الگوریتم دو دانشجو را به صورت تصادفی از میان داده‌ها به عنوان مرکز اولیه انتخاب می‌کند:

  • مرکز اول: دانشجویی با «میانگین نمرات ۱۰» و «حضور در کلاس ۴۰٪».

  • مرکز دوم: دانشجویی با «میانگین نمرات ۱۷» و «حضور در کلاس ۹۵٪».

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

  • مثلاً دانشجو امیر (نمره ۱۱، حضور ۳۵٪): فاصله‌اش تا مرکز اول بسیار کمتر است، پس به خوشه A تعلق می‌گیرد.

  • دانشجو مریم (نمره ۱۸، حضور ۹۰٪): فاصله‌اش تا مرکز دوم کمتر است، پس در خوشه B قرار می‌گیرد.

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

نتیجه نهایی و تفسیر دانشگاه:
پس از هم‌گرایی، دو خوشه معنادار شکل می‌گیرند:

  • خوشه ۱ (پرریسک): شامل امیر و سایر دانشجویانی با نمرات پایین، حضور کم و فعالیت آنلاین ناچیز.

  • خوشه ۲ (کم‌ریسک): شامل مریم و سایر دانشجویانی با عملکرد تحصیلی پایدار و مشارکت فعال.

حال اگر دانشجوی جدیدی به نام سارا (نمره ۱۶، حضور ۸۵٪) وارد سامانه شود، الگوریتم فاصله او را تا مراکز نهایی می‌سنجد. سارا به مرکز خوشه ۲ نزدیک‌تر است، بنابراین سیستم او را در گروه «کم‌ریسک» طبقه‌بندی می‌کند. اما اگر سارا نمره ۱۲ و حضور ۵۰٪ داشت، به خوشه ۱ نزدیک‌تر بود و سیستم به طور خودکار هشداری برای مشاور دانشگاه ارسال می‌کرد تا پیش از بحرانی شدن وضعیت، مداخله حمایتی انجام شود.

به زبان ساده، K-means در اینجا مثل یک دستیار هوشمند عمل می‌کند که بدون اینکه بداند کدام دانشجو واقعاً انصراف داده است، تنها با نگاه کردن به الگوهای رفتاری، دانشجویان را به دو دسته «نیازمند توجه» و «در مسیر موفقیت» تفکیک می‌کند.

آيا این الگوریتم با داده های با ابعاد بالا هم کار می‌کند؟

وقتی تعداد ویژگی‌ها از ۲ به n افزایش می‌یابد، الگوریتم K-means هیچ تغییر ساختاری نمی‌کند؛ تنها فضای محاسباتی آن گسترده‌تر می‌شود. منطق الگوریتم کاملاً مستقل از تعداد ابعاد است و دقیقاً همان سه مرحله قبلی را طی می‌کند، با این تفاوت که هر دانشجو اکنون یک نقطه در فضای n بعدی است.

مثال: نحوه عملکرد در فضای ۱۰ بعدی:

۱. مراکز اولیه ۱۰ بعدی می‌شوند
به جای دو عدد (نمره، حضور)، هر مرکز اولیه شامل ۱۰ مقدار است:

مرکز = [نمره، حضور، تکالیف، دروس ردشده، مشارکت، وضعیت مالی، فاصله جغرافیایی، سابقه مشاوره، فعالیت آنلاین، زمان ورود به سامانه]

  • ۲. فاصله اقلیدسی در ۱۰ بعد محاسبه می‌شود
    فرمول فاصله اقلیدسی به سادگی تعمیم می‌یابد. برای دانشجویی مثل سارا با ۱۰ ویژگی و مرکزی با ۱۰ ویژگی، فاصله برابر است با:

\sqrt{(x_1-c_1)^2 + (x_2-c_2)^2 + ... + (x_{10}-c_{10})^2}

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

۳. میانگین‌گیری ۱۰ بعدی
در مرحله به‌روزرسانی، میانگین هر ۱۰ ویژگی به صورت جداگانه برای اعضای هر خوشه محاسبه می‌شود تا مرکز جدید ۱۰ بعدی شکل بگیرد.

چالش اصلی: مقیاس متفاوت ویژگی‌ها

وقتی ۱۰ ویژگی داریم، یک مشکل جدی ظاهر می‌شود: مقیاس‌ها متفاوت هستند.

  • «نمرات» بین ۰ تا ۲۰ است.

  • «فاصله جغرافیایی» ممکن است بین ۰ تا ۵۰۰ کیلومتر باشد.

  • «تعداد بازدید از جزوات» ممکن است بین ۰ تا ۱۰۰۰ باشد.

اگر داده‌ها نرمال‌سازی نشوند، ویژگی «فاصله جغرافیایی» یا «تعداد بازدید» به دلیل مقیاس بزرگتر، بر محاسبه فاصله مسلط می‌شود و ویژگی‌های مهمی مثل «نمرات» یا «حضور» عملاً بی‌اثر می‌شوند. بنابراین، پیش‌پردازش و نرمال‌سازی (مثلاً تبدیل همه ویژگی‌ها به بازه ۰ تا ۱) در فضای چندبعدی نه یک انتخاب، بلکه یک ضرورت مطلق است.

هرچند نمی‌توانیم فضای ۱۰ بعدی را تصور کنیم، اما پس از هم‌گرایی، می‌توانیم با بررسی میانگین هر ویژگی در هر خوشه، بفهمیم هر گروه چه معنایی دارد:

  • اگر میانگین «نمرات»، «حضور» و «فعالیت آنلاین» در خوشه A پایین و میانگین «دروس ردشده» بالا باشد → خوشه A = پرریسک

  • اگر برعکس باشد → خوشه B = کم‌ریسک

بنابراین، K-means در فضای ۱۰ بعدی دقیقاً همان کاری را انجام می‌دهد که در فضای ۲ بعدی انجام می‌داد، فقط با محاسبات بیشتر و نیاز حیاتی به نرمال‌سازی. قدرت آن در این است که می‌تواند الگوهای پیچیده‌ای را کشف کند که انسان قادر به دیدن آن‌ها در فضای چندبعدی نیست.

چالش‌ها و محدودیت‌های ذاتی:

الگوریتم K-means با وجود سادگی و سرعت بالا، چالش‌ها و محدودیت‌های ذاتی مهمی دارد که در کاربردهای واقعی (مثل ارزیابی ریسک دانشجویان یا مشتریان بانک) باید حتماً مدنظر قرار گیرند:

۱. نیاز به تعیین پیشاپیش تعداد خوشه‌ها (K)

الگوریتم نمی‌تواند خودش تشخیص دهد که داده‌ها چند گروه طبیعی دارند. شما باید K را از قبل مشخص کنید. اگر K=2 انتخاب کنید ولی در واقعیت ۳ گروه مجزا (مثلاً کم‌ریسک، متوسط، پرریسک) وجود داشته باشد، الگوریتم به زور داده‌ها را در دو دسته جا می‌دهد و مرزهای مصنوعی ایجاد می‌کند.

۲. حساسیت شدید به مقیاس ویژگی‌ها

همان‌طور که اشاره شد، K-means بر پایه فاصله اقلیدسی کار می‌کند. اگر ویژگی‌ها نرمال‌سازی نشوند، ویژگی‌هایی با بازه عددی بزرگتر (مثل درآمد به میلیون تومان) کاملاً بر ویژگی‌های کوچک‌مقیاس (مثل معدل ۰ تا ۲۰) غلبه می‌کنند. این یعنی بدون پیش‌پردازش دقیق، نتایج مدل بی‌اعتبار خواهد بود.

۳. حساسیت به نقاط پرت (Outliers)

چون مراکز خوشه‌ها با محاسبه میانگین به‌روزرسانی می‌شوند، یک نقطه پرت شدید (مثلاً دانشجویی با بدهی ۱۰ برابر میانگین) می‌تواند مرکز خوشه را به سمت خود بکشد و ساختار کل گروه را منحرف کند. برخلاف درخت تصمیم که نسبت به پرت‌ها مقاوم است، K-means به شدت آسیب‌پذیر است.

۴. فرض خوشه‌های کروی و هم‌اندازه

‏K-means فرض می‌کند که خوشه‌ها شکلی کروی (یا دایره‌ای در فضای دوبعدی) و اندازه‌ای مشابه دارند. اگر داده‌های واقعی شکلی کشیده، هلالی یا نامنظم داشته باشند (مثلاً دانشجویان پرریسک در یک طیف پیوسته از نمرات قرار داشته باشند نه یک توپ متراکم)، الگوریتم نمی‌تواند آن‌ها را درست جدا کند و مرزهای اشتباه ترسیم می‌کند.

۵. وابستگی به مقداردهی اولیه

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

۶. عدم قطعیت در انتساب

‏K-means هر دانشجو را قطعاً به یک خوشه اختصاص می‌دهد. اما در واقعیت، ممکن است دانشجویی دقیقاً بین دو گروه قرار داشته باشد (مثلاً نمرات خوب ولی مشکلات مالی شدید). الگوریتم نمی‌تواند بگوید «این دانشجو ۶۰٪ شبیه گروه A و ۴۰٪ شبیه گروه B است».

۷. تفسیرپذیری دشوار در ابعاد بالا

وقتی ۱۰ یا ۲۰ ویژگی داریم، فهمیدن اینکه چرا الگوریتم دو گروه را جدا کرده است، سخت می‌شود. برخلاف درخت تصمیم که قوانین شفافی دارد، K-means فقط مراکز عددی ارائه می‌دهد. تحلیلگر باید پس از اجرا، با بررسی میانگین ویژگی‌ها و تکنیک‌های کاهش بُعد (مثل PCA)، معنای هر خوشه را کشف کند.

بنابراین ‏K-means ابزاری عالی برای اکتشاف اولیه داده‌ها و بخش‌بندی سریع است، اما نباید به عنوان تنها مبنای تصمیم‌گیری حساس (مثل رد کردن وام یا اخراج دانشجو) استفاده شود. بهترین رویکرد، ترکیب آن با دانش تخصصی، اعتبارسنجی نتایج توسط متخصصان حوزه، و در صورت نیاز، استفاده از مدل‌های نظارت‌شده پس از برچسب‌گذاری داده‌ها بر اساس خروجی خوشه‌بندی است.

اما الگوریتم K-means در مسائلی مانند بخش‌بندی مشتریان (Customer Segmentation)، فشرده‌سازی تصاویر، و اکتشاف اولیه داده‌های بدون برچسب معمولاً بهترین نتایج را ارائه می‌دهد و بر سایر مدل‌ها و الگوریتم‌های هوش مصنوعی برتری نسبی دارد. این برتری ناشی از سرعت و مقیاس‌پذیری فوق‌العاده آن است. پیچیدگی زمانی ‏K-means نسبت به تعداد داده‌ها در هر تکرار خطی است O(t⋅k⋅n⋅d)، یعنی زمان اجرا مستقیماً با تعداد داده‌ها رشد می‌کند. در مقابل، الگوریتم‌های خوشه‌بندی سلسله‌مراتبی یا DBSCAN در پیاده‌سازی ساده اغلب پیچیدگی مربعی یا بالاتر دارند. وقتی با میلیون‌ها رکورد مشتری یا پیکسل تصویر مواجهیم، K-means در چند ثانیه کاری را انجام می‌دهد که سایر الگوریتم‌ها ساعت‌ها زمان نیاز دارند.

سایر بخشهای این سلسله مقالات را از دست ندهید:
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش اول
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش دوم
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش سوم
کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش چهارم

کدام مدل هوش مصنوعی برای کدام مسئله مناسب است؟ - بخش پنجم(K-means)

هوش مصنوعیآموزش هوش مصنوعی
۴
۰
حسین بحری
حسین بحری
سالهاست برنامه نویسی رو چه به عنوان حرفه و چه به عنوان سرگرمی و علاقمندی شخصی دنبال می کنم.
شاید از این پست‌ها خوشتان بیاید