Random Forest
استكشف قوة الغابة العشوائية في التصنيف والانحدار. تعلّم كيف تمنع خوارزمية التجميع هذه فرط التكيّف وتحسّن الدقة للبيانات المعقدة.
الغابة العشوائية هي خوارزمية قوية ومتعددة الاستخدامات في التعلم الخاضع للإشراف، وتُستخدم على نطاق واسع في مهام التصنيف و**الانحدار** على حد سواء. وكما يوحي اسمها، فإنها تنشئ «غابة» تتألف من عدة أشجار قرار خلال مرحلة التدريب. ومن خلال تجميع تنبؤات هذه الأشجار الفردية—عادةً باستخدام تصويت الأغلبية في التصنيف أو حساب المتوسط في الانحدار—يحقق النموذج دقة تنبؤية واستقرارًا أعلى بكثير مما يمكن أن تقدمه شجرة واحدة. ويعالج نهج التجميع هذا بفاعلية العيوب الشائعة في تعلّم الآلة، مثل فرط التكيّف مع بيانات التدريب، مما يجعله خيارًا موثوقًا لتحليل مجموعات البيانات المنظمة المعقدة.
الآليات الأساسية#
تعتمد فعالية الغابة العشوائية على مفهومين أساسيين يضفيان التنوع على الأشجار، ويضمنان عدم تعلّمها الأنماط نفسها تمامًا:
- التجميع بالمعاينة bootstrap (Bagging): تنشئ الخوارزمية مجموعات فرعية متعددة من مجموعة البيانات الأصلية من خلال أخذ عينات عشوائية مع الإرجاع. وتُدرَّب كل شجرة قرار على عينة مختلفة، مما يتيح لنموذج التعلم الآلي (ML) التعلّم من وجهات نظر متنوعة لتوزيع البيانات الأساسي.
- العشوائية في السمات: بدلًا من البحث عن السمة الأهم بين جميع المتغيرات المتاحة عند تقسيم عقدة، تبحث الخوارزمية عن أفضل سمة ضمن مجموعة فرعية عشوائية من متجهات السمات. ويمنع ذلك سمات مهيمنة محددة من التغلب على النموذج، مما ينتج عنه نموذج تنبؤ أكثر تعميمًا ومتانة.
التطبيقات الواقعية#
تُعد الغابة العشوائية عنصرًا أساسيًا في تحليلات البيانات بفضل قدرتها على التعامل مع مجموعات البيانات الكبيرة وعالية الأبعاد.
- الذكاء الاصطناعي في التمويل: تستفيد المؤسسات المالية من الغابة العشوائية في تقييم الجدارة الائتمانية واكتشاف الاحتيال. ومن خلال تحليل بيانات المعاملات التاريخية والخصائص الديموغرافية للعملاء، يستطيع النموذج تحديد الأنماط الدقيقة الدالة على النشاط الاحتيالي أو تقييم مخاطر التخلف عن سداد القروض بدرجة عالية من الدقة.
- الذكاء الاصطناعي في الرعاية الصحية: في التشخيص الطبي، تساعد الخوارزمية على التنبؤ بنتائج المرضى من خلال تحليل السجلات الصحية الإلكترونية. ويستخدم الباحثون إمكاناتها في أهمية السمات لتحديد المؤشرات الحيوية المهمة المرتبطة بمراحل تطور أمراض محددة.
- الذكاء الاصطناعي في الزراعة: يطبّق علماء الزراعة الغابة العشوائية لتحليل عينات التربة وأنماط الطقس من أجل النمذجة التنبؤية لمحاصيل الغلال، مما يمكّن المزارعين من تحسين تخصيص الموارد وتعزيز الاستدامة.
تمييز الغابة العشوائية عن المفاهيم ذات الصلة#
يساعد فهم مقارنة الغابة العشوائية بالخوارزميات الأخرى على اختيار الأداة المناسبة لمشكلة محددة.
- مقابل شجرة القرار: يسهل تفسير شجرة القرار الواحدة، لكنها تعاني من تباين مرتفع؛ إذ يمكن لتغيير صغير في البيانات أن يغير بنية الشجرة بالكامل. وتضحي الغابة العشوائية بجزء من قابليتها للتفسير لتحقيق الموازنة بين الانحياز والتباين، موفرةً تعميمًا أفضل على بيانات الاختبار غير المرئية.
- مقابل XGBoost: في حين تبني الغابة العشوائية الأشجار بالتوازي (بشكل مستقل)، تبني خوارزميات التعزيز مثل XGBoost الأشجار بالتتابع، بحيث تصحح كل شجرة جديدة أخطاء الشجرة السابقة. وغالبًا ما يحقق التعزيز أداءً أعلى في مسابقات البيانات الجدولية، لكنه قد يكون أكثر حساسية للبيانات المشوشة.
- مقابل التعلم العميق (DL): تتفوق الغابة العشوائية في التعامل مع البيانات المنظمة والجدولية. أما بالنسبة إلى البيانات غير المنظمة، مثل الصور، فتتفوق نماذج الرؤية الحاسوبية (CV). وتستخدم بنيات مثل YOLO26 الشبكات العصبية الالتفافية (CNNs) لاستخراج السمات تلقائيًا من وحدات البكسل الخام، وهي مهمة تواجه الأساليب القائمة على الأشجار صعوبةً في تنفيذها.
مثال على التنفيذ#
تُنفَّذ الغابة العشوائية عادةً باستخدام مكتبة Scikit-learn الشائعة. وفي مسارات العمل المتقدمة، قد تُستخدم إلى جانب نماذج الرؤية المُدارة عبر منصة Ultralytics، مثلًا لتصنيف البيانات الوصفية المستمدة من الكائنات المكتشفة.
يوضح المثال التالي كيفية تدريب مُصنِّف بسيط على بيانات اصطناعية:
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
# Generate a synthetic dataset with 100 samples and 4 features
X, y = make_classification(n_samples=100, n_features=4, random_state=42)
# Initialize the Random Forest with 100 trees
rf_model = RandomForestClassifier(n_estimators=100, max_depth=3)
# Train the model and predict the class for a new data point
rf_model.fit(X, y)
print(f"Predicted Class: {rf_model.predict([[0.5, 0.2, -0.1, 1.5]])}")








