آموزش رگرسیون لجستیک در یادگیری ماشین با پایتون

رگرسیون لجستیک در یادگیری ماشین یکی از الگوریتم‌های یادگیری نظارت‌شده در دسته‌بندی است که برای پیش‌بینی احتمال وقوع یک متغیر هدف به کار می‌رود. ماهیت متغیر هدف یا وابسته در این روش، دووجهی (Dichotomous) است. این یعنی تنها دو کلاس یا حالت ممکن برای آن وجود دارد.

به‌بیان ساده، متغیر وابسته دارای دو مقدار ممکن است. مقدار ۱ معمولاً به معنای «موفقیت» یا «بله» و مقدار ۰ به معنای «شکست» یا «خیر» در نظر گرفته می‌شود.

از دیدگاه ریاضی، مدل رگرسیون لجستیک احتمال وقوع رویداد P(Y=1) را به‌عنوان تابعی از X پیش‌بینی می‌کند. این الگوریتم یکی از ساده‌ترین روش‌های یادگیری ماشین (Machine Learning) است که می‌توان از آن در مسائل مختلف دسته‌بندی مانند تشخیص هرزنامه (Spam Detection)، پیش‌بینی دیابت، شناسایی سرطان و موارد مشابه استفاده کرد.

انواع رگرسیون لجستیک

در حالت کلی، زمانی که از رگرسیون لجستیک صحبت می‌شود، منظور رگرسیون لجستیک دودویی (Binary Logistic Regression) است که در آن متغیر هدف دارای دو مقدار ممکن است. با این حال، انواع دیگری از متغیرهای هدف نیز وجود دارند که می‌توان آن‌ها را با استفاده از این الگوریتم پیش‌بینی کرد. بر اساس تعداد دسته‌های موجود در متغیر هدف، رگرسیون لجستیک را می‌توان به انواع زیر تقسیم کرد:

دودویی یا دوحالتی (Binary or Binomial)

در این نوع دسته‌بندی، متغیر وابسته تنها دو نوع مقدار ممکن دارد: ۱ یا ۰. برای مثال، این متغیرها می‌توانند نشان‌دهنده موفقیت یا شکست، بله یا خیر، پیروزی یا شکست و موارد مشابه باشند.

چند‌گانه (Multinomial)

در این نوع دسته‌بندی، متغیر وابسته می‌تواند دارای سه یا چند نوع مقدار نامرتبط باشد؛ به این معنا که بین دسته‌ها هیچ ترتیب یا معنای عددی وجود ندارد. برای مثال، این متغیرها ممکن است نمایانگر “نوع A”، “نوع B” یا “نوع C” باشند.

ترتیبی (Ordinal)

در این نوع دسته‌بندی، متغیر وابسته می‌تواند دارای سه یا چند مقدار مرتب‌شده باشد که دارای معنا و اهمیت عددی هستند. برای مثال، این متغیرها ممکن است شامل دسته‌هایی مانند “ضعیف”، “خوب”، “خیلی خوب” و “عالی” باشند که هرکدام می‌توانند نمره‌ای مانند ۰، ۱، ۲ و ۳ داشته باشند.

فرضیات رگرسیون لجستیک

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

  • در رگرسیون لجستیک دودویی (Binary Logistic Regression)، متغیر هدف باید به‌صورت دودویی باشد. به‌عبارت دیگر، فقط دو مقدار ممکن مانند ۱ و ۰ را می‌پذیرد. در این حالت، مقدار ۱ به‌عنوان نتیجه مطلوب (موفقیت یا بله) در نظر گرفته می‌شود.

  • نباید بین متغیرهای مستقل هم‌خطی چندگانه (Multicollinearity) وجود داشته باشد. این یعنی متغیرهای مستقل باید از یکدیگر مستقل باشند و همبستگی زیادی با هم نداشته باشند.

  • در مدل باید از متغیرهای معنادار و مرتبط استفاده شود. متغیرهایی که هیچ رابطه‌ای با متغیر هدف ندارند، باید حذف شوند.

  • برای رگرسیون لجستیک، باید حجم نمونه (Sample Size) کافی و بزرگ در نظر گرفته شود. نمونه‌های بیشتر باعث افزایش دقت مدل و کاهش خطای تخمین خواهند شد.

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

ساده‌ترین نوع رگرسیون لجستیک، رگرسیون لجستیک دودویی یا دوجمله‌ای (Binomial) است. در این مدل، متغیر هدف یا وابسته تنها می‌تواند دو مقدار ممکن داشته باشد: ۱ یا ۰. این الگوریتم به ما اجازه می‌دهد تا رابطه‌ای بین چندین متغیر پیش‌بین (Predictor Variables) و یک متغیر هدف دودویی ایجاد کنیم.

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

