Friday, July 15, 2022

Using Grid Search to Optimize Hyperparameters

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}






























Для поиска в сетке гиперпараметров для моделей глубокого обучения в Python с Keras в приведенном ниже коде Вы увидите отличие от SVR(kernel='rbf')






No comments:

Post a Comment