روشهای رگرسیون در R — کاربرد در یادگیری ماشین (قسمت اول)
در نوشتار فرادرس با عنوان آموزش رگرسیون — مجموعه مقالات جامع وبلاگ فرادرس انواع روشهای رگرسیونی یک و چند گانه، بخصوص روشهایی که در «یادگیری ماشین» (Machine Learning) به کار میروند، معرفی شدند. همچنین در مطلب رگرسیون خطی — مفهوم و محاسبات به زبان ساده شیوه محاسبات رگرسیون خطی ساده و آزمونهای مربوط به آن به طور کامل شرح داده شد.
ولی در این مطلب به شیوه پیادهسازی محاسبات رگرسیون در زبان برنامهنویسی R میپردازیم. در این بین از محیط Rstudio برای ورود و اجرای کدها بهره برده و خروجیها را دریافت میکنیم. در قسمت اول به بررسی رگرسیون خطی ساده و چند گانه پرداخته و در قسمت دوم نیز روشهای رگرسیون برای دادههای طبقهای و رگرسیون گام به گام را معرفی خواهیم کرد و کدهای مربوط به پیادهسازی این تکنیکها در زبان برنامهنویسی R معرفی خواهند شد.
روشهای رگرسیونی
یکی از روشهای معمول در یادگیری ماشین، تکنیک رگرسیون یا برازش خط است که به طور گسترده در «علم داده» (Data Science) به کار گرفته میشود.
برای مثال به منظور شناسایی پیام یا «هرزنامهها» (Spams) از روشهای یادگیری ماشین کمک گرفته میشود که وابسته به محاسبات رگرسیونی هستند.
بعضی از کاربردهای یادگیری ماشین در ادامه فهرست شدهاند.
- شناسایی پیامهای ناخواسته یا هرزنامهها در صندوق پست الکترونیک
- بخشبندی مشتریان به منظور ارسال تبلیغات موثرتر
- کاهش معاملات جعلی کارت اعتباری
- بهینهسازی مصرف انرژی در خانه و ساختمانهای اداری
- تشخیص چهره
قبل از شروع پیادهسازی الگوریتمهای یادگیری ماشین و رگرسیون، بهتر است ابتدا تفاوت «یادگیری نظارت شده» (Supervised Learning) و «یادگیری نظارت نشده» (Unsupervised Learning) را یادآوری کنیم.
یادگیری نظارت شده
اگر «دادههای آموزشی» (Training Data) شامل برچسب یا متغیری باشند که نشاندهنده تعلق هر مشاهده یه یک گروه باشد، از الگوریتمهای یادگیری نظارت شده استفاده خواهیم کرد. با این کار با استفاده از الگویی که مدل یادگیری نظارت شده ایجاد میکند، میتوانیم برچسب تعلق به گروه را برای مشاهدات جدیدی که دارای برچسب نیستند، تعیین کنیم.
برای اجرای یادگیری نظارت شده معمولا از دو روش استفاده میشود.
«طبقهبندی» (Classification) یا «ردهبندی» (Discriminant Analysis) یکی از پرکاربردترین تکنیکهای آماری به منظور شناسایی برچسب برای مشاهدات جدید است. یکی از کاربردهای این روشها، تشخیص هرزنامهها (Spam Filtering) است. به این ترتیب الگوریتم براساس مثالهایی که از قبل آموخته، قاعدهای برای تشخیص سالم یا ناسالم بودن نامه الکترونیکی پیدا میکند.
«روشهای رگرسیون» (Regression Methods) نیز از تکنیکهای معمول برای پیشبینی مقدار «متغیر پاسخ» (Response) براساس مقدار «متغیرهای توصیفی» (Explanatory) است. گاهی متغیر پاسخ را «متغیر وابسته» (Dependent Variable) و متغیرهای توصیفی را «متغیرهای مستقل» (Independent Variable) نیز مینامند.
برای مثال به کمک روشهای رگرسیونی میتوان ارزش بازار سهام را پیشبینی کرد. در ادامه الگوریتمهای پایهای که در یادگیری نظارت شده به کار میرود، معرفی شدهاند.
- رگرسیون خطی (Linear Regression)
- رگرسیون لجستیک (Logistic Regression)
- نزدیکترین همسایه (K-Nearest Neighbor- KNN)
- ماشین بردار پشتیبان (Support Vector Machine-SVM)
- درخت تصمیم و جنگل تصادفی (Decision Tree and Random Forest)
- شبکه عصبی (Neural Network)
یادگیری نظارت نشده
در یادگیری نظارت نشده، دادههای آموزشی بدون برچسب هستند در نتیجه مدل یادگیری نظارت نشده، سعی میکند بدون هیچ مرجع یا الگوی اولیهای، دستهبندی و گروهبندی را انجام دهد. در لیست زیر بعضی از الگوریتمهای که در یادگیری نظارت نشده به کار میروند، معرفی شدهاند.
- خوشهبندی k-میانگین (K-mean Cluster Analysis)
- خوشهبندی سلسله مراتبی (Hierarchical Cluster Analysis)
- روش EM و خوشهبندی برمبنای مدل توزیع (Expectation Maximization - EM Model Based Clustering)
- تحلیل مولفههای اصلی (Principal Component Analysis- PCA)
رگرسیون خطی ساده
رگرسیون خطی به یک سوال ساده پاسخ میدهد: چگونه میتوان مقدار ارتباط بین یک متغیر هدف (Target) و مجموعهای از متغیرهای پیشگو (Predictors) را اندازه گرفت؟
در این حال متغیر هدف همان متغیر وابسته و متغیرهای پیشگو نیز همان متغیرهای مستقل هستند. مدل خطی در رگرسیون ساده به صورت زیر نوشته میشود:
در این رابطه متغیر وابسته، متغیر مستقل و نیز مولفه خطای مدل محسوب میشود. همچنین پارامترهای این مدل خطی ، «عرض از مبدا» (Intercept) و شیب خط (Slope) است.
- متغیر وابسته، y = Dependent Variable
- متغیر مستقل، x = Independent Variable
- جمله خطا Random Error Component
- عرض از مبدا Intercept
- شیب خط (ضریب متغیر مستقل) Coefficient of x
به تصویر زیر توجه کنید.
شیب خط در حالت رگرسیون خطی ساده، نشان میدهد که میزان حساسیت متغیر وابسته به متغیر مستقل چقدر است. به این معنی که متوجه میشویم با افزایش یک واحد به مقدار متغیر مستقل چه میزان متغیر وابسته تغییر خواهد کرد. عرض از مبدا نیز بیانگر مقداری از متغیر وابسته است که به ازاء صفر بودن مقدار متغیر مستقل محاسبه میشود. به شکل دیگر میتوان مقدار ثابت یا عرض از مبدا را مقدار متوسط متغیر وابسته به ازاء حذف متغیر مستقل در نظر گرفت.
به منظور برآورد پارامترهای مدل رگرسیون ساده از روش «کمترین مربعات عادی» (Ordinary Least Square- OLS) استفاده میکنیم. این روش با کمینهسازی جمع مربعات جملههای خطا، عمل برآورد پارامترها را انجام میدهد. در اینجا جملههای خطا همان تفاوت بین مقدار واقعی و پیشبینی شده برای متغیر پاسخ یا متغیر وابسته است.
ولی بهتر است قبل از برآورد پارامترها و تعیین مدل رگرسیونی، به رابطه بین دو متغیر توجه کنیم. رابطه بین دو متغیر مستقل و پاسخ را میتوان بوسیله نمودار پراکندگی (Scatterplot) نمایش داد.
نمودار پراکندگی (Scatterplot)
در اینجا از مجموعه داده سادهای که در مورد میزان قد و وزن فرد است استفاده میکنیم. این اندازهها برای ۱۵ مشاهده ثبت شده و از اینجا قابل دریافت است. این فایل به صورت فشرده بوده ولی با باز کردن آن امکان دسترسی به فایلی با قالب CSV وجود دارد. این گونه فایلها، اطلاعات را به صورت متنی ذخیره کرده ولی ساختاری جدولی دارند. نمایش دادن اطلاعات این فایلها بوسیله نرمافزار اکسل امکانپذیر است. برای رسم نمودار پراکندگی از کتابخانه ggplot2 استفاده کرده و کدهای زیر را اجرا میکنیم.
1library(ggplot2)
2path <- 'women.csv'
3df <-read.csv(path)
4ggplot(df,aes(x=height, y = weight))+
5 geom_point()
در این مجموعه داده، در متغیر weight وزن و در متغیر height قد فرد ثبت شده است. با اجرای این دستورات در محیط Rstudio، خروجی به صورت زیر ظاهر خواهد شد. همانطور که انتظار داشتیم، ۱۵ نقطه در مختصات صفحه ترسیم شده که هر نقطه بیانگر قد و وزن یک فرد است. از آنجایی اطلاعات ۱۵ نفر در دسترس بود، ۱۵ نقطه نیز در نمودار ظاهر شده.
براساس این نمودار، وجود رابطه خطی بین دو متغیر مشاهده میشود و مشخص است که با افزایش قد، وزن افراد نیز بیشتر میشود. حالا به کمک برآورد پارامترهای مدل رگرسیونی، ارتباط بین قد و وزن به صورت یک رابطه ریاضی نوشته خواهد شد.
برآوردهای کمترین مربعات
در برآورد پارامترهای رگرسیون به کمک تکنیک OLS، از مشتق و کمینهسازی مجموع مربعات خطا استفاده میشود که محاسبات مربوط به آن در نوشتار رگرسیون خطی — مفهوم و محاسبات به زبان ساده به تفصیل بیان شده است. بر این اساس، برآورد پارامترهای مدل خطی به صورت زیر خواهند بود.
که در آن و میانگین و هستند. همانطور که قبلا هم گفته شد اگر متغیر مستقل حذف شود، پارامتر همان میانگین متغیر وابسته یا پاسخ خواهد بود.
برای راحتی محاسبات، میتوان برآورد را به فرم دیگری نیز نوشت:
در زبان برنامهنویسی R برای محاسبه واریانس از دستور var و به منظور محاسبه کوواریانس از تابع cov استفاده میشود.
1beta1 <- cov(df$height, df$weight) / var (df$height)
2beta1
با اجرای این دستورات مقدار 3.4 برای ضریب متغیر حاصل میشود. همچنین برای بدست آوردن عرض از مبدا، محاسبات را به صورت زیر انجام میدهیم.
1beta0 <- mean(df$weight) - beta1 * mean(df$height)
2beta0
سلام.
روی این دادهها نمیتوان رگرسیون خطی درنظر گرفت زیرا متغیرها مستقل همبستگی دارند.