Полное руководство по байесовской оптимизации в Python: методы и примеры кода

Оптимизация производительности моделей машинного обучения часто предполагает настройку гиперпараметров. Байесовская оптимизация — это мощный метод, который позволяет нам эффективно искать оптимальный набор гиперпараметров, балансируя исследование и эксплуатацию. В этой статье мы рассмотрим различные методы и предоставим примеры кода для реализации байесовской оптимизации в Python.

  1. Установка:

Для начала нам необходимо установить необходимые библиотеки. Откройте терминал и выполните следующую команду:

pip install scikit-optimize
  1. Гауссова регрессия процесса:

Байесовская оптимизация опирается на регрессию Гауссова процесса (GP) для моделирования целевой функции. Библиотека scikit-optimize обеспечивает реализацию регрессии GP. Давайте посмотрим пример использования регрессии GP для моделирования простой функции:

import numpy as np
from skopt import gp_minimize
# Define the objective function
def objective(x):
    return x2 + np.sin(5 * x)
# Define the search space
space = [(0.0, 10.0)]
# Perform Bayesian optimization
result = gp_minimize(objective, space)
# Print the optimal solution
print("Optimal solution:", result.x)
  1. Байесовская оптимизация с помощью древовидных оценщиков Парзена (TPE):

Алгоритм TPE — еще один популярный подход к байесовской оптимизации. Для моделирования целевой функции он использует древовидную систему оценки Парзена. Вот пример использования TPE для настройки гиперпараметров в модели машинного обучения:

from skopt import BayesSearchCV
from sklearn.datasets import load_iris
from sklearn.svm import SVC
# Load the dataset
X, y = load_iris(return_X_y=True)
# Define the search space
search_space = {'C': (0.1, 10.0, 'log-uniform'),
                'gamma': (1e-6, 1e+1, 'log-uniform'),
                'kernel': ['linear', 'rbf']}
# Perform Bayesian optimization with TPE
opt = BayesSearchCV(SVC(), search_space, n_iter=50)
opt.fit(X, y)
# Print the best hyperparameters
print("Best hyperparameters:", opt.best_params_)
  1. Функция сбора данных ожидаемого улучшения (EI):

Функция сбора определяет компромисс между исследованием и эксплуатацией при байесовской оптимизации. Ожидаемое улучшение (EI) — это широко используемая функция сбора данных, которая балансирует разведку и эксплуатацию. Вот пример использования EI в качестве функции сбора данных:

from skopt import Optimizer
# Define the objective function
def objective(x):
    return x2 + np.sin(5 * x)
# Define the search space
space = [(0.0, 10.0)]
# Create the optimizer with EI acquisition function
opt = Optimizer(space, base_estimator="GP", acq_func="EI")
# Perform Bayesian optimization
for _ in range(10):
    x = opt.ask()
    y = objective(x)
    opt.tell(x, y)
# Print the optimal solution
print("Optimal solution:", opt.x_opt)

Байесовская оптимизация — ценный метод эффективной настройки гиперпараметров в моделях машинного обучения. В этой статье мы рассмотрели различные методы, в том числе регрессию Гауссовского процесса, древовидные оценки Парзена (TPE) и функцию сбора данных ожидаемого улучшения (EI), а также примеры кода на Python. Используя эти методы, вы можете повысить производительность своих моделей и достичь оптимальных конфигураций гиперпараметров.