درخت تصمیم (Decision Tree) یک الگوریتم یادگیری ماشینی محبوب هستند که میتوان از آن برای کارهای رگرسیون و طبقهبندی استفاده کرد.
درک، تفسیر و پیادهسازی آن آسان است و آن را به انتخابی ایدئال برای مبتدیان در زمینه یادگیری ماشین تبدیل کرده است. در این راهنمای جامع، تمام جنبههای الگوریتم درخت تصمیم، ازجمله اصول کار، انواع درخت تصمیم، فرآیند ایجاد درختهای تصمیم، و نحوه ارزیابی و بهینهسازی درختهای تصمیم را پوشش خواهیم داد. در پایان این مقاله، درک کاملی از درخت تصمیم و نحوه استفاده از آن برای حل مسائل دنیای واقعی خواهید داشت. لطفاً آموزش کامل دوره درخت تصمیم را بهصورت رایگان در زیر بررسی کنید.
این مقاله بهعنوان بخشی از بلاگتون علوم داده Data Science Blogathon! منتشر شده است!
درخت تصمیم چیست؟
درخت تصمیم یک الگوریتم یادگیری نظارتشده ناپارامتریک برای انجام طبقهبندی و رگرسیون است. درواقع، یک ابزار برای پشتیبانی از تصمیم است که از درختها برای مدلسازی استفاده میکند. ساختار درختی سلسله مراتبی دارد که از گره ریشه(node)، شاخهها، گرههای داخلی و گرههای برگ تشکیل شده است. درختهای تصمیم برای کارهای طبقهبندی و رگرسیون استفاده میشوند و مدلهای قابلدرک را ارائه میکنند.
درخت تصمیم یک مدل سلسله مراتبی است که در پشتیبانی تصمیمگیری استفاده میشود که تصمیمها و نتایج بالقوه آنها را به تصویر میکشد که رویدادهای شانسی، هزینههای منابع و کاربرد را دربرمیگیرد. این مدل الگوریتمی از عبارات کنترل شرطی استفاده میکند و یادگیری ناپارامتریک و نظارتشده میباشد و برای کارهای طبقهبندی و رگرسیون مفید است. ساختار درختی از یک گره ریشه، شاخهها، گرههای داخلی و گرههای برگ تشکیل شده است که ساختاری سلسله مراتبی و درخت مانند را تشکیل میدهد.
با توجه به اینکه درخت تصمیم (DTs) یک روش یادگیری ناپارامتریک با نظارت است که برای طبقه بندی و رگرسیون استفاده می شود. هدف، ایجاد مدلی است که ارزش متغیر هدف را با یادگیری قوانین تصمیم گیری ساده استنتاج شده از ویژگی های داده، پیش بینی کند. یک درخت را می توان به عنوان یک تقریب ثابت تکه ای مشاهده کرد.
به عنوان مثال، در مثال زیر، درختهای تصمیم از دادهها یاد میگیرند که یک منحنی سینوسی را با مجموعهای از قوانین تصمیم if-then-else (اگر-پس-آنگاه) بطور تقریبی برآورد کنند. هرچه درخت عمیق تر باشد، قوانین تصمیم گیری پیچیده تر و مدل مناسب تر است.
این ابزاری است که دارای برنامههای کاربردی در چندین حوزه مختلف است. درختان تصمیم را میتوان برای طبقهبندی و همچنین مسائل رگرسیون استفاده کرد. خود نام نشان میدهد که از یک فلوچارت مانند ساختار درختی برای نشان دادن پیشبینیهای حاصل از یک سری تقسیمبندیهای مبتنی بر ویژگی استفاده میکند. با یک گره ریشه شروع میشود و با تصمیمگیری توسط برگها به پایان میرسد.
برخی از مزایای درخت تصمیم عبارتند از:
معایب درخت تصمیم عبارتند از:
در صورت تسلط بر برخی کلاس ها، یادگیرندگان درخت تصمیم، درختان مغرضانه ایجاد می کنند. بنابراین توصیه می شود قبل از تطبیق با درخت تصمیم، مجموعه داده را متعادل کنید.
اصطلاحات درخت تصمیم
قبل از یادگیری بیشتر در مورد درخت تصمیم، اجازه دهید با برخی از اصطلاحات آشنا شویم:
گره ریشه Root Node: گره اولیه در ابتدای درخت تصمیم، جایی که کل جمعیت یا مجموعه داده براساس ویژگیها feature یا شروط مختلف شروع به تقسیم میکند.
گرههای تصمیمگیری: گرههای حاصل از تقسیم گرههای ریشه بهعنوان گرههای تصمیم شناخته میشوند. این گرهها تصمیمات یا شرایط میانی درخت را نشان میدهند.
گرههای برگ: گرههایی که در آنها تقسیم بیشتر امکانپذیر نیست، که اغلب نشاندهنده طبقهبندی یا نتیجه نهایی است. گرههای برگ نیز بهعنوان گرههای پایانی شناخته میشوند.
درخت فرعی: مشابه زیربخشی از یک گراف که گراف فرعی نامیده میشود، زیربخش درخت تصمیم بهعنوان درخت فرعی شناخته میشود. نشاندهنده بخش خاصی از درخت تصمیم است.
هرس Pruning: فرآیند حذف یا قطع گرههای خاص در درخت تصمیم برای جلوگیری از برازش بیشازحد(overfitting) و سادهسازی مدل.
شاخه / درخت فرعی: به زیربخشی از کل درخت تصمیم بهعنوان شاخه یا درخت فرعی گفته میشود. این نشاندهنده مسیر خاصی از تصمیمات و نتایج درون درخت است.
گره والد و فرزند: در درخت تصمیم، گرهای که به گرههای فرعی تقسیم میشود، بهعنوان گره والد شناخته میشود و گرههای فرعی که از آن بیرون میآیند، گرههای فرزند نامیده میشوند. گره والد بیانگر یک تصمیم یا شرایط است، درحالیکه گرههای فرزند نشاندهنده نتایج بالقوه یا تصمیمات بعدی براساس آن شروط هستند.
نمونهای از درخت تصمیم
بیایید درختهای تصمیم را با کمک یک مثال درک کنیم:
در اینجا چند ستون هست که به آنها ویژگی گویند ؛در اینجا هم ستونهای هوا؛ دما ، رطوبت و باد ویژگی مستقل است. با توجه به اینکه مدل درخت تصمیم از نوع یادگیری نظارتشده میباشد؛ و ستون آخر هم متغیر وابسته (متغیر هدف) را نشان میدهد.
درختان تصمیم وارونه هستند که به این معنی است که ریشه در بالا قرار دارد و سپس این ریشه به چندین گره مختلف تقسیم میشود. درختهای تصمیم چیزی جز مجموعهای از گزارههای if-else در اصطلاح عامیانه نیستند. بررسی میکند که آیا شرط درست است یا خیر، سپس به گره بعدی متصل به آن تصمیم میرود.
در نمودار زیر درخت ابتدا میپرسد وضعیت هوا چگونه است؟ آیا هوا آفتابی، ابری یا بارانی است؟ اگر بله، به ویژگی بعدی که رطوبت و باد است میرود. دوباره بررسی میکند که باد شدید میوزد یا ضعیف، اگر باد ضعیفی است و هوا بارانی باشد، ممکن است فرد برود و بازی کند.
آیا در فلوچارت بالا متوجه چیزی شدهاید؟ میبینیم که اگر هوا ابری است باید برویم بازی کنیم. چرا بیشتر تقسیم نشد؟ چرا آنجا متوقف شد؟
برای پاسخ به این سؤال، باید در مورد چند مفهوم دیگر مانند آنتروپی entropy ، کسب اطلاعات (information gain) و شاخص جینی (Gini index) بدانیم. اما به زبان ساده، در اینجا میتوانم بگویم که خروجی مجموعه داده آموزشی برای هوای ابری همیشه بله است، زیرا در اینجا بینظمی وجود ندارد، ما نیازی به تقسیم بیشتر گره نداریم.
هدف یادگیری ماشین کاهش عدم قطعیت یا اختلالات از مجموعه داده است و برای این کار از درخت تصمیم استفاده میکنیم.
اکنون باید به این فکر کنید که چگونه میتوانم بدانم گره ریشه باید چه باشد؟ گره تصمیم چه باید باشد؟ چه زمانی باید جدایی را متوقف کنم؟ برای تصمیمگیری در این مورد، معیاری به نام «آنتروپی» وجود دارد که میزان عدم قطعیت در مجموعه داده است.
الگوریتمهای درخت تصمیم چگونه کار میکنند؟
الگوریتم درخت تصمیم در مراحل سادهتری کار میکند
1. شروع از ریشه: الگوریتم از بالا شروع میشود که "گره ریشه" نامیده میشود و کل مجموعه داده را نشان میدهد.
2. پرسش بهترین سؤالات: به دنبال مهمترین ویژگی یا سؤالی است که دادهها را به متمایزترین گروهها تقسیم میکند. این مانند پرسیدن یک سؤال در یک شاخه درخت است.
3. انشعاب شاخه: براساس پاسخ به آن سؤال، دادهها را به زیرمجموعههای کوچکتر تقسیم میکند و شاخههای جدیدی ایجاد میکند. هر شاخه نشاندهنده یک مسیر ممکن از طریق درخت است.
4. تکرار فرآیند: الگوریتم به پرسیدن سؤالات و تقسیم دادهها در هر شاخه ادامه میدهد تا زمانی که به "گرههای برگ" نهایی برسد که نشاندهنده نتایج یا طبقهبندیهای پیشبینیشده میباشد.
مفروضات درخت تصمیم
چندین فرض برای ساختن مدلهای مؤثر هنگام ایجاد درختهای تصمیم وجود دارد. این مفروضات به راهنمایی ایجاد درخت کمک میکند و بر عملکرد آن تأثیر میگذارد. در اینجا برخی از مفروضات و ملاحظات رایج هنگام ایجاد درخت تصمیم وجود دارد:
تقسیمات باینری
درختهای تصمیم معمولاً تقسیمات باینری (دوتایی) ایجاد میکنند، به این معنی که هر گره دادهها را براساس یک ویژگی یا شرایط واحد به دو زیرمجموعه تقسیم مینماید. این فرض را بر این میگذارد که هر تصمیم میتواند بهعنوان یک انتخاب باینری نمایش داده شود.
پارتیشنبندی بازگشتی
درختهای تصمیم از یک فرآیند پارتیشنبندی بازگشتی استفاده میکنند، که در آن هر گره به گرههای فرزند تقسیم میشود و این فرآیند تا زمانی ادامه مییابد که یک معیار توقف برآورده شود. این فرض میکند که دادهها را میتوان بهطور مؤثر به زیرمجموعههای کوچکتر و قابل مدیریتتر تقسیم کرد.
استقلال ویژگی
درختان تصمیم اغلب فرض میکنند که ویژگیهای مورداستفاده (متغیرها) برای تقسیم گرهها مستقل هستند. در عمل، استقلال ویژگی ممکن است برقرار نباشد، اما درختهای تصمیم همچنان میتوانند عملکرد خوبی داشته باشند اگر ویژگیها همبستگی داشته باشند.
همگنی
هدف درختان تصمیم ایجاد زیرگروههای همگن در هر گره است، به این معنی که نمونههای درون یک گره تا حد امکان ازنظر متغیر هدف مشابه هستند. این فرض به دستیابی به مرزهای تصمیم روشن کمک میکند.
رویکرد حریصانه از بالا به پایین
درختهای تصمیم با استفاده از یک رویکرد حریصانه از بالا به پایین ساخته میشوند، جایی که هر تقسیم برای به حداکثر رساندن اطلاعات یا به حداقل رساندن ناخالصی در گره فعلی انتخاب میشود. این ممکن است همیشه به درخت بهینه جهانی منجر نشود.
ویژگیهای کیفی و کمی
درختهای تصمیم میتوانند هم ویژگیهای کیفی (طبقهبندی) و هم ویژگیهای کمی (عددی) را مدیریت کنند. بااینحال، ممکن است به استراتژیهای تقسیم متفاوتی برای هر نوع نیاز داشته باشد.
برازش بیشازحد
درختهای تصمیمگیری زمانی که نویز را در دادهها ثبت میکنند، مستعد برازش بیشازحد هستند. هرس و تعیین معیارهای توقف مناسب برای رسیدگی به این فرض استفاده میشود.
اندازهگیری ناخالصی
درختان تصمیمگیری از معیارهای ناخالصی مانند ناخالصی جینی یا آنتروپی برای ارزیابی میزان جداسازی کلاسها توسط یک تقسیم استفاده میکنند. انتخاب معیار ناخالصی میتواند برساخت درخت تأثیر بگذارد.
بدون ارزشهای گمشده
درختهای تصمیم فرض میکنند که هیچ مقدار گمشدهای در مجموعه داده وجود ندارد یا مقادیر گمشده بهطور مناسب از طریق انتساب یا روشهای دیگر مدیریت شدهاند.
اهمیت برابر ویژگیها
درختان تصمیم ممکن است برای همه ویژگیها اهمیت یکسانی داشته باشند، مگر اینکه مقیاسبندی یا وزندهی ویژگی برای تأکید بر ویژگیهای خاص اعمال شود.
بدون داده پرت
درختان تصمیم به نقاط پرت حساس هستند و مقادیر شدید میتوانند بر ساخت آنها تأثیر بگذارند. پیشپردازش یا روشهای قوی ممکن است برای مدیریت مؤثر ارزشهای پرت موردنیاز باشد.
حساسیت بهاندازه حجم نمونه
مجموعه دادههای کوچک ممکن است منجر به بیشازحد برازش شوند و مجموعه دادههای بزرگ ممکن است منجر به درختان بیشازحد پیچیده شود. اندازه نمونه و عمق درخت باید متعادل باشد.
آنتروپی
آنتروپی چیزی نیست جز عدم قطعیت در مجموعه داده یا معیار بی نظمی ما. اجازه دهید سعی کنم این را با کمک یک مثال توضیح دهم.
فرض کنید شما گروهی از دوستان دارید که تصمیم می گیرند کدام فیلم را در روز جمعه با هم تماشا کنند. برای فیلم ها 2 انتخاب وجود دارد، یکی «لوسی» (به انگلیسی: Lucy ) و دیگری «تایتانیک» و حالا همه باید انتخاب خود را بگویند. پس از اینکه همه پاسخ خود را دادند، می بینیم که "لوسی" 4 رای و "تایتانیک" 5 رای می گیرد. حالا کدوم فیلم رو ببینیم؟ آیا انتخاب یک فیلم در حال حاضر سخت نیست زیرا آرای هر دو فیلم تا حدودی برابر است.
این دقیقا همان چیزی است که ما آن را بی نظمی می نامیم، تعداد آرای هر دو فیلم برابر است و ما واقعا نمی توانیم تصمیم بگیریم که کدام فیلم را تماشا کنیم. اگر آرای «لوسی» 8 و برای «تایتانیک» 2 بود، خیلی راحتتر بود. در اینجا به راحتی میتوان گفت که اکثریت آرا برای «لوسی» است، بنابراین همه این فیلم را تماشا خواهند کرد.
در درخت تصمیم، خروجی بیشتر «بله» یا «خیر» است.
فرمول آنتروپی در زیر نشان داده شده است:
در آن p+ احتمال کلاس مثبت است، p- احتمال کلاس منفی است، S زیرمجموعه مثال آموزشی است.
چگونه درختان تصمیم از آنتروپی استفاده می کنند؟
اکنون می دانیم که آنتروپی چیست و فرمول آن چیست، سپس باید بدانیم که دقیقاً چگونه در این الگوریتم کار می کند.
آنتروپی اساساً ناخالصی یک گره را اندازه گیری می کند. ناخالصی درجه تصادفی است; این نشان می دهد که داده های ما چقدر تصادفی هستند. زیرشاخه خالص به این معناست که یا جواب باید «بله» بگیرید، یا باید «نه» بگیرید.
فرض کنید ویژگی در ابتدا دارای 8 "بله" و 4 "نه" است، پس از تقسیم اول، گره چپ 5 "بله" و 2 "نه" دریافت می کند، در حالی که گره سمت راست 3 "بله" و 2 "نه" می گیرد.
ما اینجا می بینیم که تقسیمبندی خالص نیست، چرا؟ زیرا هنوز میتوانیم برخی از کلاسهای منفی را در هر دو گره ببینیم. برای ایجاد یک درخت تصمیم باید ناخالصی هر انشعاب را محاسبه کنیم و وقتی خلوص 100% باشد آن را به صورت گره برگ می سازیم.
برای بررسی ناخالصی ویژگی 2 و ویژگی 3 ما از فرمول Entropyکمک می گیریم.
برای ویژگی 3،
ما به وضوح میتوانیم از خود درخت ببینیم که گره چپ آنتروپی کم یا خلوص بیشتری نسبت به گره راست دارد، زیرا گره چپ تعداد «بله» بیشتری دارد و در اینجا تصمیمگیری آسان است.
همیشه به یاد داشته باشید که هر چه آنتروپی بالاتر باشد، خلوص کمتر و ناخالصی بالاتر خواهد بود.
همانطور که قبلا ذکر شد، هدف یادگیری ماشین کاهش عدم قطعیت یا ناخالصی در مجموعه داده است، در اینجا با استفاده از آنتروپی، ناخالصی یک گره خاص را دریافت می کنیم، نمی دانیم که آنتروپی والد یا آنتروپی یک گره خاص. کاهش یافته است یا خیر.
برای این، ما یک معیار جدید به نام کسب اطلاعات "Information gain" آورده شده است که به ما می گوید آنتروپی والد پس از تقسیم آن با برخی ویژگی ها چقدر کاهش یافته است.
کسب اطلاعات
کسب اطلاعات Information gainمیزان کاهش عدم قطعیت را با توجه به برخی ویژگی ها اندازه گیری می کند و همچنین یک عامل تعیین کننده است که کدام ویژگی باید به عنوان گره تصمیم یا گره ریشه انتخاب شود.
این فقط آنتروپی مجموعه داده کامل است - آنتروپی مجموعه داده با توجه به برخی ویژگی ها.
برای درک بهتر این موضوع، یک مثال را در نظر می گیریم: فرض کنید کل جمعیت ما در مجموع 30 نمونه دارد. مجموعه داده برای پیش بینی این است که آیا فرد به باشگاه می رود یا خیر. فرض کنید 16 نفر به باشگاه می روند و 14 نفر نمی روند؛
حالا ما دو ویژگی داریم که پیش بینی کنیم آیا او به باشگاه می رود یا خیر.
ویژگی 1 "انرژی" Energy است که دو مقدار "بالا" high و "کم" low را می گیرد.
ویژگی 2 "انگیزه" Motivation است که 3 مقدار "بدون انگیزه" No motivation ، "خنثی" Neutral و "با انگیزه بالا" Highly motivated را می گیرد.
بیایید ببینیم درخت تصمیم ما با استفاده از این 2 ویژگی چگونه ساخته می شود. ما از اطلاعات بدست آمده برای تصمیم گیری در مورد اینکه کدام ویژگی باید گره ریشه باشد و کدام ویژگی باید بعد از تقسیم قرار گیرد استفاده می کنیم.
بیایید آنتروپی را محاسبه کنیم
برای مشاهده میانگین وزنی آنتروپی هر گره به صورت زیر عمل می کنیم:
اکنون مقدار E(Parent)و E(Parent|Energy) را داریم، مقدار کسب اطلاعات به صورت زیر خواهد بود:
آنتروپی والد ما نزدیک به 0.99 بود و پس از بررسی این مقدار کسب اطلاعات، میتوان گفت که اگر "انرژی" را به عنوان گره اصلی خود بسازیم، آنتروپی مجموعه داده 0.37 کاهش می یابد.
به طور مشابه، ما این کار را با ویژگی دیگر "انگیزه" Motivation انجام می دهیم و میزان کسب اطلاعات آن را محاسبه می کنیم.
بیایید آنتروپی را در اینجا محاسبه کنیم:
برای مشاهده میانگین وزنی آنتروپی هر گره به صورت زیر عمل می کنیم:
اکنون مقدار E(Parent)و E(Parent|Motivation) را داریم، مقدار کسب اطلاعات خواهد بود:
اکنون می بینیم که ویژگی "انرژی" کاهش بیشتری می دهد که 0.37 نسبت به ویژگی "انگیزه" است. از این رو ما ویژگی را انتخاب می کنیم که بالاترین اطلاعات را دارد و سپس گره را بر اساس آن ویژگی تقسیم می کنیم.
در این مثال "انرژی" گره اصلی ما خواهد بود و ما همین کار را برای گره های فرعی انجام خواهیم داد. در اینجا میتوانیم ببینیم که وقتی انرژی "بالا" است آنتروپی پایین است و از این رو میتوان گفت که فردی اگر انرژی بالایی داشته باشد قطعاً به باشگاه میرود، اما اگر انرژی کم باشد چه؟ ما دوباره گره را بر اساس ویژگی جدید که "انگیزه" است، تقسیم می کنیم.
چه زمانی انشعاب را متوقف کنیم؟
حتما این سوال را از خود می پرسید که چه زمانی رشد درخت تصمیم خود را متوقف کنیم؟ معمولاً مجموعه داده های دنیای واقعی دارای تعداد زیادی ویژگی هستند که منجر به تعداد زیادی تقسیم می شود که به نوبه خود درخت بزرگی را به وجود می آورد. ساخت چنین درختانی به زمان نیاز دارد و می تواند منجر به بیش از حد مناسب شود. این بدان معناست که درخت دقت بسیار خوبی را در مجموعه داده آموزشی ارائه می دهد اما دقت بدی را در داده های آزمایشی ارائه می دهد.
راه های زیادی برای حل این مشکل از طریق تنظیم هایپرپارامتر hyperparameter tuningوجود دارد. ما می توانیم حداکثر عمق درخت تصمیم خود را با استفاده از پارامتر max_depthتنظیم کنیم. هر چه مقدار max_depthبیشتر باشد، درخت شما پیچیده تر خواهد بود. اگر مقدار max_depthرا افزایش دهیم، خطای آموزشی (train، کالیبراسیون، واسنجی) در خارج از دوره کاهش مییابد، اما وقتی دادههای آزمایشی (test، اعتبارسنجی) ما وارد میشوند، دقت بسیار بدی دریافت میکنیم. از این رو شما به مقداری نیاز دارید که بیش از حد مناسب نباشد و همچنین داده های ما را کمتر کند و برای این کار، می توانید از GridSearchCV (ابراز جستجوی جامع بر روی مقادیر پارامتر مشخص شده برای یک برآوردگر.) استفاده کنید.
راه دیگر تعیین حداقل تعداد نمونه برای هر اسپیلت است. با min_samples_splitنشان داده می شود. در اینجا حداقل تعداد نمونه مورد نیاز برای انجام انشعاب را مشخص می کنیم. به عنوان مثال، ما می توانیم حداقل از 10 نمونه برای رسیدن به یک تصمیم استفاده کنیم. به این معنی که اگر یک گره کمتر از 10 نمونه داشته باشد، با استفاده از این پارامتر، میتوانیم انشعاب بیشتر این گره را متوقف کرده و آن را به یک گره برگ تبدیل کنیم.
هایپرپارامترهای بیشتری وجود دارد مانند:
min_samples_leaf
نشان دهنده حداقل تعداد نمونه های مورد نیاز برای قرار گرفتن در گره برگ است. هرچه تعداد را بیشتر کنید، احتمال برازش بیش از حد بیشتر می شود.
max_features
به ما کمک می کند تصمیم بگیریم که چه تعداد ویژگی را هنگام جستجوی بهترین تقسیم در نظر بگیریم.
برای مطالعه بیشتر در مورد این هایپرپارامترها می توانید آن را در اینجا بخوانید.
هرس
هرس Pruningروش دیگری است که می تواند به ما در جلوگیری از برازش بیش از حد کمک کند. با بریدن گره ها یا گره های فرعی که قابل توجه نیستند، به بهبود عملکرد درخت تصمیم کمک می کند. علاوه بر این، شاخه هایی را که اهمیت بسیار کمی دارند حذف می کند.
به طور عمده 2 روش برای هرس وجود دارد:
قبل از هرس - میتوانیم رشد درخت را زودتر متوقف کنیم، به این معنی که میتوانیم گرهای را در صورتی که در حین رشد درخت اهمیت کمی دارد، هرس کنیم/حذف/برش دهیم.
پس از هرس - هنگامی که درخت ما به عمق خود ساخته شد، می توانیم هرس گره ها را بر اساس اهمیت آنها شروع کنیم.
انواع درخت تصمیم
چندین الگوریتم درخت تصمیم ID3, C4.5، C5.0 و CART هست؛ تفاوت آنها به شرح زیر است
ID3 (Iterative Dichotomiser 3)
در سال 1986 توسط Ross Quinlan توسعه یافت. این الگوریتم یک درخت چندراهه ایجاد میکند و برای هر گره (یعنی به شیوهای حریصانه) ویژگی طبقهبندی را پیدا میکند که بیشترین کسب اطلاعاتی را برای اهداف طبقهبندی به همراه خواهد داشت. درختان تا حداکثر اندازه خود رشد می کنند و سپس یک مرحله هرس معمولاً برای بهبود توانایی درخت برای تعمیم به داده های دیده نشده اعمال می شود.
C4.5
جانشین ID3است و با تعریف پویا یک ویژگی گسسته (بر اساس متغیرهای عددی) که مقدار مشخصه پیوسته را به مجموعهای از فواصل گسسته تقسیم میکند، محدودیت را که ویژگیها باید دستهبندی شوند حذف کرد. C4.5 درختان آموزش دیده (یعنی خروجی الگوریتم ID3) را به مجموعه ای از قوانین if-then تبدیل می کند. سپس دقت هر قانون برای تعیین ترتیبی که باید اعمال شوند، ارزیابی میشود. هرس با حذف پیش شرط یک قانون انجام می شود اگر دقت قانون بدون آن بهبود یابد.
C5.0
آخرین نسخه Quinlanتحت مجوز اختصاصی است. از حافظه کمتری استفاده میکند و قوانین کوچکتری نسبت به C4.5میسازد در حالی که دقیقتر است.
CART
(درخت طبقه بندی و رگرسیون Classification And Regression Trees) بسیار شبیه به C4.5 است، اما تفاوت آن در این است که از متغیرهای هدف عددی (رگرسیون) پشتیبانی می کند و مجموعه قوانین را محاسبه نمی کند. CART با استفاده از ویژگی و آستانه ای که بیشترین بهره اطلاعاتی را در هر گره ایجاد می کند، درخت های دودویی را می سازد.
نتیجه گیری
به طور خلاصه، در این مقاله با درختان تصمیم آشنا شدیم. بر چه اساسی درخت گره ها را انشعاب می دهد و چگونه می تواند جلوی برازش بیش از حد را بگیرد. چرا رگرسیون خطی در مورد مسایل طبقهبندی کار نمیکند. برای بررسی اجرای کامل درختهای تصمیم لطفاً به مخزن Githubمن مراجعه کنید. شما می توانید با برنامه Black Belt Plusما با بیش از 50 پروژه و بیش از 20 ابزار، به همه مباحث علم داده مسلط شوید. سفر یادگیری خود را از امروز شروع کنید!
الف) درخت تصمیم سازه ای درخت مانند است که مجموعه ای از تصمیمات و پیامدهای احتمالی آنها را نشان می دهد. در یادگیری ماشینی برای کارهای طبقه بندی و رگرسیون استفاده می شود. نمونه ای از درخت تصمیم فلوچارت است که به فرد کمک می کند تا بر اساس شرایط آب و هوایی تصمیم بگیرد چه بپوشد.
الف- هدف درخت تصمیم گیری تصمیم گیری یا پیش بینی با یادگیری براساس داده های گذشته است. این به درک روابط بین متغیرهای ورودی و نتایج آنها و شناسایی مهم ترین ویژگی هایی که به تصمیم نهایی کمک می کند کمک می کند.
درخت تصمیم (Decision Tree) یک روش پردازش و تحلیل داده است که بر اساس ساختار درختی تصمیمهای چندگانه را مدلسازی میکند. درخت تصمیم شامل گرهها و لیستی از شروط است که برای هر گره یک تصمیم را تعیین میکند. بر اساس این تصمیمها، دادهها به گروههای مختلف تقسیم میشوند و به صورت سلسله مراتبی تا رسیدن به برگها پیشبینی و تصمیم گیری صورت میگیرد.
درخت تصمیم به صورت عمومی به دو دسته تقسیم میشود:
۱. درخت تصمیم دودویی (Binary Decision Tree): در این نوع درخت تصمیم، هر گره تصمیمی، بر اساس یک ویژگی و آستانهای(threshold)، دادهها را به دو گروه تقسیم میکند. این دسته از درخت تصمیم به طور معمول برای مسائل طبقهبندی استفاده میشود.
۲. درخت تصمیم چندگانه (Multiway Decision Tree): در این نوع درخت تصمیم، هر گره تصمیمی قادر است دادهها را بر اساس بیش از دو گروه تقسیم کند. این دسته از درخت تصمیم برای مسائلی که بیش از دو دسته برای طبقهبندی دارند، مورد استفاده قرار میگیرد.
علاوه بر این دستهبندی، درختهای تصمیم میتوانند بر اساس روش ساختشان نیز متفاوت باشند. برخی از الگوریتمهای معروف برای ساخت درخت تصمیم عبارتند از چهار نوع درخت تصمیم شامل درخت تصمیم طبقه بندی Classification ، درخت تصمیم رگرسیون Regression tree ، درخت هرس با پیچیدگی هزینه Cost-complexity pruning tree و درخت هرس با خطای کاهش یافته Reduced Error Pruning tree.
الف- الگوریتم درخت تصمیم یک الگوریتم یادگیری ماشینی (تخمینگر) است که از درخت تصمیم برای پیشبینی استفاده میکند. از یک مدل درخت مانند از تصمیمات و پیامدهای احتمالی آنها پیروی می کند. این الگوریتم با تقسیم بازگشتی داده ها به زیر مجموعه ها بر اساس مهم ترین ویژگی در هر گره درخت کار می کند.
الف. بهترین الگوریتم برای درختان تصمیم به مسئله و مجموعه داده خاص بستگی دارد. الگوریتم های درخت تصمیم محبوب عبارتند از ID3، C4.5، CARTو Random Forest. Random Forest یکی از بهترین الگوریتم ها در نظر گرفته می شود زیرا چندین درخت تصمیم را برای بهبود دقت و کاهش برازش بیش از حد ترکیب می کند.
در حوزه درخت تصمیم، چندین الگوریتم مختلف وجود دارد که هر کدام مزایا و معایب خود را دارند. انتخاب بهترین الگوریتم برای درخت تصمیم به موارد زیر بستگی دارد:
۱. حجم دادهها: در صورتی که حجم دادهها بزرگ باشد، الگوریتمهایی که کارایی بالاتری دارند، مانند Random Forest و Gradient Boosting، معمولاً عملکرد بهتری از الگوریتمهای سادهتر مانند C4.5دارند.
۲. نوع دادهها: برخی از الگوریتمها برای دادههای عددی مناسبتر هستند، در حالی که برخی دیگر برای دادههای کیفی (دستهای) بیشتر استفاده میشوند. برای مثال، الگوریتم C4.5 به طور کلی برای دادههای کیفی مناسب است، در حالی که CART (Classification and Regression Trees) قادر به کارگیری با دادههای عددی است.
۳. تعامل و توجه به تفسیرپذیری: در برخی موارد، مهم است که درخت تصمیم قابل تفسیری باشد و قرار دادن قوانین قابل فهمی در اختیار کاربران باشد. در این موارد، الگوریتمهای سادهتر مانند ID3 و C4.5مناسبتر هستند.
۴. پیچیدگی مدل: الگوریتمهایی مانند Random Forest و Gradient Boosting معمولاً مدلهای پیچیدهتری را ایجاد میکنند که میتواند به دقت بیشتری در پیشبینی برسد. اگر دقت بالا از اهمیت بالایی برخوردار است، این الگوریتمها را در نظر بگیرید.
در نهایت، انتخاب الگوریتم برای درخت تصمیم بستگی به ویژگیهای دادهها، هدف نهایی و اولویتهای شما دارد. بهتر است بر اساس شرایط خاص خود و آزمایشهایی که روی دادههای خود انجام میدهید، الگوریتم مناسب را انتخاب کنید.
تفاوت بین درخت تصمیم و جنگل تصادفی چیست؟
جنگل تصادفی مجموعه ای از درختان تصمیم است. هنوز تفاوت های زیادی در رفتار آنها وجود دارد.
درختان تصمیم
درخت تصمیم (Decision Tree) یک مدل پیشبینی است که با استفاده از سلسله مراتبی از تصمیمها، درختی از قوانین و شرایط را برای پیشبینی و تصمیمگیری ایجاد میکند. در درخت تصمیم، ورودیها از ریشه شروع شده و در طول شاخههای درخت به برگها یا گرههای پایانی میرسند که در آنجا پیشبینی صورت میگیرد. هر گره در درخت تصمیم یک شرط برای تقسیم دادهها را مشخص میکند و براساس این شرط، دادهها به گرههای فرزند تقسیم میشوند. این فرایند تقسیم و پیشبینی تا رسیدن به گرههای پایانی ادامه مییابد.
1. اگر درختان تصمیم گیری بدون هیچ گونه کنترلی رشد کنند، معمولاً از مشکل برازش بیش از حد رنج می برند.
2. یک درخت تصمیم واحد در محاسبات سریعتر است.
3. هنگامی که یک مجموعه داده با ویژگی ها به عنوان ورودی توسط درخت تصمیم گرفته می شود، قوانینی را برای پیش بینی تدوین می کند.
جنگل تصادفی
جنگل تصادفی (Random Forest) از مجموعهای از درختان تصمیم تشکیل شده است. هر درخت تصمیم در جنگل تصادفی به طور مستقل از سایر درختان ساخته میشود. برای ساخت هر درخت تصمیم، از روشی به نام "بوت استرپینگ" استفاده میشود که براساس آن به صورت تصادفی نمونهها از دادهها (با جایگذاری) انتخاب میشوند. همچنین برای هر درخت تصمیم، تنها زیرمجموعهای از ویژگیها به صورت تصادفی در نظر گرفته میشوند. سپس پس از ساخت درختهای تصمیم، پیشبینیهای آنها توسط تمام درختان تصمیم انجام میشود و نتیجه نهایی با توجه به اکثریت آرا به دست میآید.
1. جنگل های تصادفی از زیر مجموعه های داده ایجاد می شوند و خروجی نهایی بر اساس رتبه بندی متوسط یا اکثریت است. از این رو مشکل بیش از حد برازش برطرف می شود.
2. نسبتاً کندتر است.
3. جنگل تصادفی به طور تصادفی مشاهدات را انتخاب می کند، درخت تصمیم می سازد و نتیجه متوسط را می گیرد. از هیچ مجموعه ای از فرمول ها استفاده نمی کند.
درخت تصمیم و جنگل تصادفی هر دو الگوریتم مهم در حوزه یادگیری ماشینی هستند، اما تفاوتهایی در عملکرد و استفاده آنها وجود دارد.
به طور خلاصه، درخت تصمیم یک مدل تکی است که براساس یک درخت تصمیم ساخته میشود و به صورت ترتیبی عمل میکند. جنگل تصادفی از مجموعهای از درختان تصمیم تشکیل شده است که به صورت مستقل از یکدیگر ساخته میشوند و به صورت موازی عمل میکنند. هر کدام از این الگوریتمها مزایا و محدودیتهای خود را دارند و استفاده از آنها بسته به مسئله و دادههای مورد استفاده متفاوت است.
در علم داده و یادگیری ماشین، ویژگی (Feature) به معنای هر یک از خصوصیات، ویژگیها، یا متغیرهای مستقل است که برای توصیف یک نمونه یا داده مورد استفاده قرار میگیرد. به طور کلی، ویژگیها به صورت اطلاعات استخراج شده از دادهها توصیف میشوند و ممکن است شامل مقادیر عددی، کلاسها، یا ویژگیهای دیگر باشند که برای مدلسازی و تحلیل دادهها استفاده میشوند.
ویژگیها میتوانند از منابع مختلفی به دست آیند، از جمله مشاهدات مستقیم، دادههای اندازهگیری شده، ویژگیهای محاسباتی یا ویژگیهای استخراج شده از دادهها. برای مثال، در یک مسئله تشخیص تصویر سگ و گربه، ویژگیها ممکن است شامل اندازه تصویر، رنگها، الگوها و شکلهای موجود در تصویر باشند.
استفاده از ویژگیها در یادگیری ماشین و تحلیل دادهها بسیار مهم است. با استفاده از ویژگیها، میتوان الگوریتمها و مدلهای مختلفی را برای طبقهبندی، رگرسیون، خوشهبندی و سایر مسائل استفاده کرد. همچنین، انتخاب ویژگیهای مناسب و استخراج ویژگیهای موثر از دادهها از جمله مسائل مهم در تحلیل دادهها و یادگیری ماشین است.
در زبان آمار و علوم داده، مفهوم متغیر (variable) ، ویژگی (feature) وداده (data) تفاوتهایی دارند
متغیر (Variable)، ویژگی (Feature) و داده (Data) مفاهیم مرتبط در زمینه آمار و علوم داده هستند، اما هرکدام برای بیان جنبههای مختلفی از داده استفاده میشوند:
1. متغیر: متغیر به معنای یک ویژگی قابل مشاهده است که مقادیر مختلفی میتواند به آن اختصاص داده شود. در آمار، متغیر به دادههایی اشاره دارد که برای جمعآوری و تحلیل در یک مطالعه مورد استفاده قرار میگیرند متغیرها ممکن است متغیرهای کیفی (Qualitative) باشند که دارای مقادیر گسسته هستند مانند جنسیت یا رنگ، یا متغیرهای کمیتی (Quantitative) باشند که دارای مقادیر پیوسته هستند مانند سن یا قد. در زمینه آمار، متغیرها به عنوان متغیرهای وابسته و مستقل در مطالعات و آزمایشها مورد استفاده قرار میگیرند.
2. ویژگی: ویژگی به معنای یک ویژگی مشخص و قابل استخراج از داده است. در زمینه یادگیری ماشین و تحلیل دادهها، ویژگیها نشان دهنده ویژگیهایی هستند که استخراج شده از دادهها و برای توصیف و تفسیر دادهها استفاده میشوند. ویژگیها میتوانند شامل متغیرهای مختلفی باشند، مانند مشخصههای عددی، مشاهدات، خصوصیات هندسی، رنگها، الگوها و غیره. به عنوان مثال، در تشخیص تصویر سگ و گربه، ویژگیها ممکن است شامل رنگها، شکلها، الگوها و مشخصههای هندسی تصویر باشند.
3. داده: داده به معنای اطلاعات و ارقامی است که درباره مشاهدات و متغیرها جمعآوری شده است. دادهها ممکن است به شکل اعداد، مشاهدات، متن، تصاویر و غیره ظاهر شوند. به عنوان مثال، اگر متغیر "سن" را در نظر بگیریم، دادهها میتوانند مقادیر واقعی سن افراد مختلف را نشان دهند. دادهها معمولاً برای تحلیل، استنتاج و مدلسازی مورد استفاده قرار میگیرند.
به طور خلاصه، متغیر نشان دهنده ویژگی قابل مشاهده است که مقادیر مختلفی میتواند به آن اختصاص داده شود، ویژگی نشان دهنده ویژگیهایی است که از داده استخراج میشوند و برای توصیف و تفسیر دادهها استفاده میشوند، و داده نشان دهنده اطلاعات جمعآوری شده درباره مشاهدات و متغیرها است. به عبارتی، متغیر به دادهها و ویژگیهایی اشاره دارد که برای تجسم و تفسیر دادهها استفاده میشوند. متغیرها در زمینه آمار و تحلیل دادهها مورد استفاده قرار میگیرند، در حالی که ویژگیها در زمینه یادگیری ماشین و تحلیل دادهها برای توصیف و تفسیر دادهها استفاده میشوند.
برای توضیح دادن این مفاهیم، یک مثال می آوریم. در زیر مثالی از دادهها و ویژگیها در زمینه آمار و علوم داده آورده شده است:
در اینجا فرض کنید شما یک مطالعه در مورد تأثیر فاکتورهای مختلف بر عملکرد دانشآموزان در یک آزمون ریاضی انجام میدهید.:
- دادهها: دادهها ممکن است شامل نتایج آزمون برای یک گروه از دانشآموزان باشند. به عنوان مثال، برای هر دانشآموز، نمره آزمون ریاضی را ثبت میکنید. در اینجا، دادهها مجموعهای از اعداد است که مشخص میکند هر دانشآموز چه نمرهای در آزمون ریاضی بدست آورده است.
- ویژگیها: ویژگیها ممکن است شامل فاکتورهایی باشند که فرضاً بر عملکرد دانشآموزان در آزمون تأثیرگذار هستند. به عنوان مثال، میتوانید ویژگیهایی مانند سن دانشآموزان، تعداد ساعت مطالعه قبل از آزمون، سابقه تحصیلی و تعداد درسهای حضوری را مورد بررسی قرار دهید. در اینجا، ویژگیها متغیرهایی هستند که بر اساس آنها میتوانید دانشآموزان را طبقهبندی کنید و تأثیر آنها را بر عملکرد در آزمون بررسی کنید.
در این مثال، دادهها نمرات آزمون را برای هر دانشآموز نشان میدهند. ویژگیها مانند سن، تعداد ساعت مطالعه و سابقه تحصیلی، ویژگیهای مشخصی هستند که میتوانید از آنها برای توصیف و تحلیل دادهها استفاده کنید.
با استفاده از این دادهها و ویژگیها، شما میتوانید روابط و الگوهایی را که بین ویژگیها و نتایج آزمون وجود دارد، بررسی کرده و به سوالاتی مانند "آیا سن دانشآموزان تأثیری در نتایج آزمون دارد؟" یا "آیا تعداد ساعت مطالعه قبل از آزمون با نتایج آزمون مرتبط است؟" پاسخ دهید.