رگرسیون چیست؟ تمام آنچه درباره انواع رگرسیون باید بدانید

مفهوم رگرسیون چیست

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

. . . .

رگرسیون چیست؟

به‌عنوان “Hello World” در یادگیری ماشین (منظور اولین و ساده ترین برنامه برای شروع برنامه نویسی است)، تحلیل رگرسیون یک تکنیک ساده یادگیری نظارتی برای یافتن بهترین خط روند (Trendline) برای تحلیل و توصیف مجموعه‌داده است.

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

مفهوم رگرسيون به زبان ساده

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

فرض کنید سال 2015 است و دوباره به دبیرستان برگشته‌اید. سال آخر، تیتر خبری نظرتان را به بیت‌کوین جلب می‌کند. باتوجه‌به میل طبیعی‌تان برای دنبال‌کردن موضوعات جدید و احتمالاً پول‌ساز، درباره امید و آرزوهایتان در زمینه رمزنگاری (Cryptocurrency) و سودآوری آن با خانواده صحبت می‌کنید. ولی قبل از اینکه فرصتی داشته باشید تا روی اولین بیت‌کوینتان در Coinbase پیشنهاد بگذارید، پدرتان مداخله کرده و اصرار دارد تا قبل از اینکه روی پس‌اندازهایتان ریسک کنید، یک معامله کاغذی را تجربه کنید. “معامله کاغذی” (Paper Trading) استفاده از سرمایه‌های شبیه‌سازی‌شده برای خریدوفروش یا سرمایه‌گذاری، بدون درگیرکردن پول واقعی است.

دیتاست مثال رگرسیون خطی

پس در طی بیست و چهار ماه آینده، ارزش بیت‌کوین را دنبال می‌کنید و ارزش آن را در بازه‌های منظمی می‌نویسید. همچنین تعداد روزهای گذشته از زمانی که معامله کاغذی را آغاز کردید، ثبت می‌کنید. هرگز فکر نمی‌کردید که پس از دو سال همچنان مشغول معامله کاغذی باشید، ولی متأسفانه، هرگز فرصتی برای ورود به بازار رمزنگاری نیافتید. طبق پیشنهاد پدرتان، منتظر ماندید تا ارزش بیت‌کوین به میزانی که قادر به خرید آن باشید کاهش پیدا کند. ولی در عوض، ارزش بیت‌کوین رشد زیادی می‌کند.

بااین‌حال، امید به اینکه یک روز صاحب بیت‌کوین بشوید را از دست نمی‌دهید. برای کمک به تصمیم اینکه آیا برای سقوط ارزش بیت‌کوین صبر می‌کنید یا یک روش سرمایه‌گذاری جایگزین پیدا می‌کنید، به سراغ تحلیل آماری می‌روید. ابتدا برای استفاده از نمودار پراکندگی، دستتان را داخل جعبه ابزار می‌برید. با داشتن نمودار پراکندگی خالی در دستانتان، مختصات x و y از مجموعه‌داده را به نمودار می‌دهید و ارزش بیت‌کوین را از 2015 تا 2017 رسم می‌کنید. بااین‌حال، به‌جای استفاده از تمام ستون‌های جدول، ستون دوم (قیمت بیت‌کوین) و سوم (تعداد روزهای گذشته) را برای ساخت مدل و پرکردن نمودار پراکندگی (در شکل زیر نمایش‌داده‌شده) انتخاب می‌کنید. همان‌طور که می‌دانیم، مقادیر عددی (موجود در ستون دوم و سوم) برای واردکردن به نمودار پراکندگی راحت‌تر هستند و نیازمند به هیچ تبدیل خاص یا رمزگذاری one-hot نیست. همین‌طور، ستون‌های اول و سوم هر دو متغیر زمان هستند و ستون سوم به‌تنهایی کافی است.

نمودار پراکندگی مثال رگرسیون چیست

ازآنجایی‌که هدف، پیش‌بینی ارزش بیت‌کوین در آینده است، محور y متغیر وابسته را نمایش می‌دهد که “قیمت بیت‌کوین” است. در این حالت، متغیر مستقل (X)، زمان است. در نتیجه “تعداد روزهای گذشته” بر روی محور x رسم می‌شود.

پس از رسم مقادیر X و y بر روی نمودار پراکندگی، یک‌روند به شکل یک منحنی قابل‌مشاهده است که از چپ به راست صعود می‌کند – با رشدی شدید بین روزهای 604 و 736. باتوجه‌به مسیر صعودی (بالارونده) منحنی، شاید زمان آن رسیده که از فکر افت قیمت، خارج شوید.

بااین‌حال، ناگهان ایده‌ای به ذهنتان می‌رسد که اگر به‌جای انتظار برای افت ارزش بیت‌کوین به حدی که توان خرید آن را داشته باشید، از یک دوست پول قرض گرفته و همین‌الان در روز 736 بیت‌کوین بخرید سپس وقتی ارزش بیت‌کوین افزایش پیدا کرد، آنگاه قرضتان را به دوستتان بپردازید و به دریافت سود بر روی بیت‌کوینی که حالا صاحب آن هستید ادامه بدهید.

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

یکی از ساده‌ترین الگوریتم‌های یادگیری ماشین، تحلیل رگرسیون است که برای تشخیص استحکام رابطه بین متغیرها استفاده می‌شود. تحلیل رگرسیون به شکل‌های مختلفی وجود دارد، از جمله رگرسیون خطی، غیرخطی (Non-linear)، منطقی (Logistic) و چندخطی (Multilinear)، ولی ابتدا مفهوم رگرسیون خطی بررسی می‌شود. رگرسیون خطی از یک خط صاف تشکیل شده است که نقاط داده را بر روی یک نمودار پراکندگی تقسیم می‌کند. هدف رگرسیون خطی تقسیم داده‌ها به شکلی است که فاصله بین خط رگرسیون و تمام نقاط داده در نمودار پراکندگی حداقل بشود. این به این معنی است که اگر یک خط عمودی از خط رگرسیون به هر نقطه داده بر روی منحنی بکشید، مجموع فاصله‌ها با کوچک‌ترین فاصله ممکن با خط رگرسیون مساوی خواهد شد.

خط رگرسیون خطی

خط رگرسیون بر روی نمودار پراکندگی در شکل بالا رسم شده است. اصطلاح فنی برای خط رگرسیون، ابرصفحه (Hyperplane) است و چنین اصطلاحی را در طول مطالعات یادگیری ماشین خواهید دید. یک ابرصفحه در عمل یک خط روند است.

ویژگی مهم دیگر در مفهوم رگرسیون خطی، شیب است که به‌راحتی با استفاده از ابر صفحه قابل محاسبه است. زمانی که یک متغیر افزایش می‌یابد، متغیر دیگر در نقطه‌ی میانگین نشان‌داده‌شده توسط ابرصفحه، افزایش خواهد یافت. در نتیجه شیب در انجام پیش‌بینی‌ها بسیار مفید است. برای مثال، اگر بخواهید ارزش بیت‌کوین را در 800 امین روز تخمین بزنید، می‌توانید 800 را به‌عنوان مختصات x خود وارد کنید و محور y متناظر بر روی ابر صفحه پیدا کنید. در این حالت، مقدار y، 1850 می‌شود. به کمک x محور y شیب قابل محاسبه خواهد بود.

شیب رگرسیون خطی

باتوجه‌به شکل بالا و ابرصفحه به یک نکته مهم پی می‌بریم که در 800 امین روز دچار ضرر و کاهش سرمایه می‌شویم (پس از خرید در روز 736 ام)! بر اساس شیب ابرصفحه، انتظار می‌رود که ارزش بیت‌کوین بین روز 736ام و 800 ام کاهش داشته باشد – باوجود اینکه هیچ سابقه‌ای از افت ارزش بیت‌کوین در مجموعه‌داده وجود ندارد.

