Ответ
Grid Search (сетчатый поиск) — это метод оптимизации гиперпараметров машинного обучения, который выполняет исчерпывающий перебор по заранее заданной сетке значений. Его цель — найти комбинацию гиперпараметров, которая дает наилучшую производительность модели на валидационных данных.
Как это работает: Вы определяете словарь, где ключи — это названия гиперпараметров (например, max_depth, n_estimators), а значения — списки возможных значений для перебора. Алгоритм обучает и оценивает модель для каждой возможной комбинации этих значений.
Пример с GridSearchCV из Scikit-learn для Random Forest:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.datasets import load_iris
# Загрузка данных
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Определение модели и сетки параметров
model = RandomForestClassifier(random_state=42)
param_grid = {
'n_estimators': [50, 100, 200], # Количество деревьев
'max_depth': [None, 10, 20, 30], # Максимальная глубина дерева
'min_samples_split': [2, 5, 10] # Минимальное число образцов для разделения узла
}
# Создание и запуск Grid Search
grid_search = GridSearchCV(
estimator=model,
param_grid=param_grid,
cv=5, # 5-кратная кросс-валидация
scoring='accuracy', # Метрика для оптимизации
n_jobs=-1 # Использовать все ядра процессора
)
grid_search.fit(X_train, y_train)
# Результаты
print(f"Лучшие параметры: {grid_search.best_params_}")
print(f"Лучшая оценка кросс-валидации: {grid_search.best_score_:.3f}")
# Оценка на тестовом наборе
best_model = grid_search.best_estimator_
test_score = best_model.score(X_test, y_test)
print(f"Accuracy на тестовом наборе: {test_score:.3f}")
Преимущества: Гарантирует нахождение лучшей точки в пределах заданной сетки. Прост в понимании и реализации. Недостатки: Вычислительно очень дорог, особенно при большом количестве параметров и значений. Неэффективен для поиска по непрерывным пространствам. На практике для больших пространств параметров часто используют RandomizedSearchCV или более продвинутые методы, такие как Optuna или Hyperopt.