Гиперпараметры — это настройки модели, которые задаются до начала обучения и управляют процессом обучения. Они не обучаются на данных (в отличие от параметров модели, например, весов нейросети), а подбираются вручную или автоматически.
Примеры гиперпараметров для Random Forest:
➖n_estimators — сколько деревьев будет в «лесу».
➖max_depth — насколько глубокими могут быть деревья.
➖min_samples_split — минимальное количество данных в узле для его разделения.
Их выбор влияет на:
*️⃣Скорость обучения.
*️⃣Точность модели.
*️⃣Риск переобучения/недообучения.
🔍 Разбор кода с RandomizedSearchCV
search = RandomizedSearchCV(
estimator=RandomForestClassifier(random_state=42), # 1. Какая модель обучается?
param_distributions=param_dist, # 2. Какие гиперпараметры перебирать?
n_iter=50, # 3. Сколько комбинаций проверить?
cv=5, # 4. Как проверять качество?
n_jobs=-1 # 5. Как использовать ресурсы?
)
Построчное объяснение
1️⃣estimator=RandomForestClassifier(random_state=42)
*️⃣estimator: Модель, которую мы настраиваем — RandomForestClassifier.
*️⃣random_state=42: Фиксирует случайность для воспроизводимости результатов (например, разбиение данных на тренировочные/тестовые).
2️⃣param_distributions=param_dist
*️⃣Словарь param_dist содержит гиперпараметры и их возможные значения, которые алгоритм будет случайно подбирать.
3️⃣n_iter=50
*️⃣Сколько случайных комбинаций гиперпараметров проверить. Например, 50 комбинаций из всех возможных вариантов в param_dist.
4️⃣cv=5
*️⃣Стратегия кросс-валидации: 5 фолдов (данные делятся на 5 частей, модель обучается на 4 и проверяется на 1, повторяя 5 раз). Это помогает оценить стабильность модели.
5️⃣n_jobs=-1
*️⃣Задействует все доступные ядра процессора для параллельных вычислений. Ускоряет поиск в разы!
Как это работает?
1️⃣Алгоритм случайно выбирает 50 комбинаций гиперпараметров из param_dist.
2️⃣Для каждой комбинации:
*️⃣Обучает модель на тренировочных данных.
*️⃣Проверяет её качество с помощью 5-фолдовой кросс-валидации.
3️⃣Выбирает комбинацию с наивысшей точностью (или другой метрикой).
Зачем это нужно?
➖Экономия времени: Перебор всех комбинаций (как в Grid Search) может занять дни, а Random Search проверяет только случайные варианты.
➖Эффективность: Часто находит хорошие гиперпараметры даже в многомерных пространствах.
👉 Совет: Всегда сохраняйте лучшие параметры через search.best_params_ и используйте их для финальной модели.
# Пример использования результатов
best_params = search.best_params_
final_model = RandomForestClassifier(**best_params, random_state=42)
final_model.fit(X_train, y_train)
