Milad Sadeghi
Milad Sadeghi
خواندن ۵ دقیقه·۵ سال پیش

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

رگرسیون خطی یک روش بسیار ساده است که کاربرد آن در بسیاری از مسائل اثبات شده. در این آموزش قصد داریم تا طریقه کارکرد رگرسیون ساده خطی را قدم به قدم باهم بررسی کنیم.

دیتاسِت آموزشی :

دیتاسِتی که در این آموزش از آن استفاده خواهیم کرد کاملا ساختگی است :


دیتاسِت آموزشی
دیتاسِت آموزشی

مؤلفه ی x متغیر ورودی و مؤلفه ی y متغیر خروجی ما هستند که سعی در پیش بینی کردن آن داریم. نمودار پراکندگی داده ها را در زیر میبینید :

نمودار داده های آموزشی
نمودار داده های آموزشی

همانطور که مشاهده میکنید رابطه ی بین x و y به نظر میرسد که خطی هست و ما میتوانیم بصورت احتمالی خطِ موربی را از سمت چپ پایین به سمت راست بالای نمودار رسم کنیم تا با استفاده از آن ، رابطه ی بین داده ها مشخص شود.

رگرسیون ساده خطی :

زمانی که مؤلفه ی ورودی (x) مؤلفه ی واحدی هست و میخواهیم که از رگرسیون خطی استفاده کنیم ؛ این نوع رگرسیون ، رگرسیون خطی ساده نامیده میشود ولی زمانی که مؤلفه های ورودی (x1, x2, x3, x4, ...) مؤلفه های چندگانه باشند ، رگرسیون خطی چندگانه نامیده میشود. روش کارکرد رگرسیون خطی ساده متفاوت و ساده تر از رگرسیون خطی چندگانه است و در این آموزش قصد داریم که مدل رگرسیون خطی ساده ای را بر اساس داده های آموزشی بسازیم و سپس پیشبینی هایی را روی داده های آموزشیمان انجام دهیم و بررسی کنیم که مدلِ به دست آمده ، رابطه ی بین داده ها را چقدر خوب یاد گرفته است. مدل رگرسیون خطی ساده بصورت زیر تعریف میشود :

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

معادله ی بالا مربوط به یک خط راست میباشد که در آن ، y متغیر خروجی ای است که قصد پیش بینی کردن آن را داریم ، x متغیر ورودی ای است که مقدار آنرا میدانیم و B0 , B1 ضرایب معادله هستند که باید مقدار آنها را تخمین بزنیم. B0 همان عرض از مبدا و B1 نیز شیب خط میباشد.

هدف ، پیدا کردن بهترین مقادیر تخمین زده شده برای ضرایب معادله به منظور کمینه کردن خطاهای حاصل از پیش بینی متغیر y از روی x می باشد. ما میتوانیم در رگرسیون ساده خطی از روی داده هایی که داریم بصورت مستقیم مقدار ضرایب را تخمین بزنیم. مقدار B1 از معادله ی زیر به دست می آید :

در معادله ی بالا، mean ، برابر مقدار میانگین مقادیر هر مؤلفه از دیتاسِت است. xi و yi به این نکته اشاره دارند که باید این محاسبات را برای همه ی مقادیر داخل دیتاسِت تکرار کنیم. بعد از به دست آوردن مقدار B1 ، مقدار B0 با استفاده از رابطه ی زیر به دست می آید :



تخمین مقدار شیب (B1):

از بالاترین قسمت معادله شروع خواهیم کرد(صورت کسر). در ابتدا باید مقدار میانگین را برای مؤلفه های x و y محاسبه کنیم. مقدار میانگین با استفاده از معادله ی زیر به دست می آید :

در فرمول بالا ، مقدار n برابر تعداد هر یک از مؤلفه های x یا y است (که در این مثال برابر با عدد ۵ می باشد).

مقدار میانگین x برابر است با 3 و مقدار میانگین y برابر است با 2.8

حال باید مقدار خطای هر متغیر از مقدار میانگین را محاسبه کنیم ؛ برای مؤلفه x :

باقیمانده ی تفاضل هر مقدار از مؤلفه ی x از مقدار میانگین
باقیمانده ی تفاضل هر مقدار از مؤلفه ی x از مقدار میانگین

و برای مؤلفه ی y :

باقیمانده ی تفاضل هر مقدار از مؤلفه ی y از مقدار میانگین
باقیمانده ی تفاضل هر مقدار از مؤلفه ی y از مقدار میانگین

حال قسمت هایی را برای محاسبه ی صورت کسر در اختیار داریم. تنها کاری که باید انجام شود این است که مقادیر باقیمانده ی تفاضل هر مقدار از هر مؤلفه از مقدار میانگین آنرا بصورت متناظر در هم ضرب کرده و سپس حاصل جمع مقادیر مؤلفه ی جدید(مؤلفه ی حاصلضرب ها) را محاسبه کنیم :

حاصل ضرب مقادیر باقیمانده ی تفاضلات x و y از مقادیر میانگینشان
حاصل ضرب مقادیر باقیمانده ی تفاضلات x و y از مقادیر میانگینشان

حاصل جمع مقادیر ستون آخر که همان صورت کسر است ، برابر عدد 8 می باشد. حال نوبت به محاسبه ی مقدار مخرج کسر میرسد. مخرج کسر را میتوان بصورت زیر تشریح کرد :

مجموعِ مربعاتِ تفاضلاتِ هر مقداری از مؤلفه ی x از مقدار میانگین

از آنجایی که قبلا مقدار (x - mean(x را برای هر مقدار از x محاسبه کرده ایم ، تنها کار لازم برای انجام دادن ، به توان ۲ رساندن این مقادیر است :

با محاسبه ی حاصل جمع این مربعات ، مخرج کسر برابر عدد 10 میشود .حال میتوانیم مقدار شیب را محاسبه کنیم :



تخمین مقدار عرض از مبدأ (B0):

برای محاسبه ی مقدار عرض از مبدأ از رابطه ی زیر استفاده می کنیم :



پیش بینی کردن :

حال که ضرایب معادله را به دست آورده ایم ،

قصد داریم تا با پیش بینی کردن برای داده های آموزشی ، مدل به دست آمده را امتحان کنیم :

مقدار y پیش بینی شده برای هر x
مقدار y پیش بینی شده برای هر x

همچنین ما میتوانیم مقادیر بیش بینی شده را بصورت یک خط در کنار داده های آموزشی در قالب نمودار نمایش دهیم :

مقادیر پیش بینی شده توسط مدل رگرسیون خطی ساده
مقادیر پیش بینی شده توسط مدل رگرسیون خطی ساده



تخمین خطا :

ما می توانیم برای داده های پیش بینی شده ، مقدار خطا را محاسبه کنیم که با نام خطای جذر میانگین مربعات شناخته میشود.

Root Mean Squared Error
Root Mean Squared Error

در فرمول بالا ، pi برابر مقادیر پیش بینی شده و yi برابر مقادیر اولیه در مؤلفه ی y هستند؛ چون ما مقدار خطا را باید برای همه ی مقادیر پیش بینی شده محاسبه کنیم. در ابتدا باید مقدار تفاضل هر داده ی پیش بینی شده توسط مدل را از داده ی واقعی به دست آوریم :

مقدار خطا برای داده های پیش بینی شده
مقدار خطا برای داده های پیش بینی شده

به سادگی می توانیم مربع این مقادیر را به دست آوریم:

مربع خطاها برای داده های پیش بینی شده
مربع خطاها برای داده های پیش بینی شده

مجموع این داده ها برابر با 2.4 واحد است که اگر بر تعداد داده ها تقسیم شود ، مقدار خطای جذر میانگین مربعات به دست می آید :

معنی خطای بالا این است که هر پیش بینی انجام شده بطور متوسط 0.692 واحد اشتباه است.



این هم پیاده سازی انجام شده برای این آموزش در زبان پایتون :

https://gist.github.com/EverLookNeverSee/ae0b512b7e927008cb2657b78ca36587

امیدوارم مفید بوده باشه

موفق باشید :)

رگرسیونپایتونبرنامه نویسییادگیری ماشینهوش مصنوعی
Frontend Software Engineer
شاید از این پست‌ها خوشتان بیاید