رگرسیون خطی ساده، به زبان ساده!

به نام خدا سلام امیدوارم حالتون خوب باشهشاید باورتون نشه اما من درباره ی این مطلبی که میخوام بزارم سه روز مطالعه کردم که یه وقت چیز اشتباهی قرار ندم توی مطلب.معنی واژه ی رگرسیون چیه:واژه «رگرسیون» واژه‌ ای از زبان فرانسوی است و به معنی «برگشت» یا «پس‌گرایی» است؛ این واژه اولین بار توسط فرانسیس گالتون برای توصیف رابطه خطی بین قد فرزندان و والدین‌شان مورد استفاده قرار گرفت. به‌طور دقیق‌تر او از اصطلاح «برگشت (رگرسیون) به میانگین» برای توصیف این رابطه استفاده کرد.هدف ما از استفاده از رگرسیون چیست؟همونطور که میدونید ماشین لرنینگ یعنی بر اساس دیتا هایی که بهش میدیم یه نتیجه گیری بکنه و بر اساس اون دیتا ها تجربه به دست بیاره، که بعدا برای داده های دیگه ای که بهش میدن بتونه از اون تجربه ای که به دست اورده استفاده کنه.linear regressionشاید بد توضیح داده باشم، الان برات یه مثال میزنم:مثلا شما یه دسته دیتا هایی به برنامه دادید ، ولی دیتا هایی که بهش دادید کامل نیست، یادگیری ماشین میاد بر اساس همون دیتا های کمی که شما دادید و با استفاده از الگوریتم های مختلف(از جمله رگرسیون خطی) ازش نتیجه گیری میکنه، و با استفاده از همین تجربه دیتا هایی که شما بهش ندادید رو میابه.بدست آوردن همین تجربه با الگوریتم های مختلف ماشین لرنینگ انجام میشه، که پایه ترینشون همین رگرسیون خطی هستش.راستی بگم که این رگرسیون خطی نسبت به بقیه الگوریتم ها خیلی سادست.رگرسیون چیست؟رگرسیون یا ضریب همبستگی یه تکنیک آماریه که میتونیم با استفاده از اون یه متغیر رو از روی یک یا چند متغیر پیش بینی کنیم.توی رگرسیون خطی متغیری که از روی اون یکی متغیر پیش بینی میشه، متغیر وابسته یا Dependent نامیده میشه و متغیری که از روی اون پیش بینی انجام میگیره متغیر مستقل یا Independent نام دارهکه معمولا به ترتیب به صورت y و x نشون داده میشن(منظورم اینه که y یعنی متغیر وابسته و x متغیر مستقل هستش)اگر فقط یه متغیر مستقل وجود داشته باشه به این میگیم رگرسیون ساده(simple linear regression) و در غیر این صورت بهش میگیم رگرسیون چند گانه یا multiple linear regression.همینطور اگه به جای داشتن یه متغیر وابسته ،چند تا متغیر وابسته داشتیم بهش میگیم چند متغیره.یکم دقیق تر:بزار با یه مثال برات توضیح بدم:مثلا تو میخوای یه کتاب بخری، خب؟ قیمت این کتاب به چه چیز هایی بستگی داره؟، مثلا به تعداد صفحات و کیفیتش بستگی داره.اینجا متغیر مستقلمون کدوم میشه؟، قیمت کتاب یا تعداد صفحات؟، خب معلومه که تعداد صفحات، چرا؟ چون اون کتابی که تو میخوای بخری بر اساس تعداد صفحات، قیمتش تغییر میکنه.و کتاب هم میشه متغیر وابسته، چرا؟ چون اینجا x(تعداد صفحات) روی قیمت کتاب(y) تاثیر میزاره.و اینکه نوع رگرسیون ما رگرسیون ساده هتسش،چون یه متغیر مستقل و یه متغیر وابسته داریم.حالا یه نمودار براش رسم میکنیم(با استفاده از پایتون):به این داده هایی که بر اساس مثال بالایی هست نگاه کنید:page = [50,70,30,100,60]price = [20,40,15,50,25]خب همینطور که میبینید، این داده ها با هم به صورت ستونی قرار داده شدند، منظورم اینه که مثلا هر کتاب ۵۰ صفحه ای ۲۰ تومان می ارزه.ما در این مثال با این داده ها کار میکنیم، شما میتونید تغییرش بدید(اما پیشنهادم اینه که بعد از مطلب دستکاریش کنید).مرحله ۱ ، جای گذاری دیتا ها:کدی که برای جاگذاری دیتا ها استفاده کردم:#import the libreries import matplotlib.pyplot as plt import numpy as np #Data page = [50,70,30,100,60] price = [20,40,15,50,25] #plot the data plt.scatter(page, price, color='blue',marker = '+',lw = 3) plt.xlabel('Page') plt.ylabel('Price') b, a = np.polyfit(page,price,1) #grid the chart plt.grid(True)خروجی:جای گذاری داده ها بر روی نمودارتوضیح نمودار:همینطور که میبینید اطلاعاتی که ما به برنامه داده بودیم رو با استفاده از کد بالا روی نمودار نمایش دادیم.که x ما همون تعداد صفحات و y همون قیمت کتاب هست.مرحله ۲ ،رسم خط رگرسیون:کد هایی که برای رسم خط رگرسیون استفاده شده(به علاوه کد های قبلی):import matplotlib.pyplot as plt import numpy as np page = [50,70,30,100,60] price = [20,40,15,50,25] plt.scatter(page, price, color='blue',marker = '+',lw = 3) plt.xlabel('Page') plt.ylabel('Price') b, a = np.polyfit(page,price,1) line = np.linspace(0,max(page) or max(price)) plt.plot(line,a+b*line,color = 'red',lw = 3) plt.grid(True)خروجی:رسم خط رگرسیوننتیجه گیری از کد ها و نمودار ها:الان شما میتونید اثراتی از یادگیری ماشین رو از روی نمودار مرحله ی دوم ببینیدهمینطور که میبیند خط رگرسیون میاد و خطی رسم میکنه که نقاط کمترین فاصله رو نسبت به خط داشته باشناین فاصله هایی که میبینید که بین نقاط و خط رگرسیون هست واریانس یا انحراف معیار نام داره.خب الان این نموداری که کشیدیم به چه دردی میخوره؟همونطور که توی بخش هدف ما از استفاده از رگرسیون چیست گفتم یادگیری ماشین، میاد و بر اساس اطلاعات کمی که ما بهش دادیم یاد میگیره که چجوری برای دیتا های بعدی باید کار کنه، اینجا هم همون اتفاق افتاده.مثلا، من دیتایی برای کتاب ۸۰ صفحه ای به برنامه ندادم، اما شما میتونید این رو با استفاده از رگرسیون خطی پیش بینی کنید. چطوری؟ : اول باید روی محور x یا همون Page نقطه ی مورد نظر خودت رو پیدا کنی، مثلا من 80 رو در نظر میگیرم. حالا به صورت عمودی میای بالا تا به خط رگرسیون برسی، وقتی که به خط رسیدی همون رو به صورت افقی و از روی همون درجاتی که برای برنامه در نظر گرفتم به سمت چپ میای تا به محور y یا همون Price میرسی، حالا عددی رو که بهش رسیدی رو بخون.حالا فهمیدی رگرسیون خطی چی کار میکنه!؟رگرسیون خطی یه الگوریتم یادگیری ماشینه، که میتونیم با استفاده از اون و دیتا هایی که بهش دادیم ، داده هایی رو که بهش ندادیم رو پیش بینی کنیم.مثلا الان من توی داده هایی که به برنامه ام داده بودم ، داده ای به کتاب ۸۰ صفحه ای اختصاص نداده بودم.ولی تونستم با استفاده از داده های قبلی ای که داده بودم ، خط رگرسیون رو رسم کنم و بتونم با استفاده از اون قیمت یه کتاب ۸۰ صفحه ای رو پیدا کنم.شما میتونید هر داده ای رو که بهش نداده بودید(البته توی بازه ای که بهش دادید) رو پیدا کنید.نتیجه گیری مطلب:امروز با هم توی این مطلب یه الگوریتم باحال و کاربردی ماشین لرنینگ رو یاد گرفتیمالبته زیاد وارد بخش فرمولش نشدم ، که به نظرم برای کسانی که میخوان برای هوش مصنوعی این الگوریتم رو یاد بگیرن مناسب باشه.اولی معنی واژه ی رگرسیون رو متوجه شدیمبعدش کاربرد رگرسیون رو فهمیدیمبعد خود رگرسیون رو درک کردیم و یه مثال ازش زدیمو بعد هم با پایتون مثالی از رگرسیون خطی رو حل کردیم و در آخر مفهوم کلی رگرسیون خطی رو متوجه شدیم.امیدوارم از این مطلب خوشتون اومده باشه و مفهوم رگرسیون خطی رو متوجه شده باشید.تا مطلب بعدی خدانگهدار