در اینجا تابع لجستیک یا سیگموید (Sigmoid Function) است که به‌صورت زیر تعریف می‌شود:

نمودار منحنی سیگموید به ما کمک می‌کند تا درک بهتری از رفتار تابع داشته باشیم. همان‌طور که در شکل مربوطه مشخص است، مقدار خروجی این تابع همواره بین ۰ و ۱ قرار دارد و محور y را در مقدار ۰٫۵ قطع می‌کند.

نمودار منحنی سیگموید

خروجی تابع فرضیه (Hypothesis Function) را می‌توان به‌صورت یک احتمال تفسیر کرد. اگر مقدار خروجی بین ۰ و ۱ باشد، بیانگر احتمال تعلق به کلاس مثبت است. در پیاده‌سازی ما، اگر خروجی دقیقاً برابر یا بزرگ‌تر از ۰٫۵ باشد، آن را مثبت در نظر می‌گیریم؛ در غیر این صورت، خروجی منفی تلقی می‌شود.

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

اکنون که تابع هزینه (Loss Function) را تعریف کردیم، هدف اصلی ما کمینه‌سازی مقدار این تابع است. برای دستیابی به این هدف، باید وزن‌ها (Weights) یا ضرایب مدل را به‌درستی تنظیم کنیم. این تنظیم به معنای افزایش یا کاهش تدریجی وزن‌ها با هدف بهبود دقت مدل است.

معادله زیر که مربوط به روش گرادیان نزولی (Gradient Descent) است، نشان می‌دهد که با تغییر پارامترها، مقدار تابع هزینه چگونه تغییر خواهد کرد:

پیاده‌سازی مدل رگرسیون لجستیک دودویی در پایتون

در این بخش، مفهوم رگرسیون لجستیک دودویی را با استفاده از زبان پایتون پیاده‌سازی می‌کنیم. برای این منظور، از دیتاست چند‌متغیره معروفی به نام iris استفاده می‌کنیم. این مجموعه داده شامل سه کلاس است که هر کدام ۵۰ نمونه دارند. اما ما تنها از دو ویژگی اول آن استفاده می‌کنیم. هر کلاس نمایانگر نوعی از گل زنبق (Iris) است.

ابتدا باید کتابخانه‌های موردنیاز را وارد کنیم:

سپس دیتاست iris را بارگذاری کرده و متغیرهای ویژگی و هدف را مشخص می‌کنیم:
در این مرحله، داده‌های آموزشی را به‌صورت نمودار ترسیم می‌کنیم:
داده‌های آموزشی آیریس

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

اکنون، وزن‌ها را به صورت زیر مقداردهی اولیه کنید:

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

در مرحله بعد، می‌توانیم مدل را ارزیابی کرده و آن را به صورت زیر رسم کنیم:

ارزیابی مدل

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

مدل رگرسیون لجستیک چندگانه

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

پیاده‌سازی مدل رگرسیون لجستیک چندگانه در پایتون

در این بخش، مدل چندگانه رگرسیون لجستیک را با استفاده از زبان پایتون پیاده‌سازی می‌کنیم. برای این منظور، از مجموعه داده‌ای به نام digits که در کتابخانه sklearn موجود است استفاده خواهیم کرد. این دیتاست شامل تصاویر دیجیتال عددی (رقمی) است.

در ابتدا باید کتابخانه‌های لازم را بارگذاری کنیم:

سپس دیتاست digits را بارگذاری می‌کنیم:
در این مرحله، ویژگی‌ها (X) و متغیر هدف (y) را تعریف می‌کنیم:
با استفاده از کد زیر، داده‌ها را به دو بخش آموزشی و آزمایشی تقسیم می‌کنیم:
اکنون یک شیء از رگرسیون لجستیک به شرح زیر ایجاد کنید:
مدل را با استفاده از داده‌های آموزشی آموزش می‌دهیم:
سپس با استفاده از داده‌های آزمون، پیش‌بینی انجام می‌دهیم:
در نهایت، دقت مدل را محاسبه و چاپ می‌کنیم:

خروجی

از خروجی بالا می‌توانیم ببینیم که دقت مدل ما حدود ۹۶ درصد است.

5/5 - (1 امتیاز)

راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.

دوره صفر تا صد آموزش بین المللی لینوکس
  • انتشار: ۳۱ مرداد ۱۴۰۴

دسته بندی موضوعات

آخرین محصولات فروشگاه

مشاهده همه

نظرات

بازخوردهای خود را برای ما ارسال کنید