درخت تصمیم

درخت تصمیم

decision tree
هوش مصنوعي یادگیری ماشین

درخت تصمیم

درخت تصمیم چیست؟

درخت تصمیم (Decision Tree) جز الگوریتم های یادگیری ماشین با ناظر محسوب می شود که برای هر دو مساله رگرسیون و طبقه‌­ ای مورد استفاده قرار می گیرد. زمانی که درخت برای کارهای طبقه‌­بندی استفاده می‌­شود، به عنوان درخت طبقه­‌بندی شناخته می‌­شود و در حوزه رگرسیون به عنوان درخت رگرسیون شناخته می­ شود.

اجزای درخت تصمیم

هر درخت تصمیم شامل سه گره زیر می باشد:

decision tree
بخش های درخت تصمیم
  • برگ (Leaf Nodes): هر گره­ ای که نتیجه نهایی بعد از تقسیمات متوالی را مشخص می کند. گره نهایی برگ مشخص کننده کلاس داده است.
  • ریشه (Root Node): منظور از ریشه، پر اهمیت ترین گره که تقسیمات درخت از این گره شروع می شود.
  • شاخه (Branches): هر گره داخلی به تعداد جواب‌­های ممکن شاخه بخش بخش می‌­شود.

معیار های انتخاب ریشه

در هر مرحله باید گره انشعابی مشخص شود این به معنای انتخاب بهترین گزینه (ویژگی) برای تفکیک داده ها می باشد. سه معیار انتخاب مشخصه شناخته شده عبارتند از:

  • Information gain
  • Gain ratio
  • Gini index

الگوریتم تولید درخت تصمیم:

آنتروپی: آنتروپی معیاری برای سنجش میزان عدم قطعیت در داده‌هاست. انتروپی بالا نشان‌دهنده پراکندگی زیاد در کلاس‌هاست.

Entropy formula
فرمول انتروپی

بهره اطلاعات IG: فاوت انتروپی قبل و بعد از تقسیم داده‌ها بر اساس یک ویژگی. ویژگی با بالاترین بهره اطلاعات (یا پایین‌ترین انتروپی بعد از تقسیم) به عنوان گره ریشه انتخاب می‌شود. هدف انتخاب ویژگی با بیشینه IG به عنوان گره می باشد.

Gain Information
بهره اطلاعات

اندیس Gini : این نام تابع هزینه (cost function) ای است که معیاری برای سنجش ناپاکی (Impurity) در داده‌هاست. ویژگی با پایین‌ترین اندیس جینی انتخاب می‌شود.. که مقدار بهینه ان معادل صفر می باشد.

gini index formula
اندیس Gini
Attribute selection measure table
مقدار ایده آل برای انتخاب ویزگی ریشه

 شاخص جینی وقتی زمان محاسبات مد نظر است از سایر معیار ها سریع تر می باشد.

الگوریتم های ساخت درخت تصمیم

محبوب ترین الگوریتم ها برای ساخت درخت های تصمیم ID3، C5.0 و CART هستند که از معیار های ارزیابی متفاتی بهره می برند در جدول زیر می توانید چندین الگورتیم معرفی شده برای ساخت درخت تصمیم را ببینید و با هم مقایسه کنید.

کاهی در روند ساخت درخت تصمیم با شاخه های بیشماری مواجه می شویم که منجر به بیش برازش درخت تصمیم می شود برای از بین بردن این مش از مفهوم هرس درخت به معنای حذف شاخه های اضافه بهره می بریم . به طور کلی دو تکنیک هرس درخت وجود دارد :

  • هرس قبل ساخت درخت : برای انجام پیش هرس می توانیم از پارامترهای min نمونه، حداکثر عمق، حداقل برگ و غیره در حین ساخت خود مدل استفاده کنیم.
  • هرس بعد ساخت درخت : اول درخت را ساخته و پس از آن می توان شاخه های اضافی را حذف کرد.

برای حل مشکل Overfitting می توانیم به سراغ تکنیک های Ensemble برویم. درخت‌های تصمیم اغلب به عنوان مدل پایه در روش‌های یادگیری گروهی مانند بگینگ (Random Forest) و بوستینگ (XGBoost) استفاده می‌شوند تا معایب آن‌ها (مانند بیش‌برازش و حساسیت به نویز) کاهش یابد.

مزایا و معایب درخت تصمیم

در میان ابزارهای پشتیبانی تصمیم، درخت تصمیم و دیاگرام تصمیم دارای مزایای زیر هستند:

  • فهم ساده و قابلیت تفسیر پذیری درخت تصمیم
  • کار کردن با داده‌های بزرگ و پیچیده
  • استفاده مجدد آسان بعد از ساخت یک درخت تصمیم برای داده های تست
  • قابلیت ترکیب با روش‌های دیگر و تقویت تصمیم گیری

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

  • هزینه محاسباتی درخت‌های تصمیم به صورت نمایی با بزرگ شدن مسئله بزرگ می‌شوند.
  • اکثر درخت‌های تصمیم تنها از یک ویژگی برای شاخه زدن در گره‌ها استفاده می‌کنند در صورتی که ممکن است ویژگی‌ها دارای توزیع توأم باشند.
  • برای داده های پیوسته عملکرد مناسبی نخواهد داشت.
  • هزینه هرس بالایی دارد.
  • ساخت درخت تصمیم در برنامه‌های داده کاوی حافظه زیادی لازم دارد چون برای هر گره باید معیار کارایی برای ویژگی‌های مختلف ذخیره شده و انتخاب بهترین ویژگی بر اساس آن انجام شودرا انتخاب کند.

درخت تصمیم در متلب

برای دسته بندی داده در متلب می توانید از تابع fitctree استفاده کنید در مثال زیر یک مثال از متلب که کاربرد این تابع را در دسته بندی داده های iris نشان می دهد.

load fisheriris
t = fitctree(meas(:,1:2), species,'PredictorNames',{'SL' 'SW' });
[x,y] = meshgrid(4:.1:8,2:.1:4.5);
x = x(:);
y = y(:);
[grpname,node] = predict(t,[x y]);
view(t,'Mode','graph');

به عنوان نتیجه می توانید گراف از ریشه تا برگ های درخت تصمیم را به صورت زیر ببینید :

decision tree in matlab
درخت تصمیم در متلب

فکر خود را اینجا بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *