مشخصات مقاله
-
730
-
0.0
-
4163
-
0
-
0
بهبود کارایی الگوریتم های یادگیری ماشین
بهبود کارایی الگوریتمهای یادگیری ماشین
بهبود کارایی با تنظیم الگوریتم:
همانطور که می دانیم مدل های 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
خروجی فوق دقیقا مشابه جستجوی شبکه توری امتیاز بهینه را به ما می دهد.