درخت تصمیم (Decision Tree)

آموزش درخت تصمیم: گره‌ها و برگ‌ها، معیارهای تقسیم Gini و Entropy، عمق درخت و Overfitting

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

درخت تصمیم مثل یک بازی «۲۰ سؤال»: از بالا شروع می‌کنی، در هر گره یک سؤال بله/خیر، و در برگ به جواب می‌رسی.

ساختار درخت

مثال: آیا بازی بیرون انجام می‌شود؟

آیا هوا آفتابی است؟
├── بله → آیا رطوبت بالا است؟
│        ├── بله → بازی نمی‌کنیم
│        └── خیر → بازی می‌کنیم 🎾
└── خیر → بازی نمی‌کنیم

درخت چگونه سؤال‌ها را انتخاب می‌کند؟

هدف: تقسیمی که کلاس‌ها را خالص‌تر کند. معیارها:

الگوریتم در هر گره، همه ویژگی‌ها و همه آستانه‌های ممکن را امتحان می‌کند و بهترین تقسیم را انتخاب می‌کند (الگوریتم CART).

پیاده‌سازی

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier(
    max_depth=3,          # محدود کردن عمق
    min_samples_leaf=5,   # حداقل نمونه در برگ
)
model.fit(X_train, y_train)

خطر: Overfitting

درخت بدون محدودیت تا جایی رشد می‌کند که هر برگ یک نمونه شود و روی داده آموزش ۱۰۰٪ شود ولی روی داده جدید فاجعه! راه‌حل: محدود کردن max_depth، min_samples_leaf یا هرس (Pruning).

مزیت بزرگ: تفسیرپذیری

می‌توانید درخت را رسم کنید و دقیقاً ببینید مدل چرا این تصمیم را گرفت — در پزشکی و بانکداری این طلاست:

from sklearn.tree import plot_tree
plot_tree(model, feature_names=names)

مزایا و معایب

مزایامعایب
قابل فهم برای انسانمستعد Overfitting
بدون نیاز به مقیاس‌بندیناپایدار (داده کمی تغییر، درخت عوض)
هم عددی هم دسته‌ایمرز تصمیم پله‌ای

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.

ابزارهای مرتبط