Практика ML

Random Search

Случайный поиск

актуальноТекущий рабочий стандарт

Случайная выборка конфигураций из заданных распределений.

Ключевые тезисы

  • При равном бюджете обычно лучше сетки: важные параметры покрываются плотнее.
  • Легко останавливается в любой момент.
  • Логарифмические шкалы для lr и регуляризации обязательны.

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Почему случайный поиск обычно лучше сетки

Классический результат Бергстры и Бенжио.

Если из четырёх параметров реально важен один, сетка 5×5×5×5 проверит всего 5 разных значений важного параметра. Случайный поиск из 100 точек даст 100 различных значений по каждому измерению.

from scipy.stats import loguniform, randint
space = {
    "learning_rate": loguniform(1e-3, 3e-1),   # логарифмическая шкала!
    "num_leaves": randint(15, 255),
    "min_child_samples": randint(5, 200),
    "subsample": [0.6, 0.8, 1.0],
}
Для lr и регуляризации всегда используйте логарифмическое распределение
2

Как задавать распределения

Половина успеха — правильная шкала.

ПараметрРаспределениеДиапазон
learning_rateлогравномерное
регуляризация λ / Cлогравномерное
глубина, число листьевравномерное целое3–12 / 15–255
subsample, colsampleравномерное0.6–1.0
На практике

Задавать lr равномерно на — почти гарантированно потратить 90% запусков на слишком большие значения.

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

Подбор гиперпараметров