Bayesian optimization на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем разбирать на собесе

Bayesian optimization — стандарт для expensive HP tuning. На собесе DS: «отличие от grid / random», «GP как surrogate».

Зачем Bayesian optimization

Hyperparameter tuning — функция f(hp) → metric. Каждый eval — train модели (минуты-часы).

Grid search. Перебираем все комбинации. Дорого.

Random search. Random sampling. Lучше grid в high-dim.

Bayesian optimization. Smart — выбирает next HP based на learning of function.

1. Randomly try несколько HPs.
2. Build surrogate model на observations.
3. Use surrogate + acquisition function для выбора next HP.
4. Train model with this HP, observe.
5. Update surrogate. Goto 3.

Для expensive eval — на порядки эффективнее grid / random.

Surrogate model — Gaussian Process

Probabilistic model функции f.

Outputs. Mean μ(x) и variance σ²(x) предсказания на любом x.

GP after few observations:
  Высокая uncertainty в неисследованных regions.
  Низкая uncertainty — где много samples.

GP даёт Bayesian inference на функции.

Acquisition function

Тells «где next sample». Compromise между exploration и exploitation.

Expected Improvement (EI). Most popular.

EI(x) = E[max(0, f(x) - f_best)]

Значит «насколько expectation improve over current best».

Upper Confidence Bound (UCB). μ(x) + κ · σ(x) — exploit (high mean) + explore (high uncertainty).

Probability of Improvement (PI). Простее, less robust.

Argmax acquisition — next HP для evaluation.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Optuna и Hyperopt

Optuna. Современный, popular Python lib.

import optuna

def objective(trial):
    lr = trial.suggest_loguniform("lr", 1e-5, 1e-1)
    n_est = trial.suggest_int("n_estimators", 100, 1000)
    model = ...
    return cv_score

study = optuna.create_study()
study.optimize(objective, n_trials=100)

Поддерживает Bayesian, TPE (Tree-structured Parzen Estimator), Random, Grid.

Hyperopt. Старый, тоже работает.

Ray Tune. Distributed HP tuning.

Применения

ML hyperparameter tuning. Стандарт.

A/B test design. Bayesian подход.

AutoML. Внутри AutoML — bayesian для NAS.

Engineering optimization. Где expensive evaluation: chemical engineering, drug discovery, structural design.

Связанные темы

FAQ

TPE vs GP?

TPE (Tree-structured Parzen Estimator) — alternative surrogate. Часто быстрее GP на discrete / mixed search spaces. Default в Optuna.

Это официальная информация?

Нет. Статья основана на работах (Snoek 2012 GP-UCB), документации Optuna.


Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.