تخطَّ إلى المحتوى

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