کد متلب درخت تصمیم Decition Tree
هدف پروژه : ساخت درخت تصمیم با الگوریتم ID3 در متلب بدون استفاده از تولباکس
در این کار میخواهیم بر روی یک دیتاست مورد نظر درخت تصمیم ایجاد کنیم که ساخت درخت تصمیم را با الگوریتم id3 پیاده سازی کرده ایم.
برای این منظور دیتاست زیر را در نظر گرفته ایم:
این دیتاست شرایط آب و هوایی 14 روز را جمع آوری کرده است و در واقع بر اساس شرایط آب و هوایی تصمیم گیری میشود که آیا شرایط برای بازی تنیس مناسب است یا خیر.
بر اساس این داده های جمع آوری شده ما میخواهیم یک درخت تصمیم ایجاد کنیم که با دادن شرایط اب و هوایی به ما بگوید که ایا شرایط برای بازی تنیس مناسب است یا خیر. در واقع میخواهیم قوانینی را برای تصمیم گیری ایجاد کنیم.
نکته: داد های ما برای ساخت درخت باید دارای این ویژگی باشند که کلاس داده ها گسسته باشد.
یک سوال مهم که برای ساخت درخت تصمیم باید به در ابتدای کار به آن جواب داده شود این است که کدامیک از ویژگی های موجود در دیتاست بعنوان ریشه درخت در نظر گرفته شود؟؟؟
برای انتخاب بهترین ویژگی مناسب برای ریشه درخت از معیاری بنام Information Gain استفاده میکنیم. این معیار به ما میگوید که ویژگی مورد نظر به چه شکلی داده های آموزش را بر حسب تابع هدف (کلاس داده ها) جداسازی میکند.
در واقع الگوریتم ID3 از این معیار در هر مرحله از رشد درخت، برای انتخاب ویژگی استفاده میکند.
برای محاسبه information gain از معیاری بنام Entropy استفاده میکنیم. معیار entropy بصورت زیر محاسبه میشود:
که در آن S مجموعه داده های ما می باشد که میخواهیم انتروپی ان را محاسبه کنیم
C تعداد کلاس ها می باشد
pi نیز نسبت تعداد عناصر در کلاس i به تعداد عناصر در مجموعه Sمی باشد.
بعنوان مثال برای دیتاست مورد نظر ما، دو کلاس yes و no داریم و مجموعه کلاسها بصورت زیر می باشد یعنی S بصورت زیر می باشد:
No
No
Yes
Yes
Yes
No
Yes
No
Yes
Yes
Yes
Yes
Yes
No
که 5 کلاس با مقدار No و 9 کلاس با مقدار yes دارد بنابراین انتروپی ان بصورت زیر محاسبه میشود:
تصاویری از نتایج برنامه:
با اجرای کد نوشته شده در متلب ، نتایجی بصورت زیر بدست خواهد آمد:
که این نتایج را اگر بصورت درخت ترسیم کنیم به شکل زیر خواهد بود:
جهت دریافت کد متلب پیاده سازی درخت تصمیم در متلب (بدون استفاده از تولباکس) از بخش زیر اقدام کرده و بصورت آنلاین کد و فایل توضیحات کد را خریداری و دانلود کنید.
[parspalpaiddownloads id=”86″]
ایمیل: matlab24ir@gmail.com و یا info@matlab24.ir