درخت تصمیم (Decision Tree)
آموزش درخت تصمیم: گرهها و برگها، معیارهای تقسیم Gini و Entropy، عمق درخت و Overfitting
درخت تصمیم چیست؟
درخت تصمیم مثل یک بازی «۲۰ سؤال»: از بالا شروع میکنی، در هر گره یک سؤال بله/خیر، و در برگ به جواب میرسی.
ساختار درخت
- گره ریشه (Root): اولین و مهمترین سؤال
- گره داخلی (Internal): سؤالهای میانی
- برگ (Leaf): پیشبینی نهایی
مثال: آیا بازی بیرون انجام میشود؟
آیا هوا آفتابی است؟
├── بله → آیا رطوبت بالا است؟
│ ├── بله → بازی نمیکنیم
│ └── خیر → بازی میکنیم 🎾
└── خیر → بازی نمیکنیم
درخت چگونه سؤالها را انتخاب میکند؟
هدف: تقسیمی که کلاسها را خالصتر کند. معیارها:
- Gini Impurity: احتمال برچسب اشتباه در تقسیم — پایینتر بهتر
- Entropy: بینظمی اطلاعات — با Information Gain کمینه میشود
الگوریتم در هر گره، همه ویژگیها و همه آستانههای ممکن را امتحان میکند و بهترین تقسیم را انتخاب میکند (الگوریتم 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 |
| بدون نیاز به مقیاسبندی | ناپایدار (داده کمی تغییر، درخت عوض) |
| هم عددی هم دستهای | مرز تصمیم پلهای |
جمعبندی
- درخت تصمیم = زنجیره سؤالهای بهینه
- Gini/Entropy معیار انتخاب تقسیماند
- عمق را محدود کنید تا Overfitting نشود
این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.