خوارزمية الغابة العشوائية (Random Forest Algorithm)

خوارزمية الغابة العشوائية (Random Forest Algorithm)

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

كما يوحي الاسم، “الغابة العشوائية/ Random Forest Algorithm” مُصنِّف يحتوي على عدد من أشجار القرار على مجموعات فرعية مختلفة من مجموعة البيانات المحددة ويأخذ المتوسط لتحسين الدقة التنبؤية لمجموعة البيانات هذه. “بدلاً من الاعتماد على شجرة قرار الواحدة، تأخذ الغابة العشوائية التنبؤ من كل شجرة وتعتمد على أغلبية الأصوات للتنبؤات، وتتنبأ الناتج النهائي.

يؤدي العدد الأكبر من الأشجار في الغابة إلى دقة أعلى ويتجنب ظاهره overfitting.

يوضح الرسم البياني أدناه عمل خوارزمية الغابة العشوائية:

خوارزمية الغابة العشوائية (Random Forest Algorithm)

افتراضات الغابة العشوائية

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

  • يجب أن تكون هناك بعض المقادیر الفعلية في متغير الخصیصة الخاص بمجموعة البيانات حتى يتمكن المصنف من توقع نتائج دقيقة بدلاً من نتيجة تخمينها.
  • يجب أن يكون للتنبؤات من كل شجرة ارتباطات منخفضة جدًا.

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

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

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

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

تعمل الغابة العشوائية على مرحلتين: الأولى هي إنشاء الغابة العشوائية من خلال الجمع بين N شجرة قرار، والثاني هو عمل تنبؤات لكل شجرة تم إنشاؤها في المرحلة الأولى.

يمكن شرح عملية العمل في الخطوات والرسم البياني أدناه:

الخطوة 1: حدد K نقاط بيانات عشوائية من مجموعة التدريب.

الخطوة 2: قم ببناء أشجار القرار المرتبطة بنقاط البيانات المحددة (المجموعات الفرعية).

الخطوة 3: اختر الرقم N لأشجار القرار التي تريد بناءها.

الخطوة 4: كرر الخطوة 1 و 2 على التوالي.

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

يمكن فهم عمل الخوارزمية بشكل أفضل من خلال المثال أدناه:

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

خوارزمية الغابة العشوائية (Random Forest Algorithm)

تطبيقات الغابة العشوائية

هناك أربعة قطاعات رئيسية تستخدم فيها الغابة العشوائية في الغالب:

  1. البنوك: يستخدم القطاع المصرفي في الغالب هذه الخوارزمية لتحديد مخاطر القروض.
  2. الطب: بمساعدة هذه الخوارزمية، يمكن تحديد اتجاهات المرض ومخاطره.
  3. استخدام الأراضي: يمكننا تحديد مناطق استخدام الأراضي المماثلة بواسطة هذه الخوارزمية.
  4. التسويق: يمكن تحديد اتجاهات التسويق بتوظيف هذه الخوارزمية.

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

  • قادرة على أداء مهام التصنيف والانحدار.
  • قادره على التعامل مع مجموعات البيانات الكبيرة ذات الأبعاد العالية.
  • تعزز دقة النموذج وتتجنب ظاهرة overfitting.

معایب الغابة العشوائية

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

تنفيذ بایثون لخوارزمية الغابة العشوائية

تحميل مجموعة البيانات

# importing required libraries
# importing Scikit-learn library and datasets package
from sklearn import datasets

# Loading the iris plants dataset (classification)
iris = datasets.load_iris()

والآن نتحقق من محتوى مجموعة البيانات وأسماء الميزات الموجودة فيها.

الکود:

print(iris.target_names)

الإخراج:

["setosa" "versicolor" "virginica"]

الکود:

print(iris.feature_names)

الإخراج:

["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"]

الکود:

# dividing the datasets into two parts i.e. training datasets and test datasets
X, y = datasets.load_iris( return_X_y = True)

# Spliting arrays or matrices into random train and test subsets
from sklearn.model_selection import train_test_split
# i.e. 80 % training dataset and 30 % test datasets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.70)

والآن یجب علینا استيراد المكتبات المطلوبة ووحدة تصنيف الغابات العشوائية.

الکود:

# importing random forest classifier from assemble module
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
# creating dataframe of IRIS dataset
data = pd.DataFrame({‘sepallength’: iris.data[:, 0], ’sepalwidth’: iris.data[:, 1],
					’petallength’: iris.data[:, 2], ’petalwidth’: iris.data[:, 3],
					’species’: iris.target})

النظر في مجموعة البيانات

الکود:

# printing the top 5 datasets in iris dataset
print(data.head())

الإخراج:

        sepallength   sepalwidth     petallength        petalwidth           species

0          5.1             3.5               1.4             0.2               0

1          4.9             3.0               1.4             0.2               0

2          4.7             3.2               1.3             0.2               0

3          4.6             3.1               1.5             0.2               0

4          5.0             3.6               1.4             0.2               0

الکود:

# creating a RF classifier
clf = RandomForestClassifier(n_estimators = 100)

# Training the model on the training dataset
# fit function is used to train the model using the training sets as parameters
clf.fit(X_train, y_train)

# performing predictions on the test dataset
y_pred = clf.predict(X_test)

# metrics are used to find accuracy or error
from sklearn import metrics
print()

# using metrics module for accuracy calculation
print("ACCURACY OF THE MODEL: ", metrics.accuracy_score(y_test, y_pred))

الإخراج:

ACCURACY OF THE MODEL: 0.9238095238095239

والآن یجب التنبؤ بنوع الزهرة من مجموعة البيانات.

الکود:

# predicting which type of flower it is.
clf.predict([[3, 3, 2, 2]])

الإخراج:

array([0])

هذا يعني أنه نوع زهرة سيتوسا (setosa) حيث حصلنا على الأنواع أو الفئات الثلاثة في مجموعة البيانات الخاصة بنا: سيتوسا (Setosa)، فيرسيكولور (Versicolor)، وفيرجينيا (Virginia). سنكتشف الآن أيضًا الخصائص المهمة أو تحديد الخصائص في مجموعة بيانات IRIS باستخدام سطور التعليمات البرمجية الآتية.

الکود:

# importing random forest classifier from assemble module
from sklearn.ensemble import RandomForestClassifier
# Create a Random forest Classifier
clf = RandomForestClassifier(n_estimators = 100)

# Train the model using the training sets
clf.fit(X_train, y_train)

حساب أهمية الخصیصة

الکود:

# using the feature importance variable
import pandas as pd
feature_imp = pd.Series(clf.feature_importances_, index = iris.feature_names).sort_values(ascending = False)
feature_imp

الإخراج:

petal width (cm)     0.458607
petal length (cm)    0.413859
sepal length (cm)    0.103600
sepal width (cm)     0.023933
dtype: float64

المصادر:

المصدر الأول

المصدر الثاني

منشور ذات صلة
تقنيات التقیيم 9 Minutes

التلخيص التلقائي للنصوص 7- تقنيات التقييم وجمع نقاط الجمل البارزة

آيات عامر

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

السلة