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

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

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



بهبود کارایی با تنظیم الگوریتم:



همانطور که می دانیم مدل های Ml به گونه ای دارای پارامتر هستند که رفتار آنها برای یک مساله خاص می تواند تعدیل شود. تنظیم الگوریتم به معنی پیدا کردن بهترین ترکیب از این پارامترها است به گونه ای که کارایی مدل ML بهبود یابد. این روند گاهی بهینه سازی فرا پارامتر (hyperparameter) نام می گیرد ،و پارامتر های خود الگوریتم فرا پارامتر (hyperparameter) نام دارند و ظرایب الگوریتم ML پارامتر نام می گیرد.


در اینجا، به بحث درباره برخی از متدها برای تنظیم پارامتر الگوریتم که توسط Python Scikit-learn ارائه شده است، خواهیم پرداخت.



تنظیم پارامتر جستجوی شبکه توری(grid search) :


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


مثال: ‌


در مثال زیر در پایتون، برای ارزیابی مقادیر متنوع آلفا (alpha)، برای الگوریتم Ridge Regression ، با استفاده از کلاس GridSearchCV از sklearn ، روی مجموعه داده Pima Indians diabetes ، جستجوی شبکه توری را انجام خواهیم داد.


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




    import numpy
    from pandas import read_csv
    from sklearn.linear_model import Ridge
    from sklearn.model_selection import GridSearchCV
    
    
                        


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



    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]
    
                         


سپس، به صورت زیر مقادیر متنوع آلفا را ارزیابی کنید.



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



    alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
    param_grid = dict(alpha=alphas)
    
                            
                                                 


حال، باید جستجوی شبکه توری را روی مدل خود اعمال کنیم.



    model = Ridge()
    grid = GridSearchCV(estimator=model, param_grid=param_grid)
    grid.fit(X, Y)
    
                            
                                                 

با دستور اسکریپت زیر نتیجه را چاپ کنید.



حال، باید جستجوی شبکه توری را روی مدل خود اعمال کنیم.



    print(grid.best_score_)
    print(grid.best_estimator_.alpha)
    
                            
                                                 

خروجی: ‌



حال، باید جستجوی شبکه توری را روی مدل خود اعمال کنیم.



    0.2796175593129722
    1.0
    
                                                                            
                                                                                                 

خروجی فوق، امتیاز بهینه و مجموعه ای از پارامترهای درون شبکه توری که آن امتیاز را کسب کرده اند، را به ما می دهد. مقدار آلفا در این مورد 1.0 است.



تنظیم پارامتر جستجوی تصادفی:‌


‌ این یک راهکار تنظیم پارامتر است. نقطه کلیدی درباره عملکرد این متد این است که از پارامتر های الگوریتم بر اساس یک توزیع تصادفی ، برای تعداد ثابتی از تکرار، نمونه گیری می کند.


مثال: ‌


در مثال زیر در پایتون، برای ارزیابی مقادیر متنوع آلفا بین 0 و 1، برای الگوریتم Ridge Regression ، با استفاده از کلاس RandomizedSearchCV از sklearn ، روی مجموعه داده Pima Indians diabetes ، جستجوی تصادفی را انجام خواهیم داد.


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



                        import numpy
                        from pandas import read_csv
                        from scipy.stats import uniform
                        from sklearn.linear_model import Ridge
                        from sklearn.model_selection import RandomizedSearchCV
                        
    

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



    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]
    
     

سپس، به صورت زیر، مقادیر مختلف آلفا را روی الگوریتم Ridge regression ارزیابی کنید.



    param_grid = {'alpha': uniform()}
    model = Ridge()
    random_search = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=50,
    random_state=7)
    random_search.fit(X, Y)
    
                        
                   

به وسیله اسکریپت زیر نتیجه را چاپ کنید.



                    print(random_search.best_score_)
                    print(random_search.best_estimator_.alpha)
                    
                                          
                                     


خروجی: ‌


                                        0.27961712703051084
                                        0.9779895119966027
                                        
                                                              
                                                         


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


  • 87
  •    106
  • تاریخ ارسال :   1399/08/02

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

ارسال

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

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