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

 

در این مطلب از سری مطالب اکادمی نوین ایلیا صنعت میخوایم شما را با الگوریتم درخت تصمیم  آشنا کنیم، لطفا با ما همراه باشید.

 

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

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

 

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

 

در درخت تصمیم فوق، سوال، گره‌های تصمیم گیری است و نتایج نهایی برگ هستند. ما دو نوع درخت تصمیم داریم:

  • درختان تصمیم گیری طبقه بندی – در این نوع، متغیر تصمیم گیری طبقه‌ای است. درخت تصمیم فوق نمونه‌ای از درخت تصمیم گیری طبقه بندی است.
  • درختان تصمیم گیری رگرسیون – در این نوع، متغیر تصمیم پیوسته است.

 

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

 

فهرست جینی

این نام تابع هزینه است که برای ارزیابی تقسیم‌های باینری در مجموعه داده استفاده می‌شود و با متغیر هدف دسته‌ای “موفقیت” یا “شکست” کار می‌کند.

هر چه مقدار شاخص جینی بالاتر باشد، همگنی بالاتر است. مقدار کامل شاخص جینی 0 و بدترین آن 5/0 است (برای حالت 2 کلاس). شاخص جینی برای تقسیم را میتوان با کمک مراحل زیر محاسبه کرد:

  • ابتدا، شاخص جینی را برای گره‌های فرعی با استفاده از فرمول p ^ 2 + q ^ 2 محاسبه کنید، که حاصل جمع مربع احتمال موفقیت و شکست است.
  • بعد، شاخص جینی را برای جداکردن با استفاده از نمره جینی وزنی هر گره از آن تقسیم محاسبه کنید.

الگوریتم طبقه بندی و رگرسیون درخت (CART) از روش جینی برای تولید تقسیمات باینری استفاده می‌کنند.

 

Split Creation

تقسیم اساساً شامل یک ویژگی در مجموعه داده و یک مقدار است. ما می توانیم با کمک سه قسمت زیر، دیتاست را تقسیم کنیم.

قسمت 1: محاسبه امتیاز جینی – در بخش قبلی در مورد این قسمت بحث کردیم.

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

قسمت 3: ارزیابی همه تقسیم ها – قسمت بعدی پس از پیدا کردن نمره جینی و تقسیم داده‌ها، ارزیابی همه تقسیم ها است. برای این منظور، ابتدا باید هر مقدار مرتبط با هر ویژگی را به عنوان تقسیم نامزد بررسی کنیم. سپس باید با ارزیابی هزینه انشعاب بهترین تقسیم ممکن را پیدا کنیم. بهترین تقسیم به عنوان گره در درخت تصمیم استفاده خواهد شد.

 

ساختن درخت

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

قسمت 1: ایجاد گره‌های ترمینال هنگام ایجاد گره‌های انتهایی درخت تصمیم، یک نکته مهم تصمیم‌گیری در مورد زمان توقف رشد درخت یا ایجاد گره‌های انتهایی دیگر است. با استفاده از دو معیار یعنی حداکثر عمق درخت و حداقل سوابق گره به شرح زیر می‌توان این کار را انجام داد:

حداکثر عمق درخت – همانطور که از نامش پیداست، این حداکثر تعداد گره‌های یک درخت بعد از گره ریشه است. هنگامی که درخت به حداکثر عمق رسید، باید اضافه کردن گره‌های انتهایی را متوقف کنیم، به این معنی که یک درخت، حداکثر تعداد گره‌های انتهایی را بدست آورد.

حداقل ضبط گره – ممکن است به عنوان حداقل تعداد الگوهای آموزشی که یک گره مسئول آن است، تعریف شود. به محض رسیدن درخت در این حداقل رکوردهای گره، باید اضافه کردن گره‌های ترمینال را متوقف کنیم.

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

 

قسمت 2: تقسیم بازگشتی

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

 

پیش بینی

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

 

فرضیات

موارد زیر برخی از فرضیاتی است که ما هنگام ایجاد درخت تصمیم ارائه می‌دهیم

  • هنگام تهیه درختان تصمیم، مجموعه آموزش به عنوان گره ریشه است.
  • طبقه‌بندی کننده درخت تصمیم مقادیر ویژگی ها را دسته‌بندی می‌کند.
  • بر اساس مقادیر ویژگی‌ها، رکوردها به صورت بازگشتی توزیع می شوند.
  • از روش آماری برای قرار دادن ویژگی‌ها در هر موقعیت گره، به عنوان گره ریشه یا گره داخلی استفاده خواهد شد.

 

پیاده سازی در پایتون

مثال

در مثال زیر، ما می‌خواهیم طبقه‌بندی درخت تصمیم را بر روی دیابت افراد هندی پیاده کنیم.

ابتدا با وارد کردن بسته های لازم پایتون شروع کنید:

 

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

 

سپس، مجموعه داده را از لینک وب به شرح زیر بارگیری کنید:

 

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

 

هم اکنون، مجموعه داده را به شرح زیر به ویژگی‌ها و متغیر هدف تقسیم کنید:

 

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

 

بعد، ما داده ها را تقسیم می‌کنیم. کد زیر مجموعه داده ها را به 70٪ داده‌های آموزشی و 30٪ داده‌های آزمایش تقسیم می‌کند:

 

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

 

بعد، مدل را با کمک کلاس DecisionTreeClassifier از sklearn به شرح زیر آموزش دهید:

 

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

 

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

 

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

 

بعد، ما میتوانیم نمره دقت، ماتریس و گزارش طبقه‌بندی را به شرح زیر بدست آوریم:

 

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

 

خروجی:

 

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

 

 
تجسم درخت تصمیم

درخت تصمیم فوق را میتوان با کمک کد زیر تجسم کرد:

 

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

 
تهیه کننده: مهندس محمد طالبی
منبع
سایر مطالب اکادمی