لازم به یادآوری است که رگرسیون خطی یک روش بی‌نقص و قطعی برای تحلیل روند صعود و نزول سرمایه‌گذاری‌ها نیست، بلکه خط روند فقط یک نقطه اولیه و مرجع برای پیش‌بینی آینده ارائه می‌کند. اگر بخواهیم از خط روند به‌عنوان نقطه مرجع در یک‌ زمان قبل‌تر، مثلاً در روز 240 ام استفاده کنیم، پیش‌بینی انجام شده صحیح‌تر خواهد بود. در روز 240 ام، درجه انحراف نسبت به ابرصفحه کم است، درحالی‌که در روز 736 ام انحراف زیادی وجود دارد. منظور از انحراف، فاصله بین ابر صفحه و نقطه داده است. شکل زیر فاصله بین نقاط داده و ابرصفحه را نشان می‌دهد.

مفهوم رگرسیون خطی در یادگیری ماشین

در کل، هر چه‌قدر نقاط داده به خط رگرسیون نزدیک‌تر باشند، پیش‌بینی نهایی صحیح‌تر می‌شود. اگر میزان انحراف بین نقاط داده و خط رگرسیون زیاد باشد، شیب، پیش‌بینی‌های صحیح کمتری خواهد داشت. اگر مبنای پیش‌بینی‌ها 736 امین روز باشد که میزان انحراف آن زیاد است، دقت افت می‌کند. در واقع، نقطه داده در روز 736 ام یک داده‌ی پرت (Outlier) است چون از روند کلی چهار نقطه‌ی قبلی پیروی نمی‌کند و همین‌طور به‌عنوان یک نقطه پرت، به علت مقدار زیاد محور y آن، مسیر ابرصفحه را منحرف می‌کند. اگر نقاط داده جدید و نقاط پرت، از نظر مقادیر محور y، در یک مقیاس قرار گیرند، دقت پیش‌بینی مدل افت بسیاری می‌کند.

دوره آموزشی: برای آشنایی بیشتر با انواع یادگیری ماشین و یادگیری انجام پروژه، آموزش رایگان یادگیری ماشین را در کانال یوتیوب دیتاهاب ببینید.

مثال رگرسیون خطی

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

مثال رگرسیون خطی(دو ستون آخر جدول بخشی از مجموعه‌داده اصلی نیستند و برای راحت شدن محاسبه‌ها در فرمول‌های زیر اضافه شدند.)

فرمول رگرسیون خطی

به‌طوری‌که:

Σ = جمع کل

Σx = جمع کل تمام مقادیر x (1 + 2 + 1 + 4 + 3 = 11)

Σy = جمع کل تمام محور y (3 + 4 + 2 + 7 + 5 = 21)

Σxy = جمع کل عبارت x*y برای هر ردیف (3 + 8 + 2 + 28 + 15 = 56)

Σx2 = جمع کل عبارت x*x برای هر ردیف (1 + 4 + 1 + 16 + 9 = 31)

n = تعداد کل ردیف‌ها. در این مثال خاص n = 5.

محاسبه مثال رگرسیون خطی

1.029 = (651 – 616) / (155 – 121) = ((21 x 31) – (11 x 56)) / (5(31) – 112) =A

B = (5(56) – (11 x 21)) / (5(31) – 112) = (280 – 231) / (155 – 121) =1.44

مقادیر “a” و “b” را در معادله خطی جای‌گذاری می‌کنیم.

y = a + bx

y = 1.029 + 1.441x

معادله خطی y = 1.029 + 1.441x نشان می‌دهد که چطور ابر صفحه رسم بشود (شکل زیر).

نمودار پراکندگی برای معادله رگرسیون خطی

حالا خط رگرسیون را با بررسی مختصات x=2 مورد آزمایش قرار می‌دهیم.

y = 1.029 + 1.441(x)

y = 1.029 + 1.441(2)

y = 3.911

در این حالت، پیش‌بینی به نتیجه واقعی 4.0 بسیار نزدیک است.

رگرسیون لجستیک چیست؟

بخش بزرگی از تحلیل داده در قالب یک سؤال ساده و کوچک خلاصه می‌رسد: مقدار موردنظر “A” یا “B” است؟ آیا “مثبت” است یا “منفی”؟ این فرد “یک خریدار احتمالی است” یا “یک خریدار احتمالی نیست”؟ یادگیری ماشین چنین سؤالاتی را در معادلات منطقی و خصوصاً از طریق چیزی که به‌عنوان تابع سیگموید (Sigmoid Function) شناخته می‌شود، جای می‌دهد. تابع سیگموید یک منحنی S-شکل تولید می‌کند که هر عددی را به یک مقدار عددی بین 0 و 1 نگاشت می‌کند ولی هیچ وقت نگاشت به خود 0 یا 1 نخواهیم داشت.

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

