وبلاگ
رگرسیون لجستیک چیست؟ راهنمای کامل Logistic Regression
رگرسیون لجستیک یا Logistic Regression یکی از الگوریتمهای مهم و پرکاربرد در یادگیری ماشین است که عمدتاً برای مسائل طبقهبندی (Classification) استفاده میشود. این الگوریتم با استفاده از ویژگیهای ورودی، احتمال تعلق یک نمونه به یک کلاس را محاسبه میکند و سپس میتوان بر اساس یک آستانه مشخص، کلاس نهایی را تعیین کرد.
برای مثال، میتوان از رگرسیون لجستیک برای تشخیص اینکه یک ایمیل هرزنامه یا غیرهرزنامه است، پیشبینی اینکه یک مشتری احتمالاً سرویس خود را لغو میکند یا خیر و شناسایی اینکه یک تراکنش مشکوک یا عادی است استفاده کرد.
تعریف کوتاه: رگرسیون لجستیک یک الگوریتم یادگیری با ناظر است که معمولاً برای طبقهبندی استفاده میشود و با کمک تابع سیگموید، احتمال تعلق هر نمونه به یک کلاس را در بازه ۰ تا ۱ محاسبه میکند.
سرفصل محتوا:
رگرسیون لجستیک چیست؟
رگرسیون لجستیک یکی از الگوریتمهای یادگیری با ناظر (Supervised Learning) است. در یادگیری با ناظر، مدل با استفاده از دادههایی آموزش میبیند که برای آنها نتیجه یا برچسب مشخصی وجود دارد.
هدف Logistic Regression این است که با استفاده از متغیرهای مستقل، احتمال وقوع یک نتیجه مشخص را تخمین بزند. در سادهترین حالت، نتیجه شامل دو کلاس است؛ برای مثال:
- Spam / Not Spam
- Fraud / Normal
- Churn / No Churn
- Positive / Negative
- 1 / 0
- Yes / No
نکته مهم این است که خروجی اولیه مدل الزاماً یک برچسب قطعی مانند ۰ یا ۱ نیست. مدل ابتدا یک احتمال بین ۰ و ۱ تولید میکند و سپس با استفاده از یک Threshold میتوان این احتمال را به یک کلاس تبدیل کرد.
برای مثال اگر مدل احتمال 0.82 را برای Spam بودن یک ایمیل تولید کند و Threshold برابر 0.5 باشد، ایمیل بهعنوان Spam طبقهبندی خواهد شد.
چرا نام آن رگرسیون لجستیک است؟
یکی از سؤالهای رایج درباره این الگوریتم این است که اگر Logistic Regression برای Classification استفاده میشود، چرا نام آن Regression است؟
دلیل این نامگذاری به ساختار ریاضی مدل مربوط است. مدل ابتدا یک ترکیب خطی از ویژگیهای ورودی ایجاد میکند و سپس نتیجه را از طریق تابع Logistic یا Sigmoid به یک مقدار احتمال تبدیل میکند.
بنابراین اگرچه خروجی نهایی میتواند یک کلاس باشد، بخش مهمی از مدل برآورد یک مقدار احتمال و رابطه میان متغیرهای ورودی و آن احتمال است.
رگرسیون لجستیک چگونه کار میکند؟
فرایند Logistic Regression را میتوان به چند مرحله ساده تقسیم کرد:
- دریافت ویژگیهای ورودی
- محاسبه ترکیب وزنی ویژگیها
- عبور نتیجه از تابع Sigmoid
- تولید احتمال
- مقایسه احتمال با Threshold
- تعیین کلاس نهایی
ترکیب خطی ویژگیها
در ابتدا مدل ویژگیهای ورودی را با وزنهای مربوط به هر ویژگی ترکیب میکند. بهصورت ساده میتوان این بخش را چنین نمایش داد:
z = w₁x₁ + w₂x₂ + … + wₙxₙ + b
در این رابطه، xها ویژگیهای ورودی، wها وزنهای مدل و b مقدار Bias هستند.
تابع Sigmoid
مشکل اینجاست که مقدار z میتواند هر عددی از منفی بینهایت تا مثبت بینهایت باشد، در حالی که ما برای احتمال به مقداری بین ۰ و ۱ نیاز داریم.
برای حل این مسئله از تابع Sigmoid استفاده میشود:
σ(z) = 1 / (1 + e-z)
خروجی این تابع همیشه بین ۰ و ۱ قرار دارد و میتوان آن را بهعنوان احتمال تعلق نمونه به کلاس مثبت تفسیر کرد.
Threshold و تصمیم نهایی
فرض کنید مدل برای یک مشتری احتمال 0.73 را برای ریزش تولید کرده است.
اگر Threshold برابر 0.5 باشد، مدل مشتری را در کلاس «ریزش خواهد کرد» قرار میدهد.
اما Threshold همیشه الزاماً 0.5 نیست. در بعضی مسائل، بهخصوص زمانی که هزینه False Positive و False Negative متفاوت است، انتخاب Threshold مناسب میتواند اهمیت زیادی داشته باشد.
معادله رگرسیون لجستیک چیست؟
فرمول احتمال در Logistic Regression را میتوان به شکل زیر نوشت:
P(y=1|x) = 1 / (1 + e-(wᵀx+b))
در این رابطه:
- P(y=1|x) احتمال قرار گرفتن نمونه در کلاس مثبت است.
- x بردار ویژگیهای ورودی است.
- w وزنهای یادگرفتهشده توسط مدل هستند.
- b Bias یا مقدار ثابت مدل است.
بنابراین مدل ابتدا ترکیب خطی ویژگیها را محاسبه میکند و سپس Sigmoid آن را به احتمال تبدیل میکند.
یک مثال ساده از رگرسیون لجستیک
فرض کنید یک شرکت میخواهد پیشبینی کند آیا یک مشتری در ماه آینده اشتراک خود را لغو میکند یا خیر.
اطلاعاتی مانند موارد زیر در اختیار مدل قرار میگیرد:
- مدت زمان عضویت
- تعداد ورود به سیستم
- تعداد خریدها
- مبلغ پرداختی
- تعداد تماس با پشتیبانی
مدل با استفاده از دادههای گذشته آموزش میبیند؛ یعنی نمونههایی که مشخص است کدام مشتریان واقعاً ریزش کردهاند و کدام مشتریان باقی ماندهاند.
پس از آموزش، مدل ممکن است برای یک مشتری جدید احتمال 0.78 را برای Churn پیشبینی کند.
اگر Threshold برابر 0.5 باشد، این مشتری در گروه «احتمال ریزش بالا» قرار میگیرد.
در اینجا Logistic Regression بهجای اینکه صرفاً یک برچسب بدون توضیح ارائه دهد، یک احتمال تولید میکند که میتواند برای تصمیمگیری نیز مفید باشد.
تفاوت رگرسیون لجستیک و رگرسیون خطی
رگرسیون خطی و رگرسیون لجستیک هر دو از روشهای یادگیری با ناظر هستند، اما برای مسائل متفاوتی استفاده میشوند.
| ویژگی | رگرسیون خطی | رگرسیون لجستیک |
|---|---|---|
| هدف اصلی | پیشبینی مقدار عددی | طبقهبندی و برآورد احتمال |
| نوع خروجی | مقدار پیوسته | احتمال بین ۰ و ۱ |
| مثال | پیشبینی قیمت خانه | پیشبینی ریزش مشتری |
| تابع اصلی | رابطه خطی | Sigmoid |
| Classification | بهصورت مستقیم مناسب نیست | کاربرد اصلی |
برای مثال، اگر بخواهیم قیمت خانه را پیشبینی کنیم، Linear Regression انتخاب طبیعیتری است؛ اما اگر بخواهیم تشخیص دهیم آیا یک تراکنش تقلبی است یا خیر، Logistic Regression میتواند گزینه مناسبی باشد.

