Учебники

Улучшение производительности модели ML (продолжение)

Поскольку мы знаем, что модели ML параметризованы таким образом, что их поведение может быть скорректировано для конкретной проблемы. Настройка алгоритма означает поиск наилучшей комбинации этих параметров, чтобы можно было улучшить производительность модели ML. Этот процесс иногда называют оптимизацией гиперпараметров, а параметры самого алгоритма называют гиперпараметрами, а коэффициенты, найденные алгоритмом ML, называют параметрами.

Улучшение производительности с помощью настройки алгоритма

Здесь мы собираемся обсудить некоторые методы настройки параметров алгоритма, предоставляемые Python Scikit-learn.

Настройка параметров поиска в сетке

Это подход настройки параметров. Ключевым моментом работы этого метода является то, что он методично строит и оценивает модель для каждой возможной комбинации параметров алгоритма, указанных в сетке. Следовательно, можно сказать, что этот алгоритм имеет поисковый характер.

пример

В следующем рецепте Python мы собираемся выполнить поиск по сетке, используя класс sklearn GridSearchCV для оценки различных альфа-значений для алгоритма регрессии Риджа в наборе данных диабета индейцев Пима.

Сначала импортируйте необходимые пакеты следующим образом:

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

Теперь нам нужно загрузить набор данных диабета Pima, как это делалось в предыдущих примерах —

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]

Затем оцените различные значения альфа следующим образом;

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.

Настройка параметров случайного поиска

Это подход настройки параметров. Ключевым моментом работы этого метода является то, что он выбирает параметры алгоритма из случайного распределения для фиксированного числа итераций.

пример

В следующем рецепте Python мы собираемся выполнить случайный поиск, используя класс sklearn RandomizedSearchCV для оценки различных значений альфа-канала между 0 и 1 для алгоритма регрессии хребта для набора данных диабета индейцев пима.

Сначала импортируйте необходимые пакеты следующим образом:

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, как это делалось в предыдущих примерах —

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]

Затем оцените различные альфа-значения в алгоритме регрессии Риджа следующим образом:

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

Приведенный выше вывод дает нам оптимальную оценку, аналогичную поиску по сетке.