Decision Tree
شجرة القرار (Decision Tree) Decision Tree
شجرة القرار تقسّم البيانات بسلسلة أسئلة ثنائية (if/else) على الميزات، حتى تصل لتصنيف أو قيمة نهائية في كل ورقة. سهلة التفسير لكن عرضة لفرط التعلّم.
شجرة القرار نموذج تعلّم آلي يبني سلسلة قرارات من البيانات: في كل عقدة داخلية يسأل عن ميزة "x₃ ≤ 0.5؟" فيقسم البيانات لجزأين، ويستمر حتى يصل لأوراق (leaves) فيها القرار النهائي — فئة (للتصنيف) أو متوسط (للانحدار). التفسير سهل: كل ورقة لها مسار شروط يمكن قراءته بشريًا.
تدرّب عبر خوارزمية greedy من الأعلى للأعمق: في كل خطوة تبحث عن أفضل سمة/قيمة تقسيم تقلل الـ impurity (Gini أو Entropy للتصنيف، MSE للانحدار). لا تحاول البحث عن شجرة مثالية عالميًا — فقد تكون مستحيلة حسابيًا — لكن النتيجة جيدة بما يكفي عمليًا.
أكبر عيوبها: حساسية عالية لبيانات التدريب (تغيير صغير قد يغيّر الشجرة بالكامل)، وفرط التعلّم سريعًا حين max_depth غير محدود. الحل: تقليم (pruning)، أو استخدام Random Forest الذي يجمّع عدة أشجار لتقليل التباين.
الصياغة
if feature_3 <= 0.5:
if feature_1 > 2.0:
return class_A
else:
return class_B
else:
return class_C📄 مثال
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, stratify=y)
# max_depth يحدّ من فرط التعلّم
model = DecisionTreeClassifier(max_depth=3, random_state=42)
model.fit(X_train, y_train)
print(f"عمق الشجرة: {model.get_depth()}")
print(f"عدد الأوراق: {model.get_n_leaves()}")
print(f"دقة الاختبار: {model.score(X_test, y_test):.3f}")أهم النقاط
| النقطة | الوظيفة |
|---|---|
| max_depth | أقصى عمق للشجرة — يحدّ من فرط التعلّم |
| min_samples_split | أدنى عدد عيّنات لتقسيم عقدة داخلية |
| criterion | معيار جودة التقسيم: 'gini' أو 'entropy' للتصنيف، 'squared_error' للانحدار |
| feature_importances_ | أهمية كل ميزة — مجموعها 1.0 |
💡 نصائح عملية
- حدّد max_depth ابتداءً (مثل 3-10) — شجرة بعمق غير محدود ستُفرط في التعلّم حتمًا
- feature_importances_ يفيد اختيار الميزات (feature selection) — ميزات قريبة من الصفر يمكن إزالتها
⚠️ أخطاء شائعة
- ترك max_depth بلا حد في توقع أداء جيد على بيانات حقيقية — فرط التعلّم شبه مضمون
- تفسير الشجرة كقاعدة سببية — تعلّمت ارتباطات في بيانات التدريب، لا علاقات سببية
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار AI-ML الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: scikit-learn Documentation