آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

الگوریتم جنگل تصادفی

الگوریتم جنگل تصادفی (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 غلبه می کند. جنگل های تصادفی برای بازه وسیعی از عناصر داده، نسبت به درخت تصمیم گیری مجزا، عملکرد بهتری دارند. جنگل تصادفی نسبت به درخت تصمیم گیری مجزا واریانس کمتری دارد. جنگل های تصادفی بسیار منعطف هستند و دقت بسیار بالایی دارند. در الگوریتم جنگل تصادفی نیازی به مقیاس پذیری داده وجود ندارد، زیرا حتی بدون مقیاس بندی داده، دقت خوبی باقی خواهد ماند. حتی در صورت فقدان بخش بزرگی از داده، الگوریتم های جنگل تصادفی دقت بالایی خواهند داشت.


نقاط منفی جنگل تصادفی :


موارد زیر معایب الگوریتم جنگل تصادفی است:


پیچیدگی، اصلی ترین عیب الگوریتم های جنگل تصادفی است. ساخت جنگل های تصادفی بسیار سخت تر و زمان بر تر از درختان تصمیم گیری است. برای پیاده سازی الگوریتم جنگل تصادفی، به منابع محاسباتی بیشتری نیاز است. در صورت وجود یک مجموعه بزرگ از درختان تصمیم گیری، جنگل تصادفی کمتر شهودی خواهد بود. روند پیش بینی با استفاده از جنگل های تصادفی در مقایسه با سایر الگوریتم ها بسیار زمان برتر است.


  • 153
  •    104
  • تاریخ ارسال :   1399/07/09

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .