مشخصات مقاله
-
864
-
0.0
-
10310
-
0
-
0
الگوریتم جنگل تصادفی
الگوریتم جنگل تصادفی (Random Forest)
الگوریتم جنگل تصادفی چیست ؟
جنگل تصادفی (Random forest) یک الگوریتم یادگیری تحت نظارت است که از آن هم برای طبقه بندی و هم رگرسیون استفاده می شود.
اما به طور کلی برای مسائل طبقه بندی از آن استفاده می شود. همانطور که میدانیم یک جنگل از درختان ساخته شده است و درختان بیشتر به معنای جنگل مقاوم تر است. به طور مشابه، الگوریتم درخت تصادفی روی نمونه های داده، درختان تصمیم گیری می سازد و سپس از هر کدام از آنها پیش بینی می گیرد و در نهایت به واسطه رای گیری، بهترین راه حل را انتخاب می کند. این یک روش گروهی است که از یک درخت تصمیم گیری مجزا بهتر است، زیرا با میانگین گیری در نتیجه، over-fitting را کاهش می دهد.
عملکرد الگوریتم جنگل تصادفی:
با کمک مراحل زیر می توانیم متوجه چگونگی عملکرد الگوریتم جنگل تصادفی شویم.
مرحله 1 :
ابتدا، از مجموعه داده فراهم شده نمونه های تصادفی را انتخاب کنید.
مرحله 2 :
سپس، این الگوریتم برای هر نمونه، یک درخت تصمیم گیری خواهد ساخت و در ادامه از هر درخت تصمیم گیری، نتیجه پیش بینی را خواهد گرفت.
مرحله 3 :
در این مرحله، برای هر نتیجه پیش بینی، رای گیری انجام می شود.
مرحله 4 :
در انتها، آن نتیجه پیش بینی که بیشترین تعداد رای را داشته باشد به عنوان نتیجه پیش بینی نهایی انتخاب می شود.
شکل زیر عملکرد آن را نشان می دهد.
پیاده سازی الگوریتم جنگل تصادفی در پایتون
ابتدا با وارد کردن بسته های مورد نیاز پایتون شروع می کنیم.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
سپس، مجموعه داده iris را از لینک زیر دانلود کنید.
path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
سپس، باید نام ستون ها را به صورت زیر به مجموعه داده تخصیص دهیم.
headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']
حال، باید مجموعه داده را به صورت زیر در قالب داده pandas بخوانیم.
dataset = pd.read_csv(path, names = headernames)
dataset.head()
با کمک اسکریپت زیر، پیش پردازش داده انجام خواهد شد.
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
سپس، داده را به دو قسمت یادگیری و تست تقسیم می کنیم. کد زیر مجموعه داده را به 70 درصد داده یادگیری و 30 درصد داده تست تقسیم می کند.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30)
سپس، با کمک کلاس RandomForestClassifier از sklearn ، مدل را به صورت زیر آموزش دهید.
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators = 50)
classifier.fit(X_train, y_train)
در انتها، باید با کمک اسکریپت زیر پیش بینی کنیم.
y_pred = classifier.predict(X_test)
سپس، نتایج را به صورت زیر چاپ کنید.
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)
خروجی:
Confusion Matrix:
[[14 0 0]
[ 0 18 1]
[ 0 0 12]]
Classification Report:
precision recall f1-score support
Iris-setosa 1.00 1.00 1.00 14
Iris-versicolor 1.00 0.95 0.97 19
Iris-virginica 0.92 1.00 0.96 12
micro avg 0.98 0.98 0.98 45
macro avg 0.97 0.98 0.98 45
weighted avg 0.98 0.98 0.98 45
Accuracy: 0.9777777777777777
مزایا و معایب جنگل تصادفی:
نقاط مثبت جنگل تصادفی :
موارد زیر مزایای الگوریتم جنگل تصادفی است:
با میانگین گیری یا ترکیب نتایج درختان تصمیم گیری مختلف، بر مشکل overfitting غلبه می کند. جنگل های تصادفی برای بازه وسیعی از عناصر داده، نسبت به درخت تصمیم گیری مجزا، عملکرد بهتری دارند. جنگل تصادفی نسبت به درخت تصمیم گیری مجزا واریانس کمتری دارد. جنگل های تصادفی بسیار منعطف هستند و دقت بسیار بالایی دارند. در الگوریتم جنگل تصادفی نیازی به مقیاس پذیری داده وجود ندارد، زیرا حتی بدون مقیاس بندی داده، دقت خوبی باقی خواهد ماند. حتی در صورت فقدان بخش بزرگی از داده، الگوریتم های جنگل تصادفی دقت بالایی خواهند داشت.
نقاط منفی جنگل تصادفی :
موارد زیر معایب الگوریتم جنگل تصادفی است:
پیچیدگی، اصلی ترین عیب الگوریتم های جنگل تصادفی است. ساخت جنگل های تصادفی بسیار سخت تر و زمان بر تر از درختان تصمیم گیری است. برای پیاده سازی الگوریتم جنگل تصادفی، به منابع محاسباتی بیشتری نیاز است. در صورت وجود یک مجموعه بزرگ از درختان تصمیم گیری، جنگل تصادفی کمتر شهودی خواهد بود. روند پیش بینی با استفاده از جنگل های تصادفی در مقایسه با سایر الگوریتم ها بسیار زمان برتر است.