رگرسیون خطی با یک متغیر
تعریف مدل
اولین الگوریتمی که معرفی میکنیم، رگرسیون خطی است که در حوزه یادگیری ماشین با نظارت قرار میگیرد. مجموعه دادههای ما مربوط به قیمت خانههای شهر پورتلند واقع در ایالت اورگان آمریکا بر اساس اندازه هر خانه است.
فرض کنید دوستی دارید که خانه ۱۲۵۰ فوت مربعی خود را میخواهد بفروشد. هدف شما این است که بر اساس دادهای که در اختیار دارید، دقیقترین پیشبینی را برای قیمت خانه دوستتان داشته باشید.
اگر یک خط مستقیم را به دادههای موجود برازش دهید، آنگاه قیمت تقریبی خانه دوستتان برابر ۲۲۰ هزار دلار خواهد بود.
- این مسئله از نوع یادگیری با نظارت است زیرا ما برای هر نمونه از دادهها جواب درست را داریم.
- همچنین یک مسئله رگرسیون است که رگرسیون اشاره به مقادیر حقیقی دادهها دارد (دادههای میتوانند هر مقداری داشته باشند. در مقابل مسئله طبقهبندی را داریم که دادهها فقط میتوانند دارای مقادیر مشخصی باشند.)
به صورت رسمیتر، دادههای موجود را مجموعه داده آموزش مینامیم که الگوریتم ما قرار است از آن یادگرفته و بتواند برای نمونههای جدید پیشبینی درست را انجام دهد. در این آموزش از علائم زیر استفاده میکنیم:
اندازه برحسب فیت مربع | قیمت برحسب ۱۰۰۰ دلار |
---|---|
2104 | 460 |
1416 | 232 |
1534 | 315 |
852 | 178 |
.... | .... |
- \(m\) تعداد نمونههای آموزش
- \(x's\) متغیرهای ورودی که اغلب آنها را خصوصیت (features) مینامیم. در مثال مطرح شده اندازه خانهها میباشد.
- \(y's\) متغیرهای خروجی که اغلب متغیرهای هدف نامیده میشوند. در مثال مطرح شده قیمت خانهها میباشد.
با استفاده از علائم مطرح شده میتوان یک نمونه از مجموعه داده را به صورت \((x,y)\) نشان داد. همچنین برای نشان دادن نمونه iام از مجموعه داده از نماد \((x^{(i)}, y^{(i)})\) استفاده میکنیم.
پس توجه داشته باشید موقعی که مینویسیم \(x^{(2)}\) منظورمان اندازه خانه واقع در سطر دوم جدول داده شده که در اینجا برابر ۱۴۱۶ است، میباشد. برای \(y^{(2)}\) هم به همین ترتیب مقدار آن برابر ۲۳۲ خواهد بود.
حال که مجموعه داده و علائم مورد استفاده توضیح داده شد ببینیم الگوریتم یادگیری با نظارت چطور عمل میکند:
چنانکه در شکل بالا مشاهده میکنید، با دادن مجموعه داده آموزش به الگوریتم یادگیری تابعی را که به تابع فرضیه (hypothesis) مشهور است به دست میآوریم. با دادن نمونههای جدید به این تابع میتوانیم متغیرهای هدف را پیشبینی کنیم.
تابع فرضیه را به صورت زیر نمایش میدهیم:
اگر با جبر و ریاضیات آشنا باشید، میدانید که تابع فوق معادله یک خط مستقیم با عرض از مبداء \(\theta_0\) و شیب \(\theta_1\) است. البته اغلب جهت خلاصه نویسی تابع فرضیه را بدون اندیس \(\theta\) و به صورت \(h(x)\) مینویسیم. البته واضح است که تابع فرضیه میتواند به صورت بسیار پیچیدهتری از یک خط مستقیم باشد ولی به دلیل همین سادگی ابتدا از این فرم شروع میکنیم و قدم به قدم به شکلهای پیچیدهتری از تابع فرضیه و اینکه چطور آن را انتخاب کنیم خواهیم پرداخت.
تابع هزینه
فرض کنید جدول دادهها آموزش دارای ۴۷ سطر یا به عبارتی ۴۷ داده باشد، در این صورت \(m=47\). در تابع فرضیه \(\theta\)ها را پارامترهای مسئله مینامیم و هدف یافتن بهترین مقدار ممکن برای این پارامترها است.
تعریف مسئله: یک مجموعه داده به شکل زیر داریم. هدف یافتن پارامترهای تابع فرضیه به گونهای است که تابع به دستآمده بتواند مقادیر \(y\) را تا حد ممکن به درستی پیشبینی کند (مقداری نزدیک به مقدار اصلی). بنابراین در اینجا ما با یک مسئله بهینهسازی روبرو هستیم به این شکل که باید اختلافل بین مقدار پیشبینی شده و مقدار حقیقی حداقل شود.
عبارت فوق را تابع هزینه گویند و با نماد \(J(\theta_0, \theta_1)\) نمایش میدهیم. در نتیجه میتوان مسئله را به صورت زیر هم نوشت:
تابع هزینه فوق را، تابع خطای مربعات (squared error function) نیز میگویند. معلوم شده است که این تابع هزینه در مسائل رگرسیون خطی بسیار خوب جواب میدهد و انتخاب منطقیای میباشد. البته توابع هزینه دیگری هم وجود دارند که بسیار خوب جواب میدهند اما تابع خطای مربعات رایجترین است.
درک بهتر تابع هزینه
بیایید یک بار مسئله را با هم مرور کنیم؛ با یک تابع فرضیه شروع کردیم:
هدف ما یافتن پارامترهای \(\theta_0, \theta_1\) به گونهای است که تابع فرضیه بتواند بهترین پیشبینی را از متغیرهای هدف داشته باشد. جهت این کار تابع هزینه را به صورت زیر تعریف کردیم:
هدف نهایی حل مسئله بهینهسازی زیر و کمینه کردن تابع هزینه نسبت به پارامترهای آن است: