← Назад к вопросам

Что такое Grid Search и Random Search?

1.0 Junior🔥 121 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Grid Search и Random Search: Методы подбора гиперпараметров

Grid Search и Random Search — это два основных подхода к гиперпараметрической оптимизации (hyperparameter tuning) в машинном обучении.

Grid Search (Полный перебор)

Grid Search — это метод исчерпывающего поиска по всем возможным комбинациям гиперпараметров из заданной сетки значений.

Как это работает:

  1. Определяем сетку значений для каждого гиперпараметра
  2. Генерируем все возможные комбинации
  3. Для каждой комбинации обучаем модель и оцениваем её
  4. Выбираем комбинацию с лучшим результатом

Пример на scikit-learn:

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

param_grid = {
    "n_estimators": [50, 100, 200],
    "max_depth": [5, 10, 15, None],
    "min_samples_split": [2, 5, 10],
    "learning_rate": [0.01, 0.1]
}

rf = RandomForestClassifier(random_state=42)
grid_search = GridSearchCV(
    estimator=rf,
    param_grid=param_grid,
    cv=5,  # 5-fold cross-validation
    scoring="accuracy",
    n_jobs=-1  # параллельная обработка
)

grid_search.fit(X_train, y_train)
print(f"Лучшие параметры: {grid_search.best_params_}")
print(f"Лучшая оценка: {grid_search.best_score_}")

Плюсы Grid Search:

  • Гарантированно найдёт лучшую комбинацию из предложенной сетки
  • Простой для понимания и реализации
  • Хорошо работает с 1-3 гиперпараметрами
  • Легко параллелизировать

Минусы Grid Search:

  • Экспоненциальная сложность: если у нас есть m параметров с n значениями каждый, нужно протестировать n^m комбинаций
  • При 5 параметрах по 10 значений = 100,000 комбинаций, что очень дорого
  • Может пропустить хорошие значения, находящиеся между точками сетки

Random Search (Случайный поиск)

Random Search — это метод, при котором мы случайным образом выбираем комбинации гиперпараметров из заданного распределения.

Как это работает:

  1. Определяем диапазоны (или распределения) для каждого гиперпараметра
  2. Случайно выбираем N комбинаций из этих диапазонов
  3. Обучаем модель для каждой комбинации
  4. Выбираем лучшую

Пример на scikit-learn:

from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint, uniform
from sklearn.ensemble import GradientBoostingClassifier

param_dist = {
    "n_estimators": randint(50, 300),
    "max_depth": randint(3, 20),
    "learning_rate": uniform(0.001, 0.2),
    "min_samples_split": randint(2, 10),
    "subsample": uniform(0.5, 0.5)  # от 0.5 до 1.0
}

gb = GradientBoostingClassifier(random_state=42)
random_search = RandomizedSearchCV(
    estimator=gb,
    param_distributions=param_dist,
    n_iter=100,  # Протестировать 100 случайных комбинаций
    cv=5,
    scoring="f1_weighted",
    n_jobs=-1,
    random_state=42
)

random_search.fit(X_train, y_train)
print(f"Лучшие параметры: {random_search.best_params_}")
print(f"Лучшая оценка: {random_search.best_score_}")

Плюсы Random Search:

  • Масштабируется лучше — сложность O(n), а не O(n^m)
  • Может найти неожиданные хорошие значения вне сетки
  • Часто находит лучшее решение при меньшем количестве итераций
  • Гибче с диапазонами значений

Минусы Random Search:

  • Может пропустить оптимальную комбинацию
  • Результаты могут варьироваться в зависимости от сида случайности
  • Требует больше итераций для точного поиска

Сравнение

КритерийGrid SearchRandom Search
СкоростьМедленно (n^m)Быстро (n итераций)
ТочностьГарантия в сеткеВероятностная
Параметры≤ 3 рекомендуетсяМасштабируется
ГибкостьФиксированные точкиДиапазоны/распределения
Лучший случайМало параметровМного параметров

Рекомендации по выбору

  1. Grid Search используй когда:

    • Мало гиперпараметров (1-3)
    • Сетка значений хорошо исследована
    • Есть достаточно вычислительных ресурсов
    • Нужна гарантия оптимальности в сетке
  2. Random Search используй когда:

    • Много гиперпараметров (4+)
    • Неизвестна форма оптимума
    • Ограничены вычислительные ресурсы
    • Хочешь исследовать широкий диапазон значений

Альтернативные подходы

Для более сложных случаев используют:

  • Bayesian Optimization — вероятностная модель для интеллектуального выбора
  • Hyperband — многоуровневый поиск с отсевом плохих конфигураций
  • Optuna — фреймворк с поддержкой различных стратегий

В современной практике часто начинают с Random Search для первичной разведки, а затем применяют Grid Search на меньшей сетке вокруг найденного оптимума или переходят на Bayesian Optimization.