ماشین لرنینگ

دوره آموزش ماشین لرنینگ – قسمت نهم

آموزش طبقه بندی (Classification) با استفاده از رگرسیون لجستیک | مرحله به مرحله و با مثال

در این قسمت معرفی و پیاده سازی یکی دیگر از انواع مدل های با ناظر (Supervised machine learning) یعنی طبقه بندی (Classification) و الگوریتم رگرسیون لجستیک می پردازیم.
هدف از اجرای الگوریتم های Classification رده بندی با طبقه بندی داده ها است.

الگوریتم های ماشین لرنینگ
الگوریتم های ماشین لرنینگ

برای اینکه بیشتر با این موضوع آشنا شوید، مثال های زیر را در نظر بگیرید:

  • سیستم تشخیص اسپم بودن یا نبودن یک ایمیل
  • خوش خیم یا بدخیم بودن یک تومور

در تمام این مثال ها ساختار و خروجی سیستم به گونه ای است که یک جواب صفر یا یک دارد.

y∈{0,1}

که به طور معمول، 0 به معنی جواب منفی و 1 به معنی جواب مثبت است.

برای مثال در مورد موضوع تشخیص تومور، جواب تست می تواند به صورت زیر در نظر گرفته شود:

0: “Negative Class”

1: “Positive Class”

در این مثال ها ما طبقه بندی را با دو متغیر انجام می دهیم که به آن binary classification problem نیز گفته می شود.

مشابه با رگرسیون خطی ساده و چندمتغیره، در مبحث طبقه بندی (Classification) نیز اگر مجموعه جواب مسئله دارای عضوهای بیشتر از 0 و 1 باشد به آن multiclass classification problem گفته می شود.

مثال 1. آموزش طبقه بندی (Classification)

مجموعه داده ای داریم که شامل مشخصات تعدادی تومور نمونه برداری شده است. این دیتاست دارای دو ویژگی اندازه تومور و بدخیم بودن یا نبودن آن است.

مفهوم طبقه‌ بندی (classification) و الگوریتم های طبقه‌ بندی
مفهوم طبقه‌ بندی (classification) و الگوریتم های طبقه‌ بندی

 

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

به این ترتیب آیا ما می توانیم از رگرسیون خطی مثل پیشبینی قیمت خانه، برای پیش بینی بدخیم بودن یا نبودن یک تومور هم استفاده کنیم؟

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

به صورت دقیق تر، تمام آیتم هایی که بیشتر از 0.5 هستند را به عنوان جواب مثبت و یک در نظر بگیریم و به همین ترتیب جواب های کمتر از 0.5 را به عنوان جواب های منفی لحاظ کنیم.

طبقه بندی (Classification) چیست؟
طبقه بندی (Classification) چیست؟

 

یادآوری: فرضیه (hypothesis) ما در رگرسیون خطی به طور کلی به صورت زیر است.

فرضیه رگرسیون خطی
فرضیه رگرسیون خطی

خب، تا اینجا که ظاهرا همه چیز به خوبی پیش می رود. مقادیر سمت راست حد آستانه (threshold) به عنوان تومورهای بدخیم و آیتم های کمتر از حدآستانه، به عنوان تومورهای غیربدخیم به خوبی از هم تفکیک شده اند.

حالا اگر مقادیر دیتاست به صورت زیر تغییر کند، چه می شود؟؟؟

مثلا تومورهای نمونه برداری شده از نظر اندازه با هم تفاوت زیادی داشته باشند.

مثال 2. آموزش طبقه بندی (Classification)

آموزش دسته بندی ( Classification )
آموزش دسته بندی ( Classification )

 

بر اساس روش مطرح شده باز هم خط رگرسیون را رسم می کنیم.

دسته بندی، طبقه بندی، کلاس بندی Classification
دسته بندی، طبقه بندی، کلاس بندی Classification

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

