درخت تصمیم و جنگل تصادفی در R – راهنمای کاربردی


«درخت تصمیم» (Decision tree) یک راهکار بسیار قدرتمند بصری برای تحلیل یک سری از خروجیهای پیشبینی شده برای یک مدل مشخص است. همچنین، از این الگوریتم اغلب به عنوان مکمل (و یا حتی جایگزین) تحلیل «رگرسیون» (Regression) در تعیین اینکه چگونه یک سری از «متغیرهای توصیفی» (Explanatory Variables) یک متغیر وابسته را تحت تاثیر قرار میدهند استفاده میشود. در مثال بیان شده در این مطلب، تاثیر متغیرهای توصیفی «سن» (age)، «جنسیت» (gender)، «مایل» (miles)، «اعتبار» (debt) (منظور اعتبار کارت بانکی یا همان کارت اعتباری فرد است) و «درآمد» (income) بر «متغیر وابسته» (dependent variable) «قیمت خودرو» (car sales) با استفاده از درخت تصمیم و «جنگل تصادفی» (Random Forest) تحلیل خواهد شد. مجموعه داده مورد استفاده در این مطلب، از مسیر (+) قابل دانلود است.
مساله دستهبندی و درخت تصمیم
ابتدا، مجموعه داده بارگذاری و متغیر پاسخ ساخته میشود (که برای درخت تصمیم مورد استفاده قرار میگیرد زیرا نیاز به تبدیل فروش از متغیر عددی به طبقهای وجود دارد):
سپس، دادههای آموزش و آزمون ساخته میشود (دادههایی که برای ساخت مدل مورد استفاده قرار خواهد گرفت و سپس دادههایی که برای آزمودن مدل استفاده میشوند).
سپس، درخت دستهبندی ساخته میشود.
توجه به این نکته لازم است که cp value چیزی است که سایز درخت مطلوب را تعیین میکند (در ادامه مشاهده میشود که خطای نسبی X-val هنگامی که سایز درخت برابر با ۴ است کمینه میشود). بنابراین، درخت تصمیم با استفاده از متغیر dtree و در نظر گرفتن این متغیر ساخته میشود.
هرس کردن درخت
سپس، درخت تصمیم «هرس» (pruned) میشود و طی آن «گرههای» (nodes) نامناسب از درخت برای جلوگیری از «بیشبرازش» (Overfitting) دادهها حذف میشوند.
مدل اکنون با استفاده از دادههای تست مورد آزمون قرار گرفته است و میتوان مشاهده کرد که درصد دستهبندی غلط برابر با ٪۱۶.۷۵ است.
واضح است که هر چه این میزان کمتر باشد بهتر است، بنابراین این امر از آن حکایت دارد که در حال حاضر مدل در پیشبینی «دادههای واقعی» صحیحتر عمل میکند.
حل مساله رگرسیون با درخت تصمیم
هنگامی که متغیرهای وابسته به جای طبقهای، عددی هستند، از درخت رگرسیون به صورت زیر استفاده میشود.
سپس، با استفاده از کد زیر درخت رگرسیون هرس میشود.
جنگل تصادفی
اگر درختهای تصمیم بسیاری وجود داشته باشند که هدف «برازش» (Fit) آنها بدون وقوع «بیشبرازش» (Overfitting) باشد، یک راهکار برای حل مساله استفاده از «جنگل تصادفی» (Random Forest) است.
یک جنگل تصادفی امکان تعیین مهمترین پیشبینها را در میان متغیرهای توصیفی با تولید درختهای تصمیم زیاد و رتبهدهی به متغیرها بر اساس اهمیت آنها فراهم میکند.
در شکل بالا می توان مشاهده کرد که اعتبار (کارت اعتباری) به عنوان مهمترین عامل علامتگذاری شده، در واقع مشتریانی که سطح اعتبار بالاتری دارند احتمال بیشتری دارد که پول بیشتری نیز برای خرید خودرو صرف کنند.
میتوان مشاهده کرد که ٪۸۷.۳۳ از تغییرات به وسیله «جنگل تصادفی» توصیف شده و خطا در تقریبا ۱۰۰ درخت کمینه شده است.
اگر نوشته بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامه نویسی پایتون (Python)
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- مجموعه آموزشهای هوش محاسباتی
- آموزش برنامهنویسی R و نرمافزار R Studio
- مجموعه آموزشهای برنامه نویسی متلب (MATLAB)
^^