نباید گول نام این رگرسیون را بخورید! این الگوریتم مربوط به کلاس‌بندی است و نه رگرسیون. این الگوریتم برای برآورد مقادیر گسسته (مقادیر باینری مانند 1/0، آری/خیر، درست/نادرست) بر اساس مجموعه‌ای از متغیر (های) وابسته استفاده می‌شود. به بیان ساده‌تر این الگوریتم احتمال رخداد یک رویداد را بر حسب گنجاندن داده‌ها در یک تابع لجستیکی پیش‌بینی می‌کند. از این‌رو به نام رگرسیون logit نیز شناخته می‌شود. از آنجا که این الگوریتم، احتمال را پیش‌بینی می‌کند، مقادیر خروجی آن بین 0 تا 1 هستند.

فهرست مطالب این نوشته

این الگوریتم را نیز با یک مثال ساده توضیح می‌دهیم.

فرض کنیم دوستی یک پازل به شما می‌دهد تا حل کنید. تنها دو سناریو متصور است: یا شما آن را حل می‌کنید یا حل نمی‌کنید. حال فرض کنید که طیف گسترده‌ای از پازل و معماها به شما داده می‌شود تا مشخص شود در کدام یک بهتر عمل می‌کنید. خروجی این بررسی ممکن است چیزی شبیه این باشد: اگر یک مسئله مثلثاتی پایه دهمی به شما داده بشود شما به احتمال 70% آن را حل می‌کنید. از سوی دیگر اگر سؤال تاریخ پایه پنجمی به شما داده شود احتمال دریافت پاسخ تنها 30% است. این آن چیزی است که رگرسیون لجستیک به ما ارائه می‌دهد.

اگر از دید ریاضیاتی به این الگوریتم نگاه کنیم خروجی به صورت یک ترکیب خطی از متغیرهای پیش‌بین مدل‌سازی شده است.

odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence

ln(odds) = ln(p/(1-p))

logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3….+bkXk

 

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

اینک ممکن است بپرسید که چرا از لگاریتم استفاده کرده‌ایم؟ هدف، ساده‌سازی بوده است چون این تابع یکی از بهترین روش‌های ریاضیاتی برای شبیه‌سازی یک تابع گام است. می‌توان در مورد جزییات بیشتر توضیح داد اما در حوزه این مقاله نمی‌گنجد.

کد پایتون

#Import Library

from sklearn.linear_model import LogisticRegression

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create logistic regression object

model = LogisticRegression()

# Train the model using the training sets and check score

model.fit(X, y)

model.score(X, y)

#Equation coefficient and Intercept

print(‘Coefficient:
‘, model.coef_)

print(‘Intercept:
‘, model.intercept_)

#Predict Output

predicted= model.predict(x_test)

کد R

x <- cbind(x_train,y_train)

# Train the model using the training sets and check score

logistic <- glm(y_train ~., data = x,family=’binomial’)

summary(logistic)

#Predict Output

predicted= predict(logistic,x_test)

توضیحات بیشتر

مراحل مختلف زیادی وجود دارند که باید امتحان شوند تا این مدل بهبود یابد:

  • گنجاندن متغیرهای تعاملی
  • حذف ویژگی‌ها
  • تکنیک‌های رگوله سازی
  • استفاده از یک مدل غیرخطی

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

بر اساس رای ۶ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

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

یک نظر ثبت شده در “مهم‌ترین الگوریتم‌های یادگیری ماشین (به همراه کدهای پایتون و R) — بخش سوم: رگرسیون لجستیک

  • سلام من در مورد رگرسون لبه (ridge regression) در یادگیری ماشین و نسخه کرنلی آن میخواستم بدونم ولی در سایت های فارسی هیچ نامی ازین مورد برده نشده

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد.

مشاهده بیشتر