Байесовская оптимизация — это метод настройки гиперпараметров, используемый для оптимизации производительности моделей машинного обучения. Он основан на концепции байесовского вывода, которая предполагает использование предварительных знаний для обновления наших представлений о модели или системе на основе новых данных.
Вот шаги, необходимые для выполнения байесовской оптимизации:
- Определите набор гиперпараметров и их возможных значений: это то же самое, что и при поиске по сетке и случайном поиске.
- Определите показатель производительности для оптимизации: он такой же, как при поиске по сетке и случайном поиске.
- Определение априорного распределения вероятностей по гиперпараметрам. В байесовской оптимизации мы используем априорное распределение вероятностей, чтобы представить наше априорное мнение о производительности модели для различных значений гиперпараметров.
- Выборка гиперпараметров на основе предыдущего распределения: на первой итерации мы выбираем гиперпараметры из предыдущего распределения. В последующих итерациях мы используем информацию, полученную в предыдущих итерациях, для обновления предыдущего распределения и выборки гиперпараметров из обновленного распределения.
- Обучите и оцените модель для каждой комбинации гиперпараметров: это то же самое, что и при поиске по сетке и случайном поиске.
- Используйте результаты для обновления априорного распределения: после каждой итерации мы используем производительность модели для обновления априорного распределения по гиперпараметрам. Это позволяет нам постепенно улучшать нашу оценку оптимальных гиперпараметров.
- Повторяйте шаги 4–6 до сходимости: мы продолжаем процесс выборки гиперпараметров, обучения и оценки модели и обновления предыдущего распределения до тех пор, пока не достигнем удовлетворительного уровня производительности или пока не закончатся ресурсы.
Байесовская оптимизация имеет несколько преимуществ перед поиском по сетке и случайным поиском. Во-первых, он более эффективен в вычислительном отношении, чем поиск по сетке, поскольку использует результаты предыдущих итераций для информирования следующей итерации. Во-вторых, он более систематичен, чем случайный поиск, поскольку использует вероятностную модель для поиска оптимальных гиперпараметров.
Однако байесовская оптимизация может быть более сложной для реализации и может потребовать большего опыта, чем поиск по сетке и случайный поиск. Кроме того, он может быть менее подходящим для многомерных пространств гиперпараметров, где пространство поиска очень велико.
from bayes_opt import BayesianOptimization from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_classification from sklearn.model_selection import cross_val_score # Generate a random dataset X, y = make_classification(n_samples=1000, n_features=10, random_state=42) # Define the hyperparameters to search over and their bounds pbounds = { 'n_estimators': (100, 1000), 'max_depth': (2, 10), 'min_samples_split': (2, 10), } # Define the function to optimize (in this case, the mean cross-validation score) def rf_cv_score(n_estimators, max_depth, min_samples_split): clf = RandomForestClassifier(n_estimators=int(n_estimators), max_depth=int(max_depth), min_samples_split=int(min_samples_split), random_state=42) return cross_val_score(clf, X, y, cv=5).mean() # Create the Bayesian optimization object and run the optimization optimizer = BayesianOptimization( f=rf_cv_score, pbounds=pbounds, random_state=42, ) optimizer.maximize(init_points=5, n_iter=20) # Print the best hyperparameters and their score print("Best hyperparameters: ", optimizer.max["params"]) print("Best score: ", optimizer.max["target"])
В этом примере мы используем класс BayesianOptimization
из пакета bayesian-optimization
для выполнения байесовской оптимизации. Сначала мы определяем гиперпараметры для поиска и их границы, используя словарь (pbounds
). Затем мы определяем функцию для оптимизации, которая является средней оценкой перекрестной проверки классификатора случайного леса (rf_cv_score
).
Создаем объект BayesianOptimization
и запускаем оптимизацию с 5 начальными точками и 20 итерациями по методу maximize
.
После запуска оптимизации мы выводим лучшие гиперпараметры и их оценку.
Обратите внимание, что это всего лишь базовый пример, и вам может потребоваться настроить параметры в соответствии с вашим конкретным вариантом использования. Кроме того, имейте в виду, что байесовская оптимизация может потребовать значительных вычислительных ресурсов, особенно для больших наборов данных и сложных моделей.
Чтобы узнать больше о науке о данных, перейдите по ссылке: https://medium.com/@thedatabeast