← Назад к вопросам
Что такое 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 — это метод исчерпывающего поиска по всем возможным комбинациям гиперпараметров из заданной сетки значений.
Как это работает:
- Определяем сетку значений для каждого гиперпараметра
- Генерируем все возможные комбинации
- Для каждой комбинации обучаем модель и оцениваем её
- Выбираем комбинацию с лучшим результатом
Пример на 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 — это метод, при котором мы случайным образом выбираем комбинации гиперпараметров из заданного распределения.
Как это работает:
- Определяем диапазоны (или распределения) для каждого гиперпараметра
- Случайно выбираем N комбинаций из этих диапазонов
- Обучаем модель для каждой комбинации
- Выбираем лучшую
Пример на 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 Search | Random Search |
|---|---|---|
| Скорость | Медленно (n^m) | Быстро (n итераций) |
| Точность | Гарантия в сетке | Вероятностная |
| Параметры | ≤ 3 рекомендуется | Масштабируется |
| Гибкость | Фиксированные точки | Диапазоны/распределения |
| Лучший случай | Мало параметров | Много параметров |
Рекомендации по выбору
-
Grid Search используй когда:
- Мало гиперпараметров (1-3)
- Сетка значений хорошо исследована
- Есть достаточно вычислительных ресурсов
- Нужна гарантия оптимальности в сетке
-
Random Search используй когда:
- Много гиперпараметров (4+)
- Неизвестна форма оптимума
- Ограничены вычислительные ресурсы
- Хочешь исследовать широкий диапазон значений
Альтернативные подходы
Для более сложных случаев используют:
- Bayesian Optimization — вероятностная модель для интеллектуального выбора
- Hyperband — многоуровневый поиск с отсевом плохих конфигураций
- Optuna — фреймворк с поддержкой различных стратегий
В современной практике часто начинают с Random Search для первичной разведки, а затем применяют Grid Search на меньшей сетке вокруг найденного оптимума или переходят на Bayesian Optimization.