0Pricing
Learn AI with Python · درس

الغابات العشوائية وBagging

مفهوم التجميع، وRandomForestClassifier، وn_estimators، وأهمية السمات، ودرجة OOB.

الغابات العشوائية وBagging درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

مشكلة الأشجار المنفردة

تتميز شجرة القرار المنفردة بتباين مرتفع: فقد يؤدي إعادة تدريبها على بيانات مختلفة قليلًا إلى إنتاج شجرة مختلفة جدًا. تعالج أساليب التجميع ذلك بدمج أشجار عديدة.

التجميع (Bagging)

يدرّب التجميع (Bagging) نماذج عديدة على عينات bootstrap مختلفة، أي عينات عشوائية مع الإرجاع من البيانات، ثم يحسب متوسط تنبؤاتها.

يقلل حساب متوسط نماذج عديدة عالية التباين التباين الكلي دون زيادة الانحياز بدرجة كبيرة.

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier

bag = BaggingClassifier(
    estimator=DecisionTreeClassifier(),
    n_estimators=100,
    random_state=0,
)
bag.fit(Xtr, ytr)

من التجميع إلى الغابات العشوائية

الغابة العشوائية هي تجميع للأشجار مع حيلة إضافية: لا تنظر الشجرة عند كل تقسيم إلا في مجموعة فرعية عشوائية من الميزات.

يقلل ذلك ترابط الأشجار، فتتعادل أخطاؤها بدرجة أفضل، مما يحسّن أداء التجميع.

أساسيات RandomForestClassifier

استخدم RandomForestClassifier. وتحدد المعلمة الأساسية n_estimators عدد الأشجار التي ستُنشأ. الأشجار الأكثر = استقرار أكبر، لكن سرعة أقل.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(n_estimators=200, random_state=0)
rf.fit(Xtr, ytr)
print("Accuracy:", rf.score(Xte, yte))

التدريب المتوازي باستخدام n_jobs

تكون الأشجار في الغابة مستقلة، ولذلك يمكن تدريبها بالتوازي. اضبط n_jobs=-1 لاستخدام جميع أنوية CPU وتسريع التدريب بدرجة كبيرة.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=500,
    n_jobs=-1,        # use all cores
    random_state=0,
)
rf.fit(Xtr, ytr)

درجة خارج الحقيبة (OOB)

تستبعد كل شجرة نحو ثلث العينات، لأن bootstrap لم يخترها. وتشكل هذه العينات خارج الحقيبة مجموعة تحقق مضمّنة.

اضبط oob_score=True للحصول على تقدير مجاني لخطأ التعميم دون الحاجة إلى تقسيم منفصل.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=300,
    oob_score=True,
    random_state=0,
)
rf.fit(Xtr, ytr)
print("OOB score:", rf.oob_score_)

التحكم في عمق الأشجار داخل الغابة

تنطبق معلمات الأشجار نفسها: max_depth وmin_samples_leaf وmax_features، الذي يحدد عدد الميزات التي تُجرّب في كل تقسيم.

تُعد max_features="sqrt" القيمة الافتراضية الشائعة للتصنيف.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=300,
    max_depth=12,
    max_features="sqrt",
    random_state=0,
)

أهمية الميزات المضمّنة

مثل الأشجار المنفردة، تعرض الغابات feature_importances_، وهي متوسط الأهمية عبر جميع الأشجار. وتتميز هذه الأهمية القائمة على الشوائب بالسرعة، لكنها قد تكون منحازة نحو الميزات ذات العدد الكبير من القيم المميزة.

from sklearn.ensemble import RandomForestClassifier
import numpy as np

rf = RandomForestClassifier(n_estimators=200, random_state=0).fit(Xtr, ytr)
order = np.argsort(rf.feature_importances_)[::-1]
for i in order[:5]:
    print(i, rf.feature_importances_[i])

أهمية التبديل

تُعد أهمية التبديل أكثر موثوقية: فهي تبدّل ترتيب عمود ميزة واحدة عشوائيًا وتقيس مقدار انخفاض النتيجة. ويعني الانخفاض الكبير أن الميزة كانت مهمة.

وهي مستقلة عن النموذج وتتجنب انحياز الشوائب.

from sklearn.inspection import permutation_importance

result = permutation_importance(
    rf, Xte, yte, n_repeats=10, random_state=0, n_jobs=-1
)
print(result.importances_mean)

تفسير نتائج التبديل

تعيد permutation_importance القيمتين importances_mean وimportances_std عبر عمليات تكرار متعددة. احسبها على مجموعة محجوزة حتى تقيس تأثير الميزة في التعميم، لا في ملاءمة التدريب.

import numpy as np

means = result.importances_mean
stds = result.importances_std
for i in np.argsort(means)[::-1]:
    print(f"feature {i}: {means[i]:.3f} +/- {stds[i]:.3f}")

متى تستخدم الغابات العشوائية

تُعد الغابات العشوائية خيارًا افتراضيًا قويًا: فهي متينة، ولا تحتاج إلا إلى ضبط قليل، وتتعامل مع اللاخطية والتفاعلات، وتقاوم الإفراط في التكيّف. ومن سلبياتها استهلاك ذاكرة أكبر وتنبؤ أبطأ من الشجرة المنفردة، إضافة إلى انخفاض قابلية التفسير.

تحقق سريع

تحقق من مدى فهمك للتجميع والغابات العشوائية.

مراجعة

مراجعة: يدرّب التجميع (Bagging) النماذج على عينات bootstrap ويحسب متوسطها لتقليل التباين. وتضيف الغابات العشوائية مجموعات فرعية عشوائية من الميزات عند كل تقسيم. اضبطها باستخدام n_estimators، واستخدم n_jobs=-1 للسرعة، واحصل على تحقق مجاني عبر oob_score، وفضّل permutation_importance على الأهمية القائمة على الشوائب للحصول على ترتيبات موثوقة.

الأسئلة الشائعة

هل درس «الغابات العشوائية وBagging» مجاني؟

نعم — نص درس «الغابات العشوائية وBagging» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «الغابات العشوائية وBagging»؟

مفهوم التجميع، وRandomForestClassifier، وn_estimators، وأهمية السمات، ودرجة OOB. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الغابات العشوائية وBagging»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أشجار القرار: النظرية والتنفيذ
  2. الغابات العشوائية وBagging
  3. التعزيز التدرجي: GBM وXGBoost
  4. LightGBM وCatBoost
← العودة إلى Learn AI with Python