تستتست

:0روز

:0ساعت

:0دقیقه

0ثانیه

فراگیری زبان برنامه نویسی R از پایه تا پیشرفته

فراگیری زبان برنامه نویسی R از پایه تا پیشرفته

فراگیری زبان برنامه نویسی R از پایه تا پیشرفته
سبد خرید0

سبد خرید

پشتیبانی

پشتیبانی:9114596785(98+)

https://geolearnr.ir/N/31d9

سبد خرید
کپی شد

نویسنده:سید جلیل علوی

بازدید:27

ثبت :دوشنبه, 03, دي,1403

اشتراک گذاری

معرفی کامل بسته tidymodels در یادگیری ماشین با استفاده از R

آشنایی با بسته قدرتمند tidymodels در R برای یادگیری ماشین

خلاصه مقاله


بسته tidymodels مجموعه‌ای از ابزارهای جامع در زبان R است که فرآیندهای مختلف یادگیری ماشین از پیش‌پردازش و نمونه‌گیری تا تنظیم ابرپارامترها و ارزیابی مدل را با یکپارچگی کامل و بر اساس اصول tidy داده فراهم می‌کند.

معرفی بسته tidymodels در یادگیری ماشین

بسته tidymodels در زبان برنامه نویسیR، مجموعه ای از ابزارها و توابع برای انجام تحلیل‌های پیشرفته داده و یادگیری ماشین است که با هدف ایجاد ابزارهای یکپارچه برای مدل‌سازی و پیش‌پردازش داده طراحی شده است. این بسته که توسط تیم RStudio  توسعه داده شده، شامل مجموعه‌ای از بسته‌های R است که فرآیندهای مختلف مربوط به یادگیری ماشین را پوشش می‌دهند.

بسته `tidymodels` با هدف ایجاد یک چارچوب یکپارچه برای مدل‌سازی و تحلیل داده‌ها در R ایجاد شده است. در این بسته، تلاش شده که تمامی ابزارهای مورد نیاز برای یادگیری ماشین و مدل‌سازی به شکلی استاندارد و منسجم گردآوری شود. این یکپارچگی با استفاده از مفاهیم و اصول tidyverse به دست آمده است که خود شامل مجموعه‌ای از ابزارها برای کار با داده‌ها به صورت ساختار یافته است.

یکی از مزایای اصلی tidymodels استفاده از فلسفه tidy data است که توسط Hadley Wickham معرفی شده است. در این رویکرد، داده ها به صورت منظم و ساختاریافته سازماندهی می شوند به طوری که هر ستون یک متغیر و هر ردیف یک مشاهده را نشان می دهد. این شیوه سازماندهی داده ها، کار با آنها را آسان تر کرده و امکان استفاده از توابع موجود در tidyverse را فراهم می کند.

در هسته اصلی tidymodels، چندین بسته کلیدی وجود دارد که هر کدام وظایف خاصی را بر عهده دارند:

 

بسته rsample به مدیریت نمونه‌گیری داده‌ها می‌پردازد و امکان تقسیم داده‌ها به مجموعه‌های آموزش و آزمون را فراهم می‌کند. این بسته همچنین ابزارهای قدرتمندی برای اعتبارسنجی متقابل و بوت‌استرپ ارائه می‌دهد.

 

Preprocessing and Feature Engineering Steps for Modeling • recipes

پیش‌پردازش داده‌ها و مهندسی ویژگی (Feature Engineering) از طریق بسته recipes انجام می‌شود. این بسته با الهام از مفهوم دستور پخت در آشپزی، امکان تعریف مجموعه‌ای از عملیات پیش‌پردازش را به صورت گام به گام فراهم می‌کند. بسته recipes یک ابزار انعطاف‌پذیر و قدرتمند برای پیش‌پردازش و آماده‌سازی داده‌ها قبل از مدل‌سازی است. این بسته به شما امکان می‌دهد مراحل پیش‌پردازش داده را به صورت یک شی recipe تعریف کنید. برخی از عملیات رایج پیش‌پردازش که recipes پشتیبانی می‌کند عبارتند از: نرمال‌سازی، کدگذاری متغیرهای کیفی، ایجاد متغیرهای جدید، مدیریت داده‌های مفقود و سایر عملیات پیش‌پردازش. نکته قابل توجه در مورد recipes این است که پیش‌پردازش داده‌ها را از مدل‌سازی جدا می‌کند، که باعث افزایش خوانایی و تکرارپذیری کد می‌شود.

 

یکی از نقاط قوت اصلی tidymodels، بسته parsnip است که رابط یکپارچه‌ای برای انواع مختلف مدل‌های آماری و یادگیری ماشین فراهم می‌کند. این بسته به کاربران اجازه می‌دهد تا با استفاده از یک syntax واحد، مدل‌های مختلف را تعریف و اجرا کنند، بدون اینکه نگران تفاوت‌های سینتکسی بین بسته‌های مختلف باشند. برای مثال، با استفاده از توابعی مانند linear_reg برای رگرسیون خطی، logistic_reg برای رگرسیون لجستیک، یا decision_tree برای درخت تصمیم، می‌توانید به راحتی مدل‌های مختلف را ایجاد کنید. این بسته با ارائه یک syntax واحد، پیچیدگی‌های کار با بسته‌های مختلف مدل‌سازی را کاهش می دهد. کاربران می‌توانند انواع مدل‌ها از رگرسیون خطی گرفته تا شبکه‌های عصبی پیچیده را با استفاده از یک رابط ساده و یکنواخت تعریف و اجرا کنند. بسته parsnip همچنین امکان تنظیم پارامترهای مدل و استفاده از موتورهای مختلف یادگیری ماشین (مانند ranger یا xgboost) را فراهم می‌کند.

 

تنظیم ابرپارامترها (Hyperparameters) یکی از چالش‌های اصلی در یادگیری ماشین است که بسته tune به خوبی آن را مدیریت می‌کند. بسته tune ابزاری قدرتمند برای بهینه‌سازی پارامترهای مدل با استفاده از روش‌های مختلف جستجو است. این بسته توابعی را ارائه می‌دهد که به شما امکان می‌دهد به طور خودکار بهترین ترکیب پارامترها را برای مدل خود پیدا کنید. برخی از روش‌های بهینه‌سازی که tune پشتیبانی می‌کند عبارتند از: جستجوی شبکه (grid search)، جستجوی تصادفی (random search)، و بهینه‌سازی بیزی (Bayesian optimization). همچنین، tune امکان موازی‌سازی فرآیند بهینه‌سازی را برای کاهش زمان محاسبات فراهم می‌کند. با استفاده از tune، می‌توانید مدل‌های خود را به طور خودکار تنظیم کنید و بهترین عملکرد را به دست آورید.

بسته workflows ابزاری برای ایجاد گردش کارهای مدل‌سازی یکپارچه و قابل تکرار است. این بسته به شما امکان می‌دهد مراحل پیش‌پردازش داده (با استفاده از recipes) و مدل‌سازی (با استفاده از parsnip) را در یک شی workflow ترکیب کنید. با استفاده از workflows، می‌توانید کل فرآیند مدل‌سازی را در یک شی واحد کپسوله کنید، که باعث افزایش خوانایی، سازماندهی، و تکرارپذیری کد می‌شود. همچنین، workflows امکان استفاده از پارامترهای تنظیم شده (با استفاده از tune) و ارزیابی مدل (با استفاده از yardstick) را در گردش کار فراهم می‌کند.

 

بسته yardstick مجموعه‌ای جامع از معیارهای ارزیابی عملکرد مدل را ارائه می‌دهد. این بسته توابعی را فراهم می‌کند که به شما امکان می‌دهد به راحتی کیفیت پیش‌بینی‌های مدل خود را ارزیابی کنید. برخی از معیارهای رایجی که yardstick محاسبه می‌کند عبارتند از: صحت (accuracy)، دقت (precision)، فراخوانی (recall)، امتیاز F1، و منحنی ROC. همچنین، این بسته توابعی برای محاسبه معیارهای رگرسیون مانند خطای مطلق میانگین (MAE)، خطای مربعات میانگین (MSE)، و ضریب تعیین (R-squared) ارائه می‌دهد. با استفاده از yardstick، می‌توانید به راحتی عملکرد مدل‌های خود را ارزیابی و مقایسه کنید.

 

بسته dials ابزاری برای تعریف و کار با پارامترهای مدل در فرآیند تنظیم پارامتر است. این بسته به شما امکان می‌دهد فضای پارامتر مدل خود را به صورت یک شی param تعریف کنید. برای مثال، می‌توانید محدوده مقادیر ممکن برای پارامترهایی مانند نرخ یادگیری، تعداد درختان در یک جنگل تصادفی، یا پارامتر جریمه در رگرسیون Ridge را مشخص کنید. dials همچنین توابعی برای نمونه‌گیری از فضای پارامتر و ایجاد شبکه‌ای از پارامترها برای جستجو ارائه می‌دهد. با استفاده از dials، می‌توانید به راحتی فضای پارامتر مدل خود را تعریف و کاوش کنید.

 

بسته broom ابزاری برای تبدیل خروجی مدل‌های آماری به فرمت tidy و تمیز است. این بسته توابعی را ارائه می‌دهد که به شما امکان می‌دهد نتایج مدل‌ها را به دیتافریم های تمیز تبدیل کنید، که با سایر توابع tidy در R سازگار هستند. برخی از توابع اصلی broom عبارتند از: tidy برای استخراج ضرایب و آماره‌های مدل، glance برای استخراج معیارهای خلاصه مدل، و augment برای اضافه کردن ستون‌های جدید (مانند پیش‌بینی‌ها یا باقیمانده‌ها) به داده‌های اصلی. با استفاده از broom، می‌توانید نتایج مدل‌های خود را به راحتی تجزیه و تحلیل، تصویرسازی، و گزارش کنید.

 

 

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

 

 

بسته spatialsample یک ابزار تخصصی برای نمونه‌گیری از داده‌های مکانی در R است. این بسته با در نظر گرفتن ویژگی‌های منحصر به فرد داده‌های جغرافیایی، روش‌های پیشرفته‌ای را برای تقسیم و نمونه‌گیری از این داده‌ها ارائه می‌دهد. با استفاده از توابع این بسته، می‌توانید نمونه‌های تصادفی را با در نظر گرفتن وابستگی‌های مکانی انتخاب کنید، طرح‌های نمونه‌گیری طبقه‌بندی شده را پیاده‌سازی کنید و حتی نمونه‌گیری را بر اساس معیارهای خاص مانند فاصله یا تراکم انجام دهید. بسته spatialsample برای پژوهشگرانی که با داده‌های مکانی سر و کار دارند، مانند اکولوژیست‌ها و متخصصان سنجش از دور، ابزاری ارزشمند است.

مشکل عدم توازن در داده‌ها یکی از چالش‌های مهم در یادگیری ماشین است، به‌ویژه زمانی که یک کلاس در مجموعه داده‌ها بسیار بیشتر از کلاس‌های دیگر باشد. بسته themis راه حلی کارآمد برای مقابله با مشکل عدم توازن کلاس در مجموعه داده‌ها ارائه می‌دهد. عدم توازن کلاس زمانی رخ می‌دهد که توزیع نمونه‌ها در کلاس‌های مختلف نامتعادل باشد، که می‌تواند عملکرد مدل‌های یادگیری ماشین را تحت تأثیر قرار دهد. بسته themis با ارائه تکنیک‌های مختلف نمونه‌گیری مجدد، مانند روش‌های بیش‌نمونه‌گیری (oversampling) و کم‌نمونه‌گیری (undersampling)، به حل این مشکل کمک می‌کند. همچنین، این بسته با بسته recipes در tidymodels یکپارچه شده است، به طوری که می‌توانید به راحتی گام‌های متوازن‌سازی را به پیش‌پردازش داده‌ها اضافه کنید. با استفاده از themis، می‌توانید کیفیت و قابلیت تعمیم مدل‌های خود را در مواجهه با داده‌های نامتوازن بهبود بخشید.

 

 

بسته infer رویکردی مدرن و شهودی به استنباط آماری در R ارائه می‌دهد. این بسته بر پایه مفاهیم شبیه‌سازی و بازنمونه‌گیری بنا شده است و به شما امکان می‌دهد آزمون فرضیه و ساخت فواصل اطمینان را به شیوه‌ای ساده و قابل فهم انجام دهید. با استفاده از توابع این بسته، می‌توانید فرضیه‌های آماری را تعریف کنید، داده‌ها را شبیه‌سازی کنید و نتایج را با استفاده از روش‌های بازنمونه‌گیری مانند جایگشت و بوت‌استرپ ارزیابی کنید. بسته infer با سایر بسته‌های tidymodels به خوبی یکپارچه شده است و به شما امکان می‌دهد استنباط آماری را در چارچوب tidy انجام دهید. این بسته برای افرادی که به دنبال درک عمیق‌تر مفاهیم آماری هستند و می‌خواهند تحلیل‌های خود را با استفاده از رویکردهای مدرن انجام دهند، ایده‌آل است.

Tidy Model Stacking • stacks

 

 

 

بسته stacks ابزاری قدرتمند برای ایجاد و ارزیابی مدل‌های ترکیبی (ensemble models) در R است. مدل‌های ترکیبی با ترکیب پیش‌بینی‌های چندین مدل پایه، عملکرد پیش‌بینی را بهبود می‌بخشند. بسته stacks رابط کاربری ساده و یکپارچه‌ای را برای ساخت و تنظیم مدل‌های ترکیبی فراهم می‌کند. با استفاده از توابع این بسته، می‌توانید مدل‌های پایه را آموزش دهید، وزن‌های بهینه برای ترکیب مدل‌ها را تعیین کنید و عملکرد مدل ترکیبی نهایی را ارزیابی کنید. بسته stacks از رویکردهای مختلفی مانند رأی‌گیری اکثریت، میانگین‌گیری وزنی و stacking برای ترکیب مدل‌ها پشتیبانی می‌کند. این بسته برای زمانی که می‌خواهید دقت پیش‌بینی را به حداکثر برسانید و از مزایای ترکیب مدل‌های مختلف بهره‌مند شوید، ایده‌آل است.

بسته finetune بسط بسته tune در tidymodels است و روش‌های پیشرفته‌تری را برای تنظیم ظریف ابرپارامترهای مدل ارائه می‌دهد. تنظیم ابرپارامترها فرآیندی است که طی آن مقادیر بهینه برای پارامترهای کنترلی مدل جستجو می‌شوند تا عملکرد مدل بهبود یابد. بسته finetune الگوریتم‌های بهینه‌سازی پیشرفته‌ای مانند تبرید شبیه سازی شده  را در اختیار شما قرار می‌دهد. این الگوریتم‌ها با استفاده از استراتژی‌های هوشمندانه، فضای پارامتر را به طور کارآمد جستجو می‌کنند و به شما امکان می‌دهند مدل‌های با عملکرد بهینه را در زمان کمتری پیدا کنید. همچنین، بسته finetune ابزارهایی را برای ارزیابی و مقایسه نتایج تنظیم ابرپارامترها فراهم می‌کند. با استفاده از این بسته، می‌توانید فرآیند تنظیم مدل را بهبود بخشید و مدل‌های با کارایی بالاتر را توسعه دهید.

 

یکی از ویژگی‌های برجسته tidymodels، یکپارچگی و انسجام آن است. تمام بسته‌های این مجموعه از اصول مشابهی پیروی می‌کنند و با یکدیگر به خوبی کار می‌کنند. این یکپارچگی باعث می‌شود کاربران بتوانند کد تمیز و خوانایی تولید کنند که به راحتی قابل نگهداری و توسعه است.

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

قابلیت تکرارپذیری یکی دیگر از نقاط قوت tidymodels است. تمام مراحل فرآیند مدل‌سازی به صورت خودکار ثبت می‌شوند و می‌توان نتایج را به راحتی بازتولید کرد. این ویژگی برای پروژه‌های تحقیقاتی و کاربردهای صنعتی بسیار ارزشمند است.

در مقایسه با سایر ابزارهای مدل‌سازی مانند caret یا mlr3، tidymodels  رویکرد مدرن‌تر و منسجم‌تری ارائه می‌دهد. با این حال، استفاده از tidymodels نیز چالش‌هایی دارد. منحنی یادگیری آن می‌تواند برای کاربران تازه‌کار نسبتاً تند باشد و نیاز به آشنایی با اصول tidyverse دارد.

فرایند مدلسازی در tidymodels

فرایند مدلسازی با استفاده از tidymodels در R شامل مجموعه‌ای از مراحل استاندارد است که هر کدام نقش خاصی در ساخت و ارزیابی مدل‌های آماری و یادگیری ماشین ایفا می‌کنند.

A diagram of a road with colorful labels

Description automatically generated

1. آماده‌سازی داده‌ها 

اولین گام در هر فرآیند مدلسازی، آماده‌سازی داده‌ها است. در این مرحله:

- بارگذاری داده‌ها: داده‌ها ابتدا باید وارد محیط R شوند. این داده‌ها می‌توانند در قالب‌های مختلفی مانند CSV، Excel یا پایگاه‌های داده دیگر باشند.

- تقسیم داده‌ها: سپس باید داده‌ها به مجموعه‌های آموزشی (training set) و آزمایشی (testing set) تقسیم شوند تا امکان ارزیابی عملکرد مدل روی داده‌های جدید وجود داشته باشد. بسته `rsample` در tidymodels این کار را با استفاده از توابعی مانند `initial_split` انجام می‌دهد. به عنوان مثال، معمولاً داده‌ها به دو بخش تقسیم می‌شوند: 70 درصد برای آموزش و 30 درصد برای آزمایش.

2. پیش‌پردازش داده‌ها 

در این مرحله، داده‌های اولیه باید به شکلی مناسب برای مدلسازی تبدیل شوند. این شامل مراحل زیر است:

- نرمال‌سازی و استانداردسازی: به‌منظور مقایسه درست ویژگی‌ها و جلوگیری از اثر مقیاس‌ها در مدل‌ها، ممکن است نیاز به نرمال‌سازی (برای مثال با استفاده از `step_center` یا `step_scale` در بسته `recipes`) داشته باشید.

- تبدیل متغیرها: این کار می‌تواند شامل تبدیل داده‌های غیر عددی به مقادیر عددی، کدگذاری متغیرهای دسته‌ای با استفاده از تکنیک‌هایی مانند one-hot encoding باشد.

- انتخاب ویژگی: با استفاده از تکنیک‌های انتخاب ویژگی، می‌توان ویژگی‌های مؤثرتر را برای مدل انتخاب کرد و ویژگی‌های کم‌اثر را کنار گذاشت.

- مقابله با داده‌های مفقود یا گمشده: بسته `recipes` این امکان را فراهم می‌کند که روش‌های مختلفی برای مدیریت داده‌های گمشده اعمال کنید، مانند جایگزینی مقادیر گمشده با میانگین یا مد.

3. تعریف مدل 

در این مرحله، مدل مورد نظر برای حل مسئله انتخاب می‌شود. بسته `parsnip` این امکان را فراهم می نماید تا مدل‌ها را به‌صورت یکسان و یکنواخت برای انواع مختلف الگوریتم‌ها تعریف کنید. این بسته از مدل‌های مختلف پشتیبانی می‌کند. برای مدل‌های یادگیری ماشین مانند جنگل تصادفی، ماشین‌های بردار پشتیبان (SVM)، رگرسیون خطی و ... می‌توان مدل را با استفاده از `parsnip` مشخص کرد. به‌عنوان مثال، برای انتخاب یک مدل جنگل تصادفی، می‌توان از تابع `rand_forest` استفاده کرد و پارامترهایی مانند تعداد درختان (`trees`) را تنظیم کرد.

A person standing on a staircase

Description automatically generated

4. ایجاد workflow 

پس از آماده‌سازی داده‌ها و انتخاب مدل، گام بعدی ایجاد workflow است. در این مرحله، بسته `workflows` این امکان را فراهم می نماید تا مدل و مراحل پیش‌پردازش را در قالب یک شیء واحد ترکیب کنید. این ترکیب موجب می‌شود که تمام فرآیندهای مدلسازی، از پیش‌پردازش داده‌ها تا تعریف مدل، در یک چارچوب واحد و منظم قرار گیرند. برای این کار، باید از `workflow()` برای ترکیب مراحل پیش‌پردازش (که با `recipes` تعریف کرده‌اید) و مدل (که با `parsnip` مشخص کرده‌اید) استفاده کنید.

