شرح مبسط لخوارزمية الغابة العشوائية Random forest و مثال عملي على Python

تتكون خوارزمية الغابة العشوائية ، كما يوحي إسمها ، من عدد كبير من أشجار القرار الفردية التي تعمل كمجموعة. تنبثق كل شجرة فردية في الغابة العشوائية من توقع الفصل ويصبح الفصل الذي يحصل على أكبر عدد من الأصوات هو توقع نموذجنا (انظر الشكل أدناه).

Image for post

المبدأ الأساسي وراء خوارزمية Random Forest هو مفهوم بسيط ولكنه قوي – حكمة الحشود -الأغلبية-. في علم البيانات ، فإن السبب وراء نجاح نموذج الغابة العشوائية هو: أن العدد الكبير من النماذج (الأشجار) غير المترابطة نسبيًا التي تعمل كلجنة سيتتفوق على أي من النماذج المكونة الفردية.

معامل الارتباط المنخفض بين النماذج هو المفتاح. تمامًا مثل كيفية تجميع الاستثمارات ذات معامل الارتباط المنخفض (مثل الأسهم والسندات) معًا لتشكيل محفظة إستثمار أكبر من مجموع أجزائها ، يمكن للنماذج غير المرتبطة أن تنتج تنبؤات مجمعة أكثر دقة من أي تنبؤات فردية. سبب هذا التأثير الرائع هو أن الأشجار تحمي بعضها البعض من أخطائها الفردية (طالما أنها لا تخطئ جميعًا في نفس الاتجاه باستمرار). في حين أن بعض الأشجار قد تكون خاطئة ، إلا أن العديد من الأشجار الأخرى ستكون صحيحة ، بحيث يمكن للأشجار كمجموعة أن تتحرك في الاتجاه الصحيح. لذا فإن المتطلبات الأساسية لأداء الغابة العشوائية بشكل جيد هي أنه:

  • يجب أن تكون هناك بعض الإشارات الفعلية في الميزات بحيث تعمل النماذج المبنية باستخدام هذه الميزات بشكل أفضل من التخمين العشوائي.
  • يجب أن يكون للتنبؤات (وبالتالي الأخطاء) التي تقوم بها الأشجار الفردية معامل ارتباطها منخفض مع بعضها البعض.

مثال على سبب عظمة النتائج غير المترابطة

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

إستخدم مولد أرقام عشوائي موزع بشكل موحد لإنتاج رقم.
إذا كان الرقم الذي أنشأته أكبر من أو يساوي 40 ، فأنت تفوز (لذلك لديك فرصة 60٪ للفوز) وأدفع لك بعض المال. إذا كان أقل من 40 ، أفوز وستدفع لي نفس المبلغ.

الآن أقدم لك الخيارات التالية. يمكننا إما:

  • اللعبة 1 – العب 100 مرة ، مراهنة بدولار واحد في كل مرة.
  • اللعبة 2 – العب 10 مرات ، مراهنة على 10 دولارات في كل مرة.
  • اللعبة 3 – العب مرة واحدة ، واكسب أو تخسر 100 دولار.

 

أيهما تختار؟ القيمة المتوقعة لكل لعبة هي نفسها:

  • القيمة المتوقعة للعبة 1 = (0.60 * 1 + 0.40 * -1) * 100 = 20
  • القيمة المتوقعة للعبة 2 = (0.60 * 10 + 0.40 * -10) * 10 = 20
  • القيمة المتوقعة للعبة 3 = 0.60 * 100 + 0.40 * -100 = 20

ماذا عن التوزيعات؟ دعونا نتخيل النتائج من خلال محاكاة مونت كارلو (سنقوم بتشغيل 10000 محاكاة لكل نوع لعبة ؛ على سبيل المثال ، سنقوم بمحاكاة ال 100 لعبة المجودة في اللعبة رقم 1  10000 مرة ). ألق نظرة على الرسم البياني الموجود أسفل – الآن ما اللعبة التي ستختارها؟ على الرغم من أن القيم المتوقعة هي نفسها ، إلا أن توزيعات النتائج تختلف اختلافًا كبيرًا من الموجب والضيق (الأزرق) إلى الثنائي (الوردي).

تقدم اللعبة رقم 1 (حيث نلعب 100 مرة) أفضل فرصة لكسب بعض المال – من بين 10000 محاكاة قمت بتشغيلها ، يمكنك كسب المال في 97٪ منها! بالنسبة للعبة 2 (حيث نلعب 10 مرات) ، فإنك تكسب المال في 63٪ من المحاكاة ، وهو ما يمثل انخفاضًا حادًا (وزيادة كبيرة في احتمالية خسارة المال). واللعبة 3 التي نلعبها مرة واحدة فقط ، يمكنك كسب المال في 60٪ من المحاكاة ، كما هو متوقع.

Image for post

توزيع نتيجة ال 10،000 محاكاة لكل لعبة

Image for postاحتمالية كسب المال لكل لعبة

لذلك على الرغم من أن الثلاث اللعبات تشترك في نفس القيمة المتوقعة ، إلا أن توزيعات نتائجها مختلفة تمامًا. كلما قسمنا رهان ال 100 دولار إلى عدة عمليات مختلفة ، زادت ثقتنا في أننا سنكسب المال. كما ذكرنا سابقًا ، يعمل هذا لأن كل لعبة مستقلة عن الأخرى.
الغابة العشوائية هي نفسها – كل شجرة تشبه لعبة واحدة في لعبتنا هذه . لقد رأينا للتو كيف زادت فرصتنا في كسب المال كلما لعبنا. وبالمثل ، مع نموذج الغابة العشوائي ، تزداد فرصنا في عمل تنبؤات صحيحة مع عدد الأشجار غير المترابطة في نموذجنا.

مميزات و عيواب خوارزمية الغابة العشوائية

  • تقلل من فرط التعلم overfitting في أشجار القرار وتساعد على تحسين الدقة و الكفاءة
  • الخوارزمية تعتبر مرنة لكل من مسائل التصنيف والانحدار
  • تعمل بشكل جيد مع كل من القيم الفئوية والمستمرة
  • تقوم بأتمتة القيم المفقودة الموجودة في البيانات
  • تطبيع أو توحيد Normalising البيانات غير مطلوب في هذه الخوارزمية لأنها تستخدم نهجًا قائمًا على القواعد.

 

مع ذلك ، على الرغم من هذه المزايا ، فإن خوارزمية الغابة العشوائية لها أيضًا بعض العيوب.

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

تطبيق خوارزمية الغابات العشوائية على مسائل الإنحدار

 

من أجل الانحدار ، سنتعامل مع البيانات التي تحتوي على رواتب الموظفين بناءً على مناصبهم. سنستخدم هذا للتنبؤ براتب الموظف بناءً على منصبه.

أولا لنستورد المكتبات و البيانات

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv(‘Salaries.csv')
df.head()

 X =df.iloc[:, 1:2].values
y =df.iloc[:, 2].values

ثانيا نظرا لصغر حجم قاعدة البيانات فلن نقسمهما الى مجموعة تدريب و مجموعة إختبار و نستورد خوارزمية الغابة العشوائية و نعمل على ملائمة النموذج على البيانات

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators = 10, random_state = 0)
model.fit(X, y)

هل لاحظت أننا وضعنا 10 أشجار فقط بكتابة n_estimators = 10 على الكود؟ الأمر متروك لك لإختيار عدد الأشجار المناسب. لكن نظرًا لأنها مجموعة البيانات صغيرة ، فإن 10 أشجار كافية.

ثالثا سنتنبأ براتب شخص لديه المستوى 6.5 , فنلاحظ بعد رسم الرسم البياني أن الموظف يجب أن يحصل على راتب قدره 167000 بعد وصوله إلى مستوى 6.5.

y_pred =model.predict([[6.5]]) X_grid_data = np.arange(min(X), max(X), 0.01)
X_grid_data = X_grid.reshape((len(X_grid_data), 1))
plt.scatter(X, y, color = 'red')
plt.plot(X_grid_data,model.predict(X_grid_data), color = 'blue')
plt.title('Random Forest Regression’)
plt.xlabel('Position')
plt.ylabel('Salary')
plt.show()

إستخدامات خوارزمية الغابة العشوائية لحل مسائل التصنيف في المقال الثالي

لتحميل الكود و ملف البيانات من موقع  github                     هنا 

 

المرجع

 

 

 

Share on facebook
فاسبوك
Share on twitter
تويتر
Share on linkedin
لينكد إن
Share on whatsapp
واتساب

اترك تعليقاً

المشاركات الاخيرة

أحدث التعليقات

أفحص بحثك بالمجان

رفع الملف