رگرسیون لجستیک برای چه مسائلی استفاده میشود؟
تشخیص Spam
یکی از مثالهای کلاسیک، تشخیص هرزنامه بودن ایمیل است. مدل میتواند با استفاده از ویژگیهای متن و سایر مشخصات ایمیل، احتمال Spam بودن آن را تخمین بزند.
پیشبینی Churn
شرکتهای اشتراکی میتوانند از Logistic Regression برای پیشبینی احتمال لغو سرویس توسط مشتری استفاده کنند.
تشخیص تقلب
در سیستمهای مالی، ویژگیهای مختلف تراکنش میتوانند برای تخمین احتمال مشکوک بودن یک تراکنش استفاده شوند.
کاربردهای پزشکی
در پژوهشهای پزشکی و سلامت، Logistic Regression میتواند برای مدلسازی احتمال وقوع یک پیامد دودویی بر اساس متغیرهای مختلف مورد استفاده قرار گیرد.
برای مثال، میتوان از این روش برای بررسی ارتباط میان برخی ویژگیهای بیمار و احتمال وقوع یک پیامد مشخص استفاده کرد. با این حال، در کاربردهای پزشکی نتیجه مدل باید با روشهای آماری و دانش تخصصی حوزه اعتبارسنجی شود.
بازاریابی
یک شرکت میتواند احتمال خرید یک محصول توسط کاربر را بر اساس سابقه خرید، تعامل با سایت و سایر ویژگیهای رفتاری تخمین بزند.
Binary و Multi-Class Logistic Regression
رگرسیون لجستیک فقط محدود به سناریوی «بله یا خیر» نیست.
Binary Classification
در Binary Classification فقط دو کلاس داریم؛ برای مثال:
- Spam / Not Spam
- Fraud / Normal
- Churn / No Churn
Multi-Class Classification
در مسائل چندکلاسه، هدف انتخاب یکی از چند کلاس مختلف است. برای مثال، میتوان بخشی از مسائل طبقهبندی چندکلاسه را با روشهای مبتنی بر Logistic Regression مانند One-vs-Rest یا رویکردهای چندکلاسه مناسب پیادهسازی کرد.
رگرسیون لجستیک چگونه آموزش داده میشود؟
مدل باید وزنهای مناسبی برای ویژگیها پیدا کند تا بتواند احتمال خروجی را با برچسب واقعی دادههای آموزشی هماهنگ کند.
یکی از روشهای کلاسیک برای آموزش Logistic Regression، Maximum Likelihood Estimation یا برآورد حداکثر درستنمایی است.
ایده اصلی این است که وزنهای مدل بهگونهای انتخاب شوند که احتمال مشاهده برچسبهای واقعی در داده آموزشی بیشینه شود.
در پیادهسازیهای عملی، معمولاً مسئله به شکل کمینهسازی یک تابع Loss مانند Log Loss یا Cross-Entropy Loss بیان میشود.
چگونه عملکرد Logistic Regression را ارزیابی کنیم؟
بعد از آموزش مدل، صرفاً مشاهده چند پیشبینی کافی نیست. باید بررسی کنیم مدل روی دادههای دیدهنشده چقدر خوب عمل میکند.
Accuracy
Accuracy نسبت پیشبینیهای صحیح به کل پیشبینیهاست.
این معیار زمانی مناسبتر است که کلاسها تقریباً متوازن باشند. در دادههای نامتوازن، Accuracy بهتنهایی میتواند تصویر گمراهکنندهای از عملکرد مدل ارائه دهد.
Precision
Precision نشان میدهد از میان نمونههایی که مدل بهعنوان کلاس مثبت پیشبینی کرده است، چه نسبتی واقعاً مثبت بودهاند.
Recall
Recall نشان میدهد مدل چه نسبتی از نمونههای مثبت واقعی را شناسایی کرده است.
F1 Score
F1 Score ترکیبی از Precision و Recall است و زمانی که هر دو معیار اهمیت دارند، میتواند معیار مفیدی باشد.
ROC-AUC
ROC-AUC توانایی مدل در تفکیک دو کلاس را در طیف مختلفی از Thresholdها ارزیابی میکند و در مسائل Classification یکی از معیارهای رایج است.
مزایای رگرسیون لجستیک
- سادگی: ساختار مدل نسبتاً ساده و قابل درک است.
- سرعت: در بسیاری از مسائل، آموزش آن نسبتاً سریع است.
- تفسیرپذیری: ضرایب مدل میتوانند اطلاعات مفیدی درباره رابطه ویژگیها با خروجی ارائه کنند.
- خروجی احتمالی: مدل میتواند احتمال تعلق نمونه به کلاس مثبت را تولید کند.
- Baseline مناسب: Logistic Regression در بسیاری از پروژههای Classification میتواند یک مدل پایه خوب باشد.
- مناسب برای دادههای با ابعاد بالا: با تنظیمات مناسب، در برخی مسائل با تعداد ویژگیهای زیاد نیز کاربرد دارد.
محدودیتهای رگرسیون لجستیک
- مرز تصمیم خطی: Logistic Regression در شکل استاندارد خود مرز تصمیم خطی ایجاد میکند و برای روابط بسیار پیچیده ممکن است مناسب نباشد.
- وابستگی به کیفیت ویژگیها: Feature Engineering و انتخاب ویژگی میتوانند تأثیر زیادی بر عملکرد مدل داشته باشند.
- حساسیت به همخطی: وجود ویژگیهای بسیار همبسته میتواند تفسیر ضرایب را دشوار کند.
- عدم توازن کلاسها: در دادههای شدیداً نامتوازن، استفاده از Accuracy بهتنهایی مناسب نیست و باید معیارها و روشهای مناسبتری در نظر گرفته شوند.
- روابط پیچیده: اگر رابطه واقعی میان ویژگیها و خروجی بسیار غیرخطی باشد، ممکن است مدلهای انعطافپذیرتر عملکرد بهتری داشته باشند.
رگرسیون لجستیک در Python
یکی از سادهترین روشها برای پیادهسازی Logistic Regression در Python استفاده از کتابخانه scikit-learn است.
برای مثال، ساختار کلی استفاده از مدل میتواند به شکل زیر باشد:
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
y_prob = model.predict_proba(X_test)[:, 1]
در این مثال، fit() مدل را با دادههای آموزشی آموزش میدهد، predict() کلاس پیشبینیشده را تولید میکند و predict_proba() احتمال تعلق نمونه به کلاسها را برمیگرداند.
در یک پروژه واقعی، پیش از آموزش مدل باید مراحل دیگری مانند پاکسازی داده، تبدیل متغیرهای دستهای، مدیریت دادههای گمشده، Scaling در صورت نیاز، تقسیم داده به Train و Test و انتخاب معیار مناسب ارزیابی نیز انجام شود.
چه زمانی از Logistic Regression استفاده کنیم؟
رگرسیون لجستیک میتواند انتخاب مناسبی باشد زمانی که:
- مسئله شما Classification است.
- به یک مدل سریع و نسبتاً ساده نیاز دارید.
- تفسیرپذیری مدل اهمیت دارد.
- میخواهید یک Baseline مناسب برای مقایسه با مدلهای پیچیدهتر داشته باشید.
- احتمال خروجی برای تصمیمگیری اهمیت دارد.
- مرز تصمیم مسئله به اندازهای پیچیده نیست که نیاز به مدلهای غیرخطیتر داشته باشد.
در مقابل، اگر رابطه میان ویژگیها و خروجی بسیار پیچیده باشد، میتوان مدلهایی مانند Decision Tree، Random Forest، Gradient Boosting یا روشهای دیگر را نیز بررسی کرد.
یادگیری Machine Learning را از یک الگوریتم واقعی شروع کنید
اگر میخواهید Logistic Regression را فقط بهصورت تئوری یاد نگیرید و آن را در پروژههای واقعی اجرا کنید، مسیر یادگیری Machine Learning میتواند قدم بعدی شما باشد.
سؤالات متداول درباره رگرسیون لجستیک
رگرسیون لجستیک چیست؟
رگرسیون لجستیک یک الگوریتم یادگیری با ناظر است که عمدتاً برای مسائل Classification استفاده میشود. این مدل با استفاده از ویژگیهای ورودی، احتمال تعلق یک نمونه به کلاس مثبت را محاسبه میکند و سپس میتوان با استفاده از Threshold کلاس نهایی را تعیین کرد.
چرا با وجود نام Regression از Logistic Regression برای Classification استفاده میشود؟
زیرا ساختار مدل ابتدا یک ترکیب خطی از ویژگیها را محاسبه میکند و سپس آن را با تابع Sigmoid به یک احتمال تبدیل میکند. خروجی نهایی میتواند برای Classification استفاده شود.
تابع Sigmoid در رگرسیون لجستیک چیست؟
Sigmoid تابعی است که یک مقدار عددی را به بازه ۰ تا ۱ نگاشت میکند. به همین دلیل از آن در Logistic Regression برای تبدیل خروجی مدل به یک مقدار قابل تفسیر بهعنوان احتمال استفاده میشود.
تفاوت رگرسیون خطی و رگرسیون لجستیک چیست؟
Linear Regression برای پیشبینی مقادیر عددی پیوسته استفاده میشود، در حالی که Logistic Regression عمدتاً برای Classification و برآورد احتمال تعلق نمونه به یک کلاس به کار میرود.
رگرسیون لجستیک برای چه مسائلی مناسب است؟
تشخیص Spam، پیشبینی Churn، تشخیص تقلب، برخی مسائل پزشکی و بسیاری از مسائل Classification از کاربردهای رایج Logistic Regression هستند.
آیا Logistic Regression فقط برای دو کلاس استفاده میشود؟
خیر. اگرچه Logistic Regression بهصورت کلاسیک برای Binary Classification شناخته میشود، روشهای چندکلاسه نیز برای استفاده از این خانواده مدلها وجود دارند.
چگونه عملکرد رگرسیون لجستیک را ارزیابی کنیم؟
بسته به مسئله میتوان از Accuracy، Precision، Recall، F1 Score، ROC-AUC و Confusion Matrix استفاده کرد. در دادههای نامتوازن، بهتر است به یک معیار مانند Accuracy اکتفا نشود.
آیا رگرسیون لجستیک برای دادههای غیرخطی مناسب است؟
Logistic Regression استاندارد یک مرز تصمیم خطی ایجاد میکند. بنابراین اگر رابطه میان ویژگیها و کلاسها بسیار غیرخطی باشد، ممکن است مدلهای دیگر عملکرد بهتری داشته باشند.
رگرسیون لجستیک در Python چگونه پیادهسازی میشود؟
یکی از رایجترین روشها استفاده از کلاس LogisticRegression در کتابخانه scikit-learn است. پس از آمادهسازی داده میتوان مدل را آموزش داد و با متدهای predict() و predict_proba() خروجی و احتمال پیشبینی را دریافت کرد.
جمعبندی
رگرسیون لجستیک یکی از الگوریتمهای کلاسیک و مهم یادگیری ماشین است که با وجود نام Regression، عمدتاً برای مسائل Classification استفاده میشود.
ایده اصلی آن ساده است: مدل ویژگیهای ورودی را با وزنهای مختلف ترکیب میکند، نتیجه را از تابع Sigmoid عبور میدهد و یک احتمال بین ۰ و ۱ تولید میکند. سپس میتوان با استفاده از Threshold این احتمال را به یک کلاس تبدیل کرد.
سادگی، سرعت، تفسیرپذیری و توانایی تولید احتمال باعث شده است Logistic Regression همچنان یک انتخاب مهم برای بسیاری از پروژههای Machine Learning و یک Baseline قدرتمند برای مقایسه مدلهای پیچیدهتر باشد.
با این حال، این الگوریتم محدودیتهایی نیز دارد و زمانی که رابطه میان ویژگیها و خروجی بسیار پیچیده یا غیرخطی باشد، ممکن است روشهای دیگری عملکرد بهتری ارائه دهند.
از یادگیری الگوریتمها به ساخت مدلهای واقعی Machine Learning برسید
اگر میخواهید Logistic Regression و سایر الگوریتمهای یادگیری ماشین را در کنار پروژههای واقعی یاد بگیرید، مسیر یادگیری Machine Learning میتواند قدم بعدی شما باشد.