5. آموزش مدل 

در این مرحله، مدل آموزش داده می‌شود. با استفاده از تابع `fit` که برای شیء workflow تعریف شده است، مدل بر اساس داده‌های آموزشی (training set) آموزش می‌بیند. این مرحله برای به‌روزرسانی پارامترهای مدل به‌طور خودکار انجام می‌شود تا بهترین پیش‌بینی را برای داده‌های ورودی داشته باشیم. همچنین در این مرحله می‌توان براساس داده‌های جدید، پیش‌بینی را انجام داد.

6. ارزیابی مدل 

پس از آموزش مدل، باید عملکرد آن را بر روی داده‌های آزمایشی (testing set) ارزیابی کنید تا از قابلیت تعمیم مدل اطمینان حاصل کنید. بسته `yardstick` ابزارهایی برای ارزیابی عملکرد مدل در اختیارتان می‌گذارد:

- معیارهای ارزیابی: معیارهایی مانند دقت (Accuracy)، حساسیت (Sensitivity)، ویژه‌گی (Specificity)، دقت پیش‌بینی (Precision) و نمره F1 برای ارزیابی عملکرد مدل استفاده می‌شوند.

- استفاده از توابع ارزیابی: برای ارزیابی مدل می‌توانید از توابع `metrics` یا `roc_auc` برای محاسبه معیارهای مختلف استفاده کنید.

A diagram of performance measurement

Description automatically generated

7. تنظیم هایپرپارامترها 

در صورتی که نیاز به بهبود عملکرد مدل داشته باشید، تنظیم هایپرپارامترها یکی از روش‌های مهم است. بسته `tune` این امکان را فراهم می‌آورد که:

- جستجو شبکه‌ای (Grid Search): برای پیدا کردن ترکیب بهینه‌های هایپرپارامترها می‌توان از جستجو شبکه‌ای استفاده کرد که تمام ترکیب‌های ممکن از پارامترها را بررسی می‌کند.

- تنظیم خودکار هایپرپارامترها: علاوه بر جستجو شبکه‌ای، می‌توان از روش‌های خودکار برای تنظیم هایپرپارامترها استفاده کرد تا به بهترین عملکرد برسیم.

A person standing on a staircase

Description automatically generated

8. استقرار مدل 

پس از اطمینان از عملکرد مناسب مدل، استقرار مدل مرحله نهایی است. در این مرحله:

- ذخیره مدل نهایی: مدل آموزش‌دیده و تنظیم‌شده باید ذخیره شود تا بتوان از آن برای پیش‌بینی داده‌های جدید استفاده کرد. می‌توانید از توابعی مانند `saveRDS` برای ذخیره مدل نهایی استفاده کنید.

- استفاده برای پیش‌بینی: پس از ذخیره مدل، می‌توانید از آن برای پیش‌بینی نتایج بر اساس داده‌های جدید استفاده کنید. این داده‌ها می‌توانند به‌طور مستقیم وارد مدل شوند تا پیش‌بینی‌هایی برای داده‌های جدید انجام شود.

مثال

نحوه پیاده سازی الگوریتم جنگل تصادفی در `tidymodels

جنگل تصادفی (Random Forest) یک الگوریتم محبوب یادگیری ماشین است که با ایجاد چندین درخت تصمیم‌گیری و ترکیب نتایج آن‌ها، پیش‌بینی‌های قوی‌تری انجام می‌دهد. در مجموعه بسته‌های `tidymodels`، می‌توان جنگل تصادفی را با بسته‌هایی مانند `parsnip`، `tune` و `workflow` پیاده‌سازی کرد. در ادامه، یک مثال کاربردی ارائه می‌شود که نحوه استفاده از این الگوریتم را به همراه تنظیم ابرپارامترها نشان می‌دهد.

گام اول: آماده‌سازی داده‌ها 

فرض نمایید می‌خواهیم با استفاده از داده‌ی `mtcars`، مصرف سوخت (متغیر `mpg`) را بر اساس ویژگی‌های دیگر پیش‌بینی کنیم.

بار گذاری کتابخانه‌ها:

library(tidymodels)

library(tidyverse)

تقسیم داده:

data(mtcars)

mtcars_split <- initial_split(mtcars, prop = 0.8)

mtcars_train <- training(mtcars_split)

mtcars_test <- testing(mtcars_split)

گام دوم: تعریف مدل جنگل تصادفی 

با استفاده از بسته‌ی `parsnip`، یک مدل جنگل تصادفی را تعریف می‌کنیم.

تعریف مدل پایه:

 

rf_model <- rand_forest(

  mtry = tune(),       

  trees = 1000,        

  min_n = tune()
) %>%

  set_engine("ranger") %>%

  set_mode("regression") 
 

 

گام سوم: ایجاد دستور پخت (Recipe

برای پیش‌پردازش داده‌ها از `recipe` استفاده می‌کنیم.

rf_recipe <- recipe(mpg ~ ., data = mtcars_train) %>%

  step_normalize(all_numeric_predictors()) %>%

  step_zv(all_predictors())                  

دستور step_normalize برای نرمال‌سازی متغیرهای عددی و دستور step_zv برای حذف متغیرهای با واریانس صفر استفاده می‌شود. متغیرهایی که هیچ تغییری در داده‌ها ندارند و واریانس آن ها صفر است (مثلاً همه مقادیرشان برابر است)، هیچ اطلاعات مفیدی برای مدل فراهم نمی‌کنند و باید حذف شوند.

 

گام چهارم: تعریف گردش کار (Workflow

مدل و دستور پخت را در یک گردش کار ترکیب می‌کنیم.

rf_workflow <- workflow() %>%

  add_model(rf_model) %>%

  add_recipe(rf_recipe)

گام پنجم: تنظیم پارامترها 

برای تنظیم پارامترهای `mtry` و `min_n` از روش های مختلفی همانند جستجوی شبکه‌ای (Grid Search) استفاده می‌کنیم.

تعریف شبکه ابرپارامترها:

rf_grid <- grid_regular(

  mtry(range = c(1, ncol(mtcars_train) - 1)),

  min_n(range = c(2, 10)),                  

  levels = 5)

تنظیم مدل با اعتبارسنجی متقابل:

set.seed(123)

rf_resamples <- vfold_cv(mtcars_train, v = 5)

 

rf_tune_results <- rf_workflow %>%

  tune_grid(

    resamples = rf_resamples,

    grid = rf_grid,

    metrics = metric_set(rmse, rsq))

بهترین پارامترها:

best_params <- rf_tune_results %>%

  select_best(metric = "rmse")

گام ششم: آموزش مدل با بهترین پارامترها 

پس از انتخاب بهترین پارامترها، مدل نهایی را آموزش می‌دهیم.

final_rf_model <- finalize_workflow(

  rf_workflow,

  best_params)

 

final_rf_fit <- final_rf_model %>%

  fit(data = mtcars_train)

 

گام هفتم: ارزیابی مدل 

مدل آموزش‌دیده را بر روی داده‌های آزمایشی ارزیابی می‌کنیم.

rf_predictions <- predict(final_rf_fit, mtcars_test) %>%

  bind_cols(mtcars_test)

 

metrics <- rf_predictions %>%

  metrics(truth = mpg, estimate = .pred)

print(metrics)

 

جمع‌بندی 

فرآیند مدل سازی با استفاده از tidymodels در R، یک رویکرد ساختاریافته و سازمان‌یافته است که شامل مراحل متنوعی از آماده‌سازی داده‌ها تا ارزیابی و استقرار مدل می‌شود. هر یک از این مراحل به کمک بسته‌های خاص و توابع موجود در tidymodels قابل انجام هستند و هدف از آنها بهبود دقت و قابلیت تعمیم مدل‌ها است. این روند باعث می‌شود که فرایند مدلسازی، سریع‌تر، ساده‌تر و بازتولیدپذیرتر باشد.

نظرات کاربران

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

جهت ثبت نظر وارد سایت شوید ورود

عضویت در خبرنامه