در یادگیری نظارت شده () دو دسته از الگوریتم های رگرسیون (Regression) و طبقه بندی وجود دارند. طبقه بندی (Classification) یکی از تکنیک های مهم در یادگیری ماشین و در داده کاوی (Data Mining) است. در رگرسیون به دنبال پیش بینی خروجی های عددی (پیوسته) هستیم ولی در طبقه بندی به دنبال پیش بینی مقدارهای گسسته هستیم.

یک کاربرد طبقه بندی که روزانه با آن سروکار دارید، دسته بندی ایمیل های دریافتی به دو دسته اسپم یا غیر اسپم است. در واقع هدف این است که ایمیل یا در فولدر Inbox یا در فولدر Spam قرار بگیرد. اگر در مجموعه یادگیری تنها به دو کلاس تعلق داشته باشند، آنرا طبقه بندی دودویی (Binary Classification) می نامند. در شکل زیر می توانید دو پوشه (فولدر) Inbox و Spam را ببینید. به طور مثال کلاس می تواند Yes/No یا مقدار پیش بینی شده عدد صفر یا یک باشد.

طبقه بندی چند کلاسی

در طبقه بندی چند کلاسی (Multiclass Classification)، هر نمونه از مجموعه داده یادگیری به یکی از N کلاس متفاوت تعلق دارد. در واقع هدف این است که الگوریتم بتواند به درستی پیش بینی کند که نمونه به کدام یک از کلاس ها تعلق داردبه طور مثال برای دسته بندی ایمیل ها بیش از یک فولدر وجود دارد، به طوری که می توان ایمیل های ورودی را در دسته های ایمیل های کاری، خانوادگی یا ایمیل هایی از دوستان دسته بندی کرد. در شکل زیر می توانید ببینید که جی میل در کنار دسته بندی ایمیل ها در فولدرهای Inbox و Spam آنها را در فولدرهای Primary، Social، Promotions، Updates و Forums دسته بندی کرده است.

در طبقه بندی دودویی مانند تشخیص سرطانی بودن (Yes) یا نبودن (No)، اگر سرطان تشخیص داده شود، پس رشته Yes عدد ۱ و اگر سرطان نباشد، پس رشته No عدد صفر تبدیل می شوند. تا بتوانیم از آنها در الگوریتم استفاده کنیم.  اما چرا لازم است تا مقدار رشته ای به مقدارهای عدد تبدیل شوند؟ دلیل این است که ورودی الگوریتم های یادگیری در زمان ایجاد مدل باید مقدار عددی باشد.

بنابراین چون برخی از الگوریتم ها مانند K نزدکترین همسایه () ویژگی های مورد استفاده برای ایجاد مدل، باید عددی باشند، پس لازم است تا یک تبدیل از مقدار رشته ای به عددی انجام شود. در لینک های زیر چگونگی انتخاب ویژگی ها و تبدیل و کدگذازی مقدارهای های رسته ای (Categorical Data) با روش های استاندارد و پیاده سازی شده در کتابخانه Scikit-Learn توضیح داده شده است.

بنابراین به عنوان جمع بندی، در طبقه بندی دودویی تنها دو کلاس در ستون برچسب ها در مجموعه داده ها وجود دارند ولی در طبقه بندی چند کلاسی، بیش از دو کلاس درون ستون برچسب وجود دارد. به عنوان یک نمونه ساده از مجموعه داده های چند کلاسی، می توان به مجموعه داده Iris اشاره کرد که در آن سه کلاس setosa و versicolor و virginica وجود دارند.

بارگذاری داده ها در کتابخانه Scikit-Learn

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

۱تشخیص خودکار اینکه آیا ایمیل اسپم است یا نه؟طبقه بندی دودویی

۲تشخیص خودکار اینکه آیا یک ایمیل مشکوک به حمله فیشینگ (Phishing) است یا نه؟طبقه بندی دودویی

۳آیا کاربران روی تبلیغات کلیک کرده اند یا نه؟طبقه بندی دودویی

۴شناسایی عددهای دست نویسطبقه بندی چند کلاسیتعداد کلاس ها برابر با ۱۰ رقم صفر تا ۹

بنابراین در مسئله های رگرسیون به دنبال پیش بینی یک مقدار پیوسته (Continuous) هستیم ولی در مسئله های طبقه بندی به دنبال پیش بینی مقدارهای گسسته (Discrete) هستیم. به طور مثال از مقدارهای پیوسته می توانیم به spam/no-spam و phishing/no-phishing و click/don’t-click اشاره کرد

فهرست الگوریتم های طبقه بندی

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

۱ – رگرسیون لوجستیک – Logistic Regression (البته الگوریتم رگرسیون لوجستیک هم برای طبقه بندی چند کلاسی و هم برای طبقه بندی دودویی کاربرد دارد)

۲ – درخت تصمیم

۳ – جنگل تصادفی

۴ – بیز ساده – Naive Bayes

۵ – K نزدکیترین همسایه – K Nearest Neighbor

۶ – ماشین بردار پشتیبان – Support Vector Machine – SVM

۷ – پرسپترون – Perceptron

۸ – بوستینگ – Boosting