پس استفاده از رگرسیون خطی برای مسایل مربوط به طبقه بندی داده ها (Classification) راهکار مناسبی نیست. (اگرچه ممکن است در برخی موارد با توجه به مقادیر دیتاست، مشابه آنچه در مثال اول اتفاق افتاد، رگرسیون خطی نتیجه مناسبی در طبقه بندی داده ها ارایه دهد.)

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

راه حل، استفاه از رگرسیون لجستیک (Logistic regression) است.

رگرسیون لجستیک یک راهکار مناسب برای مسایل طبقه بندی (Classification) است. مقادیر این مساله به صورت گسسته هستند (discrete values) و نکته مهم اینکه خروجی لجستیک رگرشن محدود به 0 و 1 است.

آموزش تحلیل رگرسیون لجستیک
آموزش تحلیل رگرسیون لجستیک

تابع فرضیه ما در رگرسیون لجستیک دارای شکل کلی زیر است، که به آن تابع سیگومید (sigmoid function) یا تابع لجستیک (logistic function) می گوییم.

تابع فرضیه در رگرسیون لجستیک
تابع فرضیه در رگرسیون لجستیک

فرمول رگرسیون لجستیک

رگرسیون لجستیک دارای فرمول کلی زیر است.

فرمول رگرسیون لجستیک
فرمول رگرسیون لجستیک

در این فرمول e نماد عدداویلر و دارای مقدار ثابت 2.718281828459 است.

حرف z نیز به معنی همان تابع رگرسیون خطی است. در واقع خواهیم داشت:

توضیح تابع سیگومئید
توضیح تابع سیگموئید

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

رگرسیون لجستیکبه معنی اگر در سیستم بررسی بدخیم بودن تومور که در آن عدد 1 به معنی بدخیم بودن و 0 به معنی بدخیمنبودن است، اگر خروجی تابع در نتیجه بررسی یک تومور 0.7 بود، یعنی به احتمال 70% تومور موردنظر یک تومور بدخیم است.

این تعریف را در زبان ریاضی به صورت زیر نشان می دهیم:

رگرسیون لجستیک - آپارات

عبارت بالا را اینگونه می خوانیم:

احتمال اینکه y به ازای x های داده شده و بر حسب پارامتر تتا، برابر با 1 باشد.

آموزش نحوه انجام و تحلیل رگرسیون لجستیک

و براساس مثال بدخیم بودن یا نبودن تومور:

This is the probability that y is equal to one.
Given x, given that my patient has features x, so given my patient has a particular tumor size represented by my features x.
And this probability is parameterized by theta.

مثال پیاده سازی رگرسیون لجستیک با استفاده از sklearn بر روی دیتاست Iris

 
### --- پیاده سازی رگرسیون لجستیک بر روی دیتاست Iris --- start
### --- Running logistic regression on the Iris dataset --- start

import pandas as pd
iris = pd.read_csv('iris.csv')

iris.head()

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

y = iris.variety
features = ['sepal.length','sepal.width','petal.length','petal.width']
X = iris[features]

train_X, val_X, train_y, val_y = train_test_split(X, y, test_size=0.4, random_state=1)

### --- رگرسیون لجستیک | Logistic regression
dt_model = LogisticRegression()
dt_model.fit(train_X, train_y)

val_predictions = dt_model.predict(val_X)

from sklearn import metrics
print(metrics.accuracy_score(val_y, val_predictions))

### --- Running logistic regression on the Iris dataset --- end
### --- پیاده سازی رگرسیون لجستیک بر روی دیتاست Iris --- end

 

فایل های مرتبط:

تمام کدهای مربوط به این قسمت و همچنین فایل iris.csv از لینک زیر قابل دسترس هستند:

https://github.com/alifallahi/MachineLearning_Warmup/tree/master/Session9-logistic_regression

علی فلاحی

علاقه مند به ماشین لرنینگ و ریکامندر سیستم.

نوشته های مشابه

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

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


The reCAPTCHA verification period has expired. Please reload the page.

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