مثال رگرسیون منطقی

تابع سیگموید

رگرسیون منطقی معمولاً برای دسته‌بندی دودویی و پیش‌بینی دودسته گسسته مورداستفاده قرار می‌گیرد، برای مثال شاغل بودن یا شاغل نبودن. برای این کار، تابع سیگموید (همان‌طور که در پایین نشان‌داده‌شده است) اضافه می‌شود تا نتیجه را محاسبه کند و نتایج عددی را به یک عبارت احتمالاتی بین 0 تا 1 تبدیل کند.

فرمول تابع سیگموید

تابع سیگموید منطقی که در بالا آورده شده به شکل تقسیم “1” بر “1” به‌اضافه e به توان منفی x محاسبه می‌شود به صورتی که:

x = عددی که می‌خواهید آن را تبدیل کنید.

e = ثابت اویلر، 2.718

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

تابع سیگموید و رگرسیون منطقی

بر اساس احتمالات یافته شده می‌توانیم هر نقطه داده را به یکی از دودسته گسسته اختصاص بدهیم. همان‌طور که در شکل بالا دیده می‌شود، می‌توانیم در 0.5 یک نقطه برش (Cut-off point) برای دسته‌بندی نقاط داده به دسته‌ها بسازیم. نقاط دادة با مقدار بالای 0.5، به‌عنوان عضوی از دسته A دسته‌بندی می‌شوند و هر نقطه داده‌ای که کمتر از 0.5 باشد در دسته B قرار می‌گیرد. نقاط داده‌ای که نتیجه‌ای دقیقاً برابر 0.5 دارند قابل دسته‌بندی نیستند، ولی چنین نمونه‌هایی به دلیل خصوصیات ریاضی تابع سیگموید نادر هستند.

همچنین توجه داشته باشید این فرمول به‌تنهایی ابرصفحه جداکننده دسته‌های گسسته را آن‌طوری که قبلاً در شکل اول (بالای صفحه) دیدیم نمی‌سازد. فرمول آماری برای رسم ابرصفحه منطقی کمی پیچیده‌تر است ولی با استفاده از زبان برنامه‌نویسی به‌راحتی قابل رسم است.

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

معرفی رگرسیون منطقی و کاربرد آن

اکنون که فهمیدیم رگرسیون چیست، لازم است بدانیم کجا به کار می‌آید. رگرسیون منطقی، به علت قدرت در دسته‌بندی دودویی، در زمینه‌های زیادی از جمله تشخیص تقلب (Fraud Detection)، تشخیص بیماری (Disease Diagnosis)، تشخیص شرایط اورژانسی (Emergency Detection)، پیش‌بینی پرداخت یا عدم پرداخت قسط وام (Loan Default Prediction) یا شناسایی ایمیل اسپم مورداستفاده قرار می‌گیرد. بااین‌حال، رگرسیون منطقی در مثال‌های با مقادیر ترتیبی نیز قابل‌استفاده است مثلاً وقتی مجموعه عددی از مقادیر گسسته وجود دارد برای مثال دانشجو، شاغل و بیکار.

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

رگرسیون منطقی multinomial

دو نکته که در زمان انجام رگرسیون منطقی باید به یاد داشته باشید: داده نباید مقدار ناموجود داشته باشد و اینکه تمام مقادیر از یکدیگر مستقل باشند. همچنین برای رسیدن به‌دقت خوب، باید برای هر مقدار خروجی به‌اندازه کافی داده داشته باشید. یک نقطه شروع خوب، داشتن تقریباً 30-50 نقطه داده برای هر خروجی است – برای مثال 60-100 تعداد کل نقاط داده برای رگرسیون منطقی دودویی.

. . . .

و در انتها…

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

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

مطالب بیشتر

2 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

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