ابزار و کتابخانه ها

آیا واقعاً به این همه الگوریتم دسته بندی نیاز داریم؟

جدیداً به مقاله ای برخوردم با عنوان «آیا برای حل مسائل دسته بندی داده ها در دنیای واقعی به صدها الگوریتم دسته بندی کننده نیاز داریم؟» که با اعمال الگوریتم های مختلف دسته بندی روی بیش از صد مجموعه داده، به این نتیجه رسیده بود که چند تا از الگوریتم های دسته بندی یعنی جنگل تصادفی و ماشین های بردار پشتیبان، بهترین عملکرد را دارند و بجز در موارد خاص، می توانیم در اکثر مسائل دنیای واقعی از همین چند الگوریتم اصلی و مناسب استفاده کنیم.

برای انجام این آزمایش مفید، ۱۷۹ دسته بند مختلف که تمام ۱۷ گونه اصلی دسته بندها را در بر میگیرد، روی تمام مجموعه داده های مخصوص دسته بندی سایت UCI که یکی از معتبرترین مراجع داده دانشگاهیست به اضافه ۴ مجموعه داده دیگر (جمعاً ۱۲۱ مجموعه داده)، اعمال شده است.  البته مجموعه داده های خیلی حجیم مورد بررسی قرار نگرفته است و مجموعه داده های سایت مرجع هم نسبت به عدد  سال ۲۰۱۳ که این آزمایش انجام گرفته است، افزایش پیدا کرده است.

انواع ۱۷ گانه الگوریتم های دسته بند مورد بررسی هم از قرار زیر است :

discriminant analysis, Bayesian, neural networks, support vector machines, decision trees, rule-based classifiers, boosting, bagging, stacking, random forests and other ensembles, generalized linear models, nearest-neighbors, partial least squares and principal component regression, logistic and multinomial regression, multiple adaptive regression splines and other methods), implemented in Weka, R (with and without the caret package), C and Matlab, including all the relevant classifiers available today

این مجموعه داده ها بین ۱۰ تا ۱۳۰,۰۶۴ داده، بین ۳ تا ۲۶۲ ستون و بین ۲ تا ۱۰۰ دسته مختلف را شامل شده اند. جزئیات مجموعه داده ها و نیز الگوریتم های استفاده شده را در بخش یک و دو این مقاله می توانید بیابید. با محاسبه تعداد اجراهای هر الگوریتم برای یافتن بهترین مقادیر برای پارامترهای آنها، جمعاً  ۲۴۱,۶۳۷
آزمایش صورت گرفته است و ۲۱,۶۵۹ ترکیب (دسته بند، مجموعه داده) ایجاد شده است.

بهترین نتیجه را الگوریتم جنگل تصادفی موازی  (parRf-t) از آن خود کرده است که توسط کتابخانه caret در R پیاده سازی و پارامتر  mtry آن به صورت مناسب تنظیم شده است. این الگوریتم ،  به طور متوسط ۹۴٫۱٪ بیشینه دقت به دست آمده در هر مجموعه داده را کسب کرد یعنی حدود شش درصد با بهترین الگوریتم به دست آمده برای هر مجموعه داده اختلاف داشت و در ۱۰۲ مجموعه داده هم اختلافی زیر ده درصد با بهترین الگوریتم داشت. البته دقت متوسط آن، ۸۲٫۰ درصد به دست آمده است که با میانگین بیشینه دقت هر مجموعه داده یعنی عدد ۸۶٫۹٪ اختلاف کمی دارد.شش الگوریتم جنگل تصادفی و پنج الگوریتم ماشین های بردار پشتیبان در جزء بیست دسته بند با دقت بیشتر قرار گرفته اند که نشان میدهد این دو نوع الگوریتم، گزینه های مناسب تری برای اکثر مسائل هستند. قسمت پایین شکل زیر این بیست الگوریتم برتر را رتبه بندی کرده است. بخش اول این جدول به بیست الگوریتمی که بیشترین احتمال رسیدن به بیشینه دقت را دارند اختصاص دارد و بخش دوم هم به بیست الگوریتمی که کمترین اختلاف را با بیشینه دقت مورد انتظار دارند، پرداخته است.

در مورد مسایل مختلف دیگری هم در این مقاله بحث شده است مثلا اینکه برای مجموعه داده های دو دسته ای، بهترین نتایج را شبکه های عصبی کسب کرده اند و یا اینکه به جای استفاده مستقیم از libSVM شاید بهتر باشد از روشهای اجرای گروهی الگوریتم ها (Bagging and Boosting)  که پشت صحنه از libSVM استفاده می کنند، بهره ببریم.

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

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

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

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

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

دکمه بازگشت به بالا