Сталкивались ли вы с задачами математической оптимизации в контексте машинного обучения?

«Сталкивались ли вы с задачами математической оптимизации в контексте машинного обучения?» — вопрос из категории Классическое ML, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, задачи оптимизации лежат в основе многих аспектов ML. Я применял методы математической оптимизации не только как внутренний механизм обучения моделей, но и для решения смежных прикладных задач.

1. Оптимизация гиперпараметров модели: Использовал Bayesian Optimization (через библиотеку optuna) для поиска оптимальных гиперпараметров, что эффективнее, чем случайный или сеточный поиск.

import optuna

def objective(trial):
    # Optuna предлагает значения для каждого trial
    n_estimators = trial.suggest_int('n_estimators', 100, 500)
    max_depth = trial.suggest_int('max_depth', 3, 10)
    learning_rate = trial.suggest_loguniform('learning_rate', 1e-3, 0.1)

    model = XGBClassifier(n_estimators=n_estimators,
                          max_depth=max_depth,
                          learning_rate=learning_rate)
    model.fit(X_train, y_train)
    score = model.score(X_val, y_val)
    return score

study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=50)
print(f"Лучшие параметры: {study.best_params}")

2. Решение бизнес-задач с ограничениями:

  • Оптимизация рекламного бюджета: Задача — распределить ограниченный бюджет между каналами (Google Ads, соцсети) для максимизации конверсий. Формулировал её как задачу линейного/нелинейного программирования, где целевая функция — прогноз конверсий от вложений (построенный ML-моделью), а ограничение — общая сумма бюджета. Решал с помощью SciPy.optimize или CVXPY.
  • Балансировка A/B-теста: При запуске эксперимента нужно было минимизировать диспропорцию в размерах групп (например, 50%/50%) с учётом входящего потока пользователей. Это можно сформулировать как задачу онлайн-оптимизации (типа multi-armed bandit) или задачу целочисленного программирования.

3. Регуляризация в ML как оптимизация: Сама функция потерь с L1/L2 регуляризацией — это задача минимизации с ограничением на норму весов (в случае лагранжевой формулировки). Понимание этого помогает осознанно выбирать коэффициент регуляризации, трактуя его как множитель Лагранжа.