به نام خدا
سلام
امیدوارم حالتون خوب باشه
توی این مطلب میخوایم به ریاضیات مدل رگرسیون خطی بپردازیم که یکی از ساده ترین و در عین حال کاربردی از مدل های یادگیری ماشین تحت نظارت(Supervised Learning) هست. این مدل یا الگوریتم برای پیش بینی مقدار و در کل برای داده های پیوسته استفاده میشه و در حالت عادی نمیتونه به عنوان یک مدل طبقه بندی استفاده بشه.
مدل رگرسیون خطی یک الگوریتم ساده و کاربردی از الگوریتم های تحت نظارت هست که به عنوان یک الگوریتم ساده در اول هر دوره ی آموزشی یادگیری ماشین ارائه میشه. این الگوریتم به کمک رابطه ی خط میتونه سمپل های یک دیتاست رو مدل کنه یا به زبان ساده از اون ها یک خط فرضی بسازه که کمترین فاصله رو نسبت به اون ها داره، این کار باعث میشه که بتونه با استفاده از اون خط برای داده های بعدی( یا داده های تست) هم خروجی ای شبیه داده های آموزشی درنظر بگیره، و طبیعتا هرچقدر فاصله ی این خط نسبت به تمام داده ها کمتر باشه خروجی های دقیق تری میتونه پیشبینی کنه.
همونطور که شاهد بودید رگرسیون خطی هدفش اینه که بتونه خطی رو با استفاده از داده های آموزشی بسازه که کمترین فاصله رو نسبت به اون ها داشته باشه و بعد با استفاده از اون خط بتونه داده های تست رو پیش بینی کنه.
بعدش هم فهمیدیم که اگر هرچقدر فاصله ی خط با اون داده های آموزشی کمتر باشه پیشبینی دقیق تری رو شاهد خواهیم بود.
پس از اینجا نتیجه میگیریم که باید یک الگوریتم بهینه سازی ای هم این وسط باشه که بتونه بهترین پارامتر های خطی رو که میشه به وجود آورد رو بدست بیاره.
مرحله ی ۱ رگرسیون خطی: نخست باید به صورت تصادفی و رندوم پارامتر هایی رو برای رابطه ی خط در نظر بگیریم تا بعد بتونیم اون رو بهینه کنیم.
مرحله ی ۲ رگرسیون خطی: محاسبه ی خطا با یکی از تابع های زیان(Cost function) موجود برای رگرسیون خطی(MSE , SSE)
مرحله ی ۳ رگرسیون خطی: بهینه سازی پارامتر های رابطه ی خط با استفاده از توابع زیان برای پیدا کردن بهترین خط.
مرحله ی ۴ رگرسیون خطی: تکرار، در این مرحله باید مراحل ۲ و ۳ اینقدر تکرار بشن تا بتونیم به بهترین مقادیر رابطه ی خط دست بیابیم.
رابطه ی خط به معادله ای گفته میشه که با یک سری پارامتر یک خط صاف و بدون انحنا رو روی صفحه ی مختصات بسازه
این رابطه به این صورت نوشته میشه:
f(x) = ax + b
منظور از f(x) چیست؟ : نشان دهنده ی خروجی آن طرف معادله هست و با y یا متغیر وابسته یکی است
منظور از a چست؟ : a نشان دهنده شیب(تانژانت) خط است
منظور از b : نشان دهنده ی عرض از مبدا خط هستش
توابع زیان(Cost Functions) در یادگیری ماشین کاربرد گسترده ای دارند و به منظور محاسبه ی خطای مدل استفاده میشن، در رگرسیون خطی ما از توابع زیان MSE(Mean Squared Error) و SSE(Sum Squared Error) استفاده میکنیم که به ترتیب به معنای میانگین خطای مربع و مجموع خطای مربع هستن.
این تابع با استفاده از y های آموزشی و y هایی که خط ما پیش بینی کرده اختلاف و فاصله این دو رو اندازه میگیره و بعد به توان دو میرسونه سپس جمع میکنه و تقسیم بر تعداد میکنه، به زبان ساده این تابع داره از مجموع مقدار تمام فاصله ها میانگین میگیره.
در این تابع :
حرف yi مقدار واقعی y هست
و yi^ مقدار پیش بینی شده ی y توسط رابطه ی خط ماست
این تابع هم دقیقا مانند MSE مجموع خطای مربع را حساب میکند اما فرقش با MSE این است که دیگر تقسیم بر تعداد نمیکند.
بیاید برگردیم به مراحلی که باید رگرسیون طی میکرد تا بتونه پیش بینی کنه
ما گفتیم که قطعا هرچقدر مقدار تابع زیان کمتر باشه مدل پیشبینی های دقیق تری انجام میده، اما ما برای کم کردن مقدار تابع زیان باید چی کار کنیم؟، این کار باید با تغییر دادن و بروزرسانی هدف دار پارامتر های رابطه ی خط انجام بشه و این بروزرسانی هدف دار با الگوریتم های بهینه سازی انجام میشه که گرادیان کاهشی یکی از الگوریتم های بهینه سازی ای هستش که در رگرسیون خطی استفاده میشه.
مرحله ۱: انتخاب یک مقدار رندوم برای x، نخست باید به صورت رندوم یک مقدار برای x انتخاب بشود.
مرحله ۲: محاسبه مقدار مشتق در این نقطه( برای رابطه ی خط چون ۲ پارامتر دارد مشتق جزئی یا چندگانه باید بگیریم)
مرحله ۳: بدست آوردن نقطه جدید با مشتق
و سپس تکرار ماحل ۲ و ۳ برای رسیدن به بهترین مقادیر
"گرادیان کاهشی الگوریتمی است که مینیمومهای محلی را در یک تابع پیدا میکند."
توی این مطلب ریاضیات پشت رگرسیون خطی رو فهمیدیم، تونستیم بفهمیم رابطه ی خط چیه، بعدش رفتیم سراغ توابع هزینه که کاربرد های گسترده ای در یادگیری ماشین دارن، سپس رفتیم سراغ یکی از بهترین الگوریتم های بهینه سازی به نام گرادیان کاهشی که کارش پیدا کردن بهترین مقدار پارامتر های رابطه ی خط برای به مینیمم رسوندن مقدار تابع هزینه بود
امیدوارم از این مطلب لذت کافی رو برده باشید