هانیه مهدوی
هانیه مهدوی
خواندن ۳ دقیقه·۱ سال پیش

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

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

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

پیشنهاد می‌کنم قبل از خوندن ادامه مطلب، یک کاغذ و قلم جلو دستتون باشه تا بتونید روابط ارائه شده رو در جاهایی که لازم هست برای خودتون تو کاغذ بنویسید و محاسبات لازم رو خودتون هم انجام بدین تا بهتر متوجه بشید که در هر مرحله چه اتفاقی میفته.


این جلسه قراره با یکی از پرکاربردترین مباحث در یادگیری ماشین آشنا بشیم.

رگرسیون خطی

فرض کنید که یک داده‌ای رو بهمون دادن و قراره که از روی دیتای داده شده بیایم یه پیش‌بینی‌ای انجام بدیم. مثلاً قراره قیمت خونه رو بر اساس مساحت خونه پیش‌بینی کنیم. دیتایی هم که بهمون دادن برابر هست با مساحت خونه‌های مختلف و قیمت متناظرشون. حالا قراره از روی این ورودی‌ها و خروجی‌ها یه فرمولی رو در بیاریم که مساحت هر خونه‌ای رو تو ورودی بهمون دادن بتونیم بگیم قیمت متناظرش چقدر میشه. چیزی که ما پیش‌بینی می‌کنیم (یعنی y^) با مقدار واقعی (یعنی y) هم یه خطایی داره که با e مشخص می‌کنیم و از توزیع نرمال استاندارد میاد:

می‌خوایم این مسئله رو با رویکرد احتمالاتی حل کنیم. یعنی بیایم beta0 و beta1 رو به صورتی انتخاب کنیم که احتمال دیدن دیتای داده شده رو ماکسیمم می‌کنه. به عبارتی دیگه قراره یک تابع MLE رو به دست بیاریم که احتمال دیدن y ها رو به ازای پارامترهای beta0 و beta1 و xi و sigma^2 بیشینه بشه:

تا اینجا MLE رو به دست آوردیم. حالا باید ازش مشتق بگیریم و برابر با صفر بذاریم. چون مشتق گرفتن از خودش سخته اول ازش لگاریتم می‌گیریم و بعد از لگاریتمش مشتق می‌گیریم و برابر با صفر میذاریم. اگر ازش لگاریتم بگیریم به صورت زیر در میاد:

حالا میایم اول نسبت به beta0 ازش مشتق می‌گیریم و برابر با صفر میذاریم:

میایم طرفین رو تقسیم بر n می‌کنیم و داریم:

حالا اگر نسبت به beta1 مشتق بگیریم و برابر با صفر بذاریم داریم:

جواب نهایی که برای beta1 به دست اومده مثل این می‌مونه که انگار کواریانس رو تقسیم بر واریانس کنیم:

در نهایت هم میایم نسبت به واریانس مشتق می‌گیریم و برابر با صفر می‌ذاریم و داریم:

این واریانسی که محاسبه کردیم در واقع برابر هست با همون Mean Squared Error. این خطا، خطای بین مقدار پیش‌بینی شده و مقدار واقعی رو مشخص می‌کنه.

همه فرمول‌هایی که تا اینجا به دست آوردیم رو در قالب یک تابع با R پیاده‌سازی می‌کنیم و داریم:

حالا فرض کنید دیتاست iris رو داریم. قراره از روی petal_width بیایم petal_length رو به دست بیاریم. یعنی قراره از روی مدلی که ساختیم و x هامون که همون petal_width هست، y^ رو که همون petal_length هست رو پیش‌بینی کنیم:

اگه بیایم خروجی پیش‌بینی‌مون (با خط زرد مشخص شده) با خروجی واقعی (با خط قرمز مشخص شده) رو پرینت کنیم داریم:

اگه نمودارش رو هم رسم کنیم خواهیم داشت:

نقاط قرمز نقاطی هست که مدل پیش‌بینی کرده و نقاط سیاه نقاط واقعی هست.

جمع‌بندی مطالب ارائه شده

رگرسیون خطی رو به کمک MLE به صورت احتمالاتی به دست آوردیم و در R پیاده‌سازی کردیم.


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

ویدیو این جلسه

صفحه گیت‌هاب مرتبط با این دوره

جزوه جلسه قبلی (جلسه بیست‌وپنجم)

جزوه جلسه بعدی (جلسه بیست‌وهفتم)

یادگیری ماشینرگرسیون خطی
من هانیه‌ام. مدتیه شروع کردم به تولید محتوا در قالب متن و به زبان فارسی، از روی دوره‌هایی که می‌گذرونم. اگر دوست داشتین برام قهوه بخرید: https://coffeete.ir/honio
شاید از این پست‌ها خوشتان بیاید