GridSearchCV обеспечивает исчерпывающий поиск по сетке, который порождает кандидатов из сетки значений параметров. В качестве примера рассмотрим настройку гиперпараметров для класса SVR регрессии опорных векторов. Далее мы увидим позже, эти значения создаются с помощью параметра param_grid. Мы импортируем svm, поскольку тип алгоритма, который мы хотим использовать, это машина опорных векторов. Класс SVR представляет регрессию опорных векторов Epsilon. При этом модель имеет два свободных параметра; С и эпсилон. Мы установим параметры на следующем шаге.
==========================================
Укажите гиперпараметры и диапазон значений.
Затем мы указываем гиперпараметры, которые хотим исследовать. Например при использовании ядра rbf SVR используются три гиперпараметра: C, epsilon и gamma. Мы можем дать каждому несколько значений на выбор.Помните, что эти значения можно изменить и протестировать, чтобы увидеть, какая коллекция значений дает лучшие результаты. Ниже приведены мои случайно выбранные значения.
param_grid={
'C': [1.1, 5.4, 170, 1001],
'epsilon': [0.0003, 0.007, 0.0109, 0.019, 0.14, 0.05, 8, 0.2, 3, 2, 7],
'gamma': [0.7001, 0.008, 0.001, 3.1, 1, 1.3, 5]
}
Оценка.
Мы упоминали, что перекрестная проверка проводится для оценки производительности модели. В k-кратной перекрестной проверке k — это количество кратностей. Как показано ниже, через cv=5 мы используем перекрестную проверку для обучения модели 5 раз. Это означает, что 5 будет значением k. scoring='neg_mean_squared_error' дает нам среднеквадратичную ошибку. В таком виде он используется при поиске по сетке. Это предназначено для получения отрицательного значения среднеквадратической ошибки, чтобы максимизировать и оптимизировать ее вместо минимизации фактической ошибки.
Параметр n_jobs указывает количество параллельных процессов, которые следует использовать для подпрограмм, распараллеленных с библиотекой joblib. В нашем случае -1 означает, что все ЦП используются.verbose дает нам возможность производить журнальную информацию. Мы сохраняем его равным 0, чтобы отключить его, так как это может замедлить наш алгоритм.
(.env) boris@boris-All-Series:~/GRIDHYPER$ cat GridSearchHyper.py
from sklearn.datasets import load_iris
from sklearn.model_selection import GridSearchCV
from sklearn import svm
from sklearn.svm import SVR
iris = load_iris()
svc = svm.SVR()
grid = GridSearchCV(estimator=SVR(kernel='rbf'),
param_grid={
'C': [1.1, 5.4, 170, 1001],
'epsilon': [0.0003, 0.007, 0.0109, 0.019, 0.14, 0.05, 8, 0.2, 3, 2, 7],
'gamma': [0.7001, 0.008, 0.001, 3.1, 1, 1.3, 5]
},
cv=5, scoring='neg_mean_squared_error', verbose=0, n_jobs=-1)
X = iris.data
y = iris.target
grid.fit(X,y)
#print the best parameters from all possible combinations
print("best parameters are: ", grid.best_params_)
(.env) boris@boris-All-Series:~/GRIDHYPER$ python3 GridSearchHyper.py
best parameters are: {'C': 170, 'epsilon': 0.0003, 'gamma': 0.008}
No comments:
Post a Comment