estimator=model,
search_spaces={
'C': (1e-2, 1e2, 'log-uniform'),
'penalty': ['l1', 'l2']
},
n_iter=20,
cv=5,
scoring='accuracy',
random_state=42
)
bayes_search.fit(X_train, y_train)
bayes_best_params = bayes_search.best_params_
bayes_best_score = bayes_search.best_score_
# Оценка на тестовой выборке
grid_test_accuracy = accuracy_score(y_test, grid_search.best_estimator_.predict(X_test))
random_test_accuracy = accuracy_score(y_test, random_search.best_estimator_.predict(X_test))
bayes_test_accuracy = accuracy_score(y_test, bayes_search.best_estimator_.predict(X_test))
# Вывод результатов
print("Grid Search:")
print(f"Best Params: {grid_best_params}, CV Accuracy: {grid_best_score:.4f}, Test Accuracy: {grid_test_accuracy:.4f}")
print("\nRandom Search:")
print(f"Best Params: {random_best_params}, CV Accuracy: {random_best_score:.4f}, Test Accuracy: {random_test_accuracy:.4f}")
print("\nBayesian Optimization:")
print(f"Best Params: {bayes_best_params}, CV Accuracy: {bayes_best_score:.4f}, Test Accuracy: {bayes_test_accuracy:.4f}")
```
Объяснение подходов и результатов
1. Сеточный поиск:
Перебирает все комбинации параметров ( C ) и регуляризации (( l1, l2 )). Этот метод даёт точный результат, но требует тестирования всех ( 5 times 2 = 10 ) комбинаций, что становится неэффективным при увеличении числа параметров.
2. Случайный поиск:
Проверяет случайные комбинации параметров. В примере использовано ( n=10 ) итераций. Позволяет охватить больше значений ( C ) (логарифмическое пространство), но качество результата зависит от случайности и количества итераций.
3. Байесовская оптимизация:
Использует априорные вероятности для выбора комбинаций. В примере за 20 итераций она находит комбинации эффективнее, чем случайный поиск. Достигает компромисса между точностью и вычислительными затратами.
Ожидаемый результат
Вывод
Сеточный поиск показал высокую точность, но потребовал больше времени из-за полного перебора. Случайный поиск был быстрее, но его результат зависит от количества итераций и охвата пространства. Байесовская оптимизация нашла лучший результат за меньшее число итераций благодаря использованию информации о предыдущих комбинациях.
2. Тестирование и валидация:
Тестирование и валидация являются ключевыми этапами в процессе обучения моделей машинного обучения. Они позволяют не только оценить качество модели, но и понять, как выбор гиперпараметров влияет на её производительность. Для этого данные обычно делятся на несколько частей: тренировочный, валидационный и тестовый наборы. Тренировочные данные используются для обучения модели, валидационные данные – для подбора гиперпараметров, а тестовый набор служит для окончательной оценки. Такой подход предотвращает утечку информации между этапами и позволяет объективно измерить обобщающую способность модели.
Разделение данных на тренировочные, валидационные и тестовые наборы позволяет выделить независимые выборки для каждой цели. Тренировочный набор предназначен исключительно для обновления весов модели. Валидационный набор используется для оценки влияния гиперпараметров, таких как скорость обучения, момент или коэффициенты регуляризации. При этом модель подстраивается под тренировочные данные, но не обучается непосредственно на валидационных. Это предотвращает эффект переобучения, при котором модель запоминает данные вместо того, чтобы учиться их обобщать. Тестовый набор остаётся полностью изолированным от всех этапов обучения и подбора параметров, чтобы его использование отражало реальную производительность модели на невидимых данных.
Кросс-валидация является эффективным методом для минимизации риска переобучения и получения стабильных оценок качества модели. В наиболее распространённой технике, (k)-кратной кросс-валидации, данные делятся на (k) равных частей. Каждая из них поочерёдно используется как валидационный набор, в то время как остальные служат тренировочным. Средняя производительность по всем итерациям позволяет получить более надёжную оценку качества модели, особенно в случае ограниченных объёмов данных. Такой подход уменьшает влияние случайных выбросов и дисбалансов, которые могут присутствовать при случайном разделении данных.