درخت تصمیم گیری (Decision Tree) یک الگوریتم مهم برای مدل سازی پیش بینی است و می توانیم آن را برای نمایش بصری (Visually) و صریح (Explicitly) تصمیم گیری ها به کار ببریم. یک درخت تصمیم گیری پایه ای از الگوریتم های مبتنی بر درخت (Tree Based Algorithms) را تشکیل می دهد که به شناسایی قوانینی (Rules) می پردازد که از این قوانین می خواهیم برای طبقه بندی (Classify) یک رویداد یا پیش بینی (Predict) مقدار خروجی یک متغیر کمک بگیریم.

در مطلب های پیشین در مورد الگوریتم های مبتنی بر رگرسیون، یعنی رگرسیون خطی (Linear Regression) و رگرسیون لوجستیک (Logestic Regression) را آموزش داده ایم. الگوریتم رگرسیون خطی برای پیش بینی مقدارهای پیوسته (عددی) مانند قیمت خانه یا نمره دانشجو و الگوریتم رگرسیون لوجستیک به منظور طبقه بندی (Classification) کاربرد دارد اما درخت تصمیم را می توانیم برای هر رو کاربرد رگرسیون و طبقه بندی به کار ببریم، بنابراین خود درخت تصمیم را می تونیم به درخت رگرسیون (Regression Tree) و درخت طبقه بندی (Classification Tree) دسته بندی کنیم.

پیش از این توضیح داده ایم که در الگوریتم های رگرسیون، داده ها از نوع پیوسته (Continuous) یا داده های عددی هستند ولی الگوریتم های دسته بندی، داده های به صورت گسسته (Discrete) یا رسته ای (Categorical) هستند. بنابراین می توانیم نتیجه بگیریم که، درخت تصمیم الگوریتمی است که به طبقه بندی یک رویداد یا پیش بینی یک مقدار خروجی یک متغیر کمک می کند. همچنین الگوریتم درخت تصمیم جز الگوریتم های یادگیری نظارت شده (Supervised Learning) قرار می گیرددرخت تصمیم درختی است که هر گره غیر برگ (Node) آن یک ویژگی (متغیر مستقل)، هر یال (Edge) آن یک قانون (تصمیم) و هر گره برگ آن (Leaf) یک خروجی را نشان می دهد. در شکل زیر گره ریشه (Root Node) برابر با همه نمونه ها است.

همانطور که در شکل بالا می بینید گره ریشه می تواند بر اساس قوانین، به دو یاد چند زیر درخت شکسته (Spliting) شودبه طور کلی درخت تصمیم را به متوان به صورت چندین if..then در نظر بگریم که هر شرط یک قانون را بررسی می کند. در درخت تصمیم، گره های تصمیم (Decision Node) همان شرط هایی هستند که باعث انشعاب دیگر زیر درخت ها (گره های فرزند) می شوند.

بنابراین درخت تصمیم ساده ترین روش (مدل – الگوریتم) برای کلاس بندی است، به طوری که به صورت بصری (ویژوال) برای انسان قابل نمایش و درک شدن است. یک درخت تصمیم به صورت بازگشتی () و با شکسته شدن مجموعه داده های یادگیری به زیر مجموعه هایی از داده ها بر اساس شرط هایی، ایجاد می شود. طبقه بندی (Classification) فرایندی است که مجموعه داده های یادگیری برچسب دار را به گروه ها یا طبقه های (Category) متفاوت تقسیم می کند.

به عبارت دیگر درخت تصمیم، الگوریتم (مدل) طبقه بندی است که با استفاده از ساختار درختی (درختواره)، می خواهد رابطه میان متغیرهای مستقل (ویژگی ها) با متغیرهای وابسته (برچسب ها – پاسخ های از پیش آماده در مجموعه داده) را نشان دهد. در شکل زیر مثال ساده ای از درخت تصمیم نشان داده شده است که می بینید برای خوانده و درک شدن بسیار ساده و قابل فهم است. اگر نفری گرسنه نباشد، به رختخواب می رود ولی اگر گرسنه باشد، با توجه به بودجه خود، به یک رستوران یا همبرگر فروشی می رود. شکل زیر، مثال بسیار ساده ای است که نشان می دهد، زیر درخت های درون درخت تصمیم، بر اساس قواهد if..then ایجاد می شوند.

نمونه دیگری از درخت تصمیم

