Поиск по сетке и случайный поиск
GridSearchCV, RandomizedSearchCV, проектирование param_grid и повторное обучение с лучшими параметрами.
«Поиск по сетке и случайный поиск» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Зачем настраивать гиперпараметры
У моделей есть гиперпараметры (например, максимальная глубина или C), которые не обучаются на данных, а задаются до обучения. Правильные значения могут значительно повысить качество, поэтому мы систематически ищем их.
Ручная настройка приводит к ошибкам
Перебирать значения вручную медленно и легко допустить предвзятость. Автоматический поиск в сочетании с перекрёстной проверкой позволяет честно оценить каждого кандидата и воспроизводимо найти лучшую комбинацию.
Основы GridSearchCV
GridSearchCV проверяет каждую комбинацию в сетке параметров, оценивая её с помощью перекрёстной проверки. Этот метод исчерпывающий и гарантирует поиск лучшей точки в заданной сетке.
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
param_grid = {
"n_estimators": [100, 200, 300],
"max_depth": [4, 8, None],
}
gs = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
gs.fit(X, y)Комбинаторный взрыв
Стоимость поиска по сетке растёт пропорционально произведению количества вариантов всех параметров, умноженному на число блоков перекрёстной проверки. Для трёх параметров с пятью значениями каждого и перекрёстной проверкой по пяти блокам потребуется 5*5*5*5 = 625 обучений. Сетки быстро становятся дорогими.
Оценивание в GridSearchCV
Параметр scoring выбирает метрику для оптимизации. Для несбалансированных данных выберите f1 или roc_auc вместо точности, используемой по умолчанию.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
scoring="roc_auc",
)
gs.fit(X, y)Распараллеливание с помощью n_jobs
Обучение каждого кандидата независимо, поэтому задайте n_jobs=-1, чтобы выполнять их на всех ядрах CPU. Это значительно сокращает реальное время выполнения для больших сеток.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
n_jobs=-1,
verbose=1,
)Чтение лучших результатов
После обучения проверьте best_params_, чтобы узнать лучшую комбинацию, best_score_ — оценку при перекрёстной проверке, а best_estimator_ — повторно обученную модель, готовую к прогнозированию.
gs.fit(X, y)
print("Best params:", gs.best_params_)
print("Best CV score:", gs.best_score_)
best_model = gs.best_estimator_
best_model.predict(X_new)Проверка всех результатов
cv_results_ — это словарь (удобный для преобразования в DataFrame), в котором показаны оценки и места всех кандидатов. Используйте его, чтобы понять, какие параметры важны и насколько стабильны оценки.
import pandas as pd
results = pd.DataFrame(gs.cv_results_)
print(results[["params", "mean_test_score", "rank_test_score"]].head())RandomizedSearchCV
Когда пространство поиска огромно, RandomizedSearchCV выбирает заданное число случайных комбинаций вместо проверки всех. Бюджет поиска задаётся параметром n_iter.
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
param_dist = {
"n_estimators": randint(100, 500),
"max_depth": randint(3, 20),
}
rs = RandomizedSearchCV(
RandomForestClassifier(), param_dist,
n_iter=30, cv=5, random_state=0,
)
rs.fit(X, y)Почему случайный поиск часто выигрывает
Во многих задачах действительно важны лишь несколько гиперпараметров. Случайный поиск исследует эти важные измерения эффективнее, чем жёсткая сетка, и находит хорошие решения с гораздо меньшим числом испытаний.
Сетка или случайный поиск: рекомендации
Используйте GridSearchCV для небольшого дискретного набора кандидатов. Используйте RandomizedSearchCV для больших или непрерывных пространств, задав бюджет n_iter. В обоих случаях лучшая модель автоматически обучается заново, если задано refit=True.
Быстрая проверка
Проверьте свои знания о поиске гиперпараметров.
Итоги
Итоги: GridSearchCV исчерпывающе проверяет каждую комбинацию в param_grid; с ростом размера стоимость резко увеличивается. RandomizedSearchCV выбирает n_iter комбинаций для больших пространств. Задайте scoring для выбора метрики и n_jobs=-1 для ускорения, а после обучения проверьте best_params_, best_score_ и best_estimator_.
Часто задаваемые вопросы
Урок «Поиск по сетке и случайный поиск» бесплатный?
Да — полный текст урока «Поиск по сетке и случайный поиск» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Поиск по сетке и случайный поиск»?
GridSearchCV, RandomizedSearchCV, проектирование param_grid и повторное обучение с лучшими параметрами. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Поиск по сетке и случайный поиск»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Стратегии кросс-валидации
- Подробный разбор метрик классификации
- Поиск по сетке и случайный поиск
- Байесовская оптимизация с Optuna