درخت های مدل (Model Trees) – راهنمای کاربردی

در تصویر پایین، شماتیک استفاده از یک مدل درخت رگرسیون خطی برای «برازش» (Fit) مجموعه آموزش یکبُعدی به منظور پیدا کردن بخشهایی از مجموعه آموزش که با یک خط راست به خوبی برازش میشوند، ارائه شده است. در ادامه و پیش از عمیقتر شدن در این بحث که چرا درختهای مدل مفید وحائز اهمیت هستند، کد کامل پیادهسازی درختهای مدل ارائه میشود.

ساخت درخت های مدل
در الگوریتم CART (درخت دستهبندی و رگرسیون)، یک درخت با تقسیمبندی بازگشتی دادههای آموزش ساخته میشود. در مدل مذکور، آستانههای برش ویژگی در نظر گرفته میشوند که از این جمله میتوان به این مورد اشاره کرد که تقسیم دادهها موجب کاهش زیان وزنی کلی تا حد امکان شود. با تخصیص یک تابع زیان به مدل رگرسیون/دستهبندی، به هر یک از «گرههای» (Nodes) درخت، یک مدل تخصیص داده میشود که مفهوم درختهای مدل را ایجاد میکند. پیادهسازی آن در ادامه انجام شده است.
برای بصریسازی سریع چگونگی آنکه یک مدل میتواند اثبات کند که از درخت CART متداول مفیدتر است، میتوان مجموعه داده آموزش یکبُعدی ارائه شده در زیر را در نظر گرفت که تلاش میشود یک مدل رگرسیون خطی برای آن برازش داده شود (این دقیقا درخت مدل با عمق مساوی سفر یا همان depth=0 است). برازش، همانطور که انتظار میرفت ضعیف است، زیرا داده آموزش از یک چندجملهای مرتبه چهارم تولید شده است، اما اگر تقسیم دادهها به بخش x را در نظر بگیرید که با افزایش عمق درخت مدل رگرسیون خطی انجام میشود، میتوان یک مجموعه از رگرسورهای خطی را ساخت که به درستی بخشهای مجزا را برازش میکنند (depth=1, 2, 3, 4, 5). بنابراین، یک مدل به خوبی آموزش دیده، بدون نیاز به دانش صریح زیاد از پیچیدگی اساسی توزیع دادههای آموزش ارائه میشود.


کاربرد
در زیر، پارامترهای درخت مدل برای تنظیم پیش از اجرای کد ارائه شدهاند.
model: mean_regr, linear_regr, logistic_regr, svm_regr, modal_clf
max_depth: 1, 2, 3, 4, ...
min_samples_leaf: 1, 2, 3, 4, ...
search_type: "greedy", "grid", "adaptive"
n_search_grid: تعداد نقاط جستوجوی Grid یکتا (تنها در صورتی فعال میشود که search_type = grid یا search_type = adaptive.)
verbose: True, False
کد مربوط به ساخت درخت مدل
این کدها توسط «انسون ونگ» (Anson Wong) نوشته شدهاند.
پس از آنکه پارامترها تنظیم شدند، میتوان دستور زیر را اجرا کرد.
در دایرکتوری output، میتوان مدل ساخته شده را یافت (output/model_tree.p). یک بصریسازی از درخت ساخته شده موجود است (output/model_tree.png). فایل model_tree_pred.csv شامل پیشبینیهای درخت مدل و توصیفات «پیشمایش درخت» (Tree-Traversal) است.
آزمودن
برای حصول اطمینان از اینکه پیادهسازی درخت به درستی کار میکند، میتوان تابع تست را نیز اجرا کرد.
کد تابع تست به صورت زیر است و باید آن را در یک فایل با عنوان run_tests و پسوند py. ذخیره کرد.
هدف درخت مدل چیست؟
اگرچه امید در این نقطه از بین نمیرود. هدف از درخت مدل ساخت یک سلسله مراتب درخت تصمیم از مدل ساده به عنوان تلاشی برای برازش چندین بخش کوچکتر از مجموعه دادهها است (با استفاده از بخشبندی ویژگیها) که در آن مدل کلی به خوبی با مجموعه آموزش کامل برازش میشود.
برای نشان دادن صریح مفید بودن ساخت یک مدل درخت نسبت به یک درخت تصمیم معمول، میتوان مثال بیان شده در بالا را در نظر گرفت. یک چند جملهای یکبُعدی مرتبه چهارم مفروض است و تفاوت بین آموزش دادن یک رگرسور درخت مدل رگرسیون خطی با عمق کم و رگرسور درخت تصمیم پیشفرض کتابخانه سایکیتلرن در تصاویر ارائه شده در زیر قابل مشاهده هستند. این تصاویر پیشتر نیز ارائه شده بودند، ولیکن برای درک بهتر مطلب، تصاویر مجددا در این قسمت آورده میشوند.


در شکل اول، برازشهای درخت مدل رگرسیون خطی برای دادهها ترسیم شده و عمق درخت افزایش داده شده و در نهایت در عمق پنج به خوبی برای دادهها برازش پیدا کرده است (برای مثال ۰، ۱ و ۲). برازش به گونهای بوده که مدل به طور حریصانهای در تلاش برای کاهش زیان با پوشش دادن بخش بزرگی از چند جملهای است، بهگونهای که از دور به نظر میرسد یک خط هستند. با رسیدن به عمق ۴ و ۵، درخت مدل به خوبی وابستگی-x دادهها را چنانکه از چندجملهای مرتبه چهارم انتظار میرود پیدا کرده است.
اگر نوشته بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- آموزشهای داده کاوی یا Data Mining در متلب
- مجموعه آموزشهای مدلسازی، برازش و تخمین
- داده کاوی (Data Mining) — از صفر تا صد
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
^^
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













