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

بهبود کارایی مدلهای یادگیری ماشین

بهبود کارایی مدلهای یادگیری ماشین



بهبود کارایی با گروه ها (Ensembles):



گروه ها (Ensembles) با ترکیب چندین مدل می توانند در تقویت نتایج یادگیری ماشین به ما کمک کنند. اساسا، مدل های گروهی (ensemble models) شامل چندین مدل یادگیری تحت نظارت آموزش دیده مجزا هستند و نتایج آنها برای دستیابی به کارایی پیش بینی کننده بهتر، نسبت به یک مدل مجزا، به طرق مختلف با هم ادغام می شود. متدهای گروهی به دو دسته زیر تقسیم می شوند.



متدهای گروهی ترتیبی (sequential ensemble methods) :


همانطور که از نام آن می توان فهمید، در این نوع از متدهای گروهی ، یاد گیرنده های پایه (base learners) به صورت ترتیبی تولید شده اند. انگیزه این نوع از متد ها، بهره برداری از وابستگی بین یادگیرنده های پایه است.



متدهای گروهی موازی (parallel ensemble methods) :


همانطور که از نام آن می توان فهمید، در این نوع از متدهای گروهی ، یاد گیرنده های پایه (base learners) به صورت موازی تولید شده اند. انگیزه این نوع از متد ها، بهره برداری از استقلال بین یادگیرنده های پایه است.



متدهای یادگیری گروهی (ensemble learning methods) :


موارد زیر از رایج ترین متدهای یادگیری گروهی است. متدهایی برای ترکیب پیش بینی ها از مدل های مختلف.



bagging : ‌


واژه bagging و یا اجتماع بوت استرپ (bootstrap aggregation) : در متدهای bagging ، مدل گروهی (ensemble model) با ترکیب پیش بینی ها از مدل های مجزای آموزش دیده، روی نمونه های آموزشی که به طور تصادفی تولید شده اند، سعی در بهبود دقت پیش بینی و کاهش واریانس مدل دارد. پیش بینی نهایی مدل گروهی، با محاسبه میانگین همه پیش بینی های برآوردگر های مجزا به دست می آید. یکی از بهترین مثال ها از متدهای bagging ، جنگل های تصادفی (random forests) است.



تقویت (boosting) : ‌


در متد تقویت، قانون اصلی در ساخت مدل گروهی این است که، مدل را به تدریج، توسط آموزش هر برآوردگر مدل پایه به صورت ترتیبی، بسازیم. همانطور که از نام آن برداشت می شود، این متد، اساسا چندین یادگیرنده پایه هفته (week base learners)، که به طور ترتیبی روی چندین تکرار از داده آموزشی، آموزش دیده اند را ترکیب می کند، تا گروه های قدرتمند بسازد. در حین آموزش یادگیرنده های پایه هفته، وزن بیشتر به آن دسته از یادگیرنده هایی تخصیص می یابد که پیشتر به طور غلط طبقه بندی شده باشند. AdaBoost یک مثال از متد تقویت است.



رای گیری (voting) : ‌


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



الگوریتم های گروهی bagging :



درخت تصمیم گیری bagged (Bagged Decision Tree) ، جنگل تصادفی (Random Forest) و درختان مازاد (Extra Trees) سه مورد از الگوریتم های گروهی bagging هستند.



الگوریتم های گروهی تقویتی:‌


AdaBoost و تقویت گرادیان تصادفی (Stochastic Gradient Boosting) دو مورد از معمول ترین الگوریتم های گروهی تقویتی هستند.



الگوریتم های گروهی رای گیری:‌


همانطور که صحبت شد، رای گیری (voting) ابتدا دو مدل مستقل یا بیشتر را از مجموعه داده آموزشی می سازد، و سپس یک طبقه بندی کننده رای گیر (voting classifier) ، مدل را به همراه میانگین پیش بینی های زیر مدل (sub-model)، در هر زمان که به داده جدید نیاز باشد ، بسته بندی می کند.


در این راهکار پایتون که در ادامه قرار دارد، با استفاده از کلاس VotingClassifier از sklearn ، مدل گروهی رای گیری را برای طبقه بندی، روی مجموعه داده Pima Indians diabetes ، خواهیم ساخت. ما پیش بینی های رگرسیون لجستیک، طبقه بندی کننده درخت تصمیم گیری و SVM را برای مساله طبقه بندی زیر ترکیب می کنیم.


ابتدا، بسته های مورد نیاز را به صورت زیر وارد کنید.



                    from pandas import read_csv
                    from sklearn.model_selection import KFold
                    from sklearn.model_selection import cross_val_score
                    from sklearn.linear_model import LogisticRegression
                    from sklearn.tree import DecisionTreeClassifier
                    from sklearn.svm import SVC
                    from sklearn.ensemble import VotingClassifier
                    
                                                          
                                  
                                                      


حال، باید مجموعه داده Pima diabetes را مشابه مثال های قبل بارگیری کنیم.



                    from pandas import read_csv
                    path = r"C:\pima-indians-diabetes.csv"
                    headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
                    data = read_csv(path, names = headernames)
                    array = data.values
                    X = array[:,0:8]
                    Y = array[:,8]
                                                          
                                                                        
                 


سپس، مطابق زیر ورودی را برای اعتبار سنجی متقابل 10-fold بدهید.



    kfold = KFold(n_splits = 10, random_state = 7)
                                  


سپس، باید زیر مدل ها را به صورت زیر بسازیم.



    estimators = []
    model1 = LogisticRegression()
    estimators.append(('logistic', model1))
    model2 = DecisionTreeClassifier()
    estimators.append(('cart', model2))
    model3 = SVC()
    estimators.append(('svm', model3))
    
                                                      
                    


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



    ensemble = VotingClassifier(estimators)
    results = cross_val_score(ensemble, X, Y, cv = kfold)
    print(results.mean())
    
                                                                          


خروجی: ‌



            0.7382262474367738
                                            
                                                                                                                  
                                        

خروجی فوق نشان می دهد که مدل گروهی طبقه بندی کننده رای گیری (voting classifier ensemble model) تقریبا 74 درصد دقت دارد.


  • 75
  •    102
  • تاریخ ارسال :   1399/08/02

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

ارسال

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

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