Как оптимизировать гиперпараметры в модели Scikit-Learn?

Этот вопрос проверяет знание методов оптимизации гиперпараметров в Scikit-Learn.

Короткий ответ

Для оптимизации гиперпараметров в Scikit-Learn используют GridSearchCV или RandomizedSearchCV. GridSearchCV пробует все возможные комбинации параметров, в то время как RandomizedSearchCV выбирает случайные комбинации, что ускоряет процесс. Оба метода возвращают наилучшие параметры для модели.

Длинный ответ

Оптимизация гиперпараметров — это процесс поиска наилучших значений для гиперпараметров модели, что помогает улучшить её производительность. В Scikit-Learn для этой цели используются два основных метода: GridSearchCV и RandomizedSearchCV.

 

1. GridSearchCV:

- Метод: Пробует все возможные комбинации значений гиперпараметров.

- Когда использовать: Подходит для небольшого числа гиперпараметров или когда есть достаточно вычислительных ресурсов.

- Пример:

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

param_grid = {'n_estimators': [10, 50, 100], 'max_depth': [5, 10, 15]}
model = RandomForestClassifier()

grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X_train, y_train)
print("Лучшие параметры:", grid_search.best_params_)

 

2. RandomizedSearchCV:

- Метод: Выбирает случайные комбинации гиперпараметров из заданного диапазона.

- Когда использовать: Хорошо работает, когда есть много гиперпараметров и диапазоны значений слишком велики для полной проверки.

- Пример:

from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import randint

param_dist = {'n_estimators': randint(10, 100), 'max_depth': randint(5, 20)}
model = RandomForestClassifier()

random_search = RandomizedSearchCV(model, param_dist, n_iter=100, cv=5)
random_search.fit(X_train, y_train)
print("Лучшие параметры:", random_search.best_params_)

 

Оба метода используют кросс-валидацию для оценки каждой комбинации гиперпараметров. Лучшие параметры хранятся в атрибуте best_params_.

Уровень

  • Рейтинг:

    1

  • Сложность:

    5

Навыки

  • Scikit-learn

Подпишись на Data Science в телеграм