شکل زیر مجموعه ای از داده های بسیار کوچک را نشان می دهد که در آن ۵ نمونه (Sample) هست. مجموعه داده دارای سه ویژگی Weather و Hungry و Time است و با توجه به مقدار این ویژگی ها، نفری تصمیم می گیرد که چگونه (پیاده یا با اتوبوس) حرکت کند. همانگونه که می بینید برخی از داده ها به گونه بولی (True – False یا Yes – No) هستند و برخی دیگر به گونه داده های رسته ای (Categorical) و برخی دیگر نیز شماره هستند.

همانگونه که گفتیم، الگوریتم درخت تصمیم بر پایه برخی پرسش ها و پاسخ ها است به گونه ای که هر گره نابرگ یکی از ویژگی ها و هر یال بیرون آمده از آن، یکی از مقدارهای آن ویژگی و در پایان، هر کدام از گره های برگ، یکی از دو پاسخ یا یکی از دو کلاس مسئله هستند. در نمونه بالا، برای نمونه، ویژگی Weather دارای سه مقدار Rain و Could و Sun است، پس سه یال از گره Weather در شکل درخت تصمیم زیر بیرون می آید.

در شکل بالا، پرسش آغازین در گره ریشه است که بر پایه ویژگی Waether انجام می شود. گفتیم که گره های نابرگ، گره های تصمیم هستند، پس در آغاز و در گره ریشه، تصمیم بر پایه ویژگی Weather خواهد بود و چون دارای سه مقدار است، پس سه یال به ازای هر مقدار از آن بیرون می آید. اگر هوا بارانی (ویژگی Rain) باشد، پس دیگر نیازی به زیر درخت نیست و یک سره پاسخ ما (گره برگ) رفتن با اتوبوس (کلاس Bus) خواهد بود.

اگر هوا آفتابی باشد، دومین پرسش بر روی گره تصمیم گیری با ویژگی Time است و اگر مقدار زمانی که برای رسیدن به محل دلخواه داریم بیشتر از نیم ساعت باشد، پس پیاده روی (کلاس Walk) می کنیم و اگر کمتر از نیم ساعت باشد، پس با اتوبوس (کلاس Bus) می رویم. همین برای گره دیگر اگر هوا ابری باشد و اگر شما گرسنه باشید یا نباشید نیز می تواند به کار گرفته شود.

  • اگر (IF) هوا آفتابی بود و اگر زمان بیشتر از نیم ساعت باشد، پس (THEN) پیاده روی می کنم.
  • اگر هوا آفتابی بود و اگر زمانی کمتر از نیم ساعت داشته باشم، پس با اتوبوس خواهم رفت.
  • اگر هوا ابری باشد و من نیز گرسنه باشم، پس پیاده روی می کنم.
  • اگر هوا ابری بود و من گرسنه نبودم، پس با اتوبوس می روم.
  • اگر هوا بارانی بود، پس با اتوبوس می روم.

چکیده درخت تصمیم

  • این الگوریتم می تواند برای طبقه بندی و رگرسیون به کار گرفته شود.
  • درخت دودویی از دسته الگوریتم های طبقه بندی دودویی (Binary Classification) است جایی که تنها دو کلاس یا برچسب مانند Walk و Bus یا Yes و No داریم.
  • درخت ساخته شده، برای درک و فهم بسیار ساده است. شما می توانید با چشم یال ها را از ریشه تا یک برگ دنبال کنید.
  • در گره ریشه، همه داده ها هستند.
  • زیر شاخه ها از گره ریشه، بر پایه بهترین متغیر مستقل یا همان ویژگی (در اینجا Weather) انجام می شود.
  • بر پایه n مقدارهای ویژگی درون گره ریشه، n یال نیز از گره ریشه بیرون می آیند.

کاربردی ساده از درخت تصمیم

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

  • آیا اندازه درآمد درخواست کننده بیش یا کمتر از یک اندازه درآمد است.
  • آیا کارمند ازدواج کرده یا نکرده است. گونه داده این ویژگی یکی از دو مقدار بولی یا رشته Yes / No است.
  • آیا مانده حساب آن بیشتر یا کمتر از یک اندازه است.

بنابراین می بینید که درخت تصمیم در زندگی ما هست و ما با پرسش هایی، یک درختواره را می سازیم که به گذر از گره ها و یال های میان آنها، به پاسخی خواهیم رسید. در یادگیری ماشین، انگیزه ساخت یک مدل (Model) است که از این پس بتوانیم با این مدل، بتوانیم با مجموعه داده های تازه، پاسخ را پیش بینی کنیم که همان کلاس خواهد بود.