Оптимизация в самой общей форме является процессом определения местоположения точки, которая минимизирует действительную функцию, называемую objective function. Байесовская оптимизация является именем одного такого процесса. Байесовская оптимизация внутренне поддерживает Гауссову модель процесса целевой функции и использует вычисления целевой функции, чтобы обучить модель. Одним из нововведений в байесовской оптимизации является использование acquisition function, которую алгоритм использует для определения следующей точки для оценки. Функция сбора может сбалансировать выборку в точках, которые имеют низко смоделированные целевые функции, и исследование областей, которые еще не были хорошо смоделированы. Для получения дополнительной информации см. Байесовский алгоритм оптимизации.
Байесовская оптимизация является частью Statistics and Machine Learning Toolbox™, потому что она хорошо подходит для оптимизации hyperparameters алгоритмов классификации и регрессии. Гиперпараметр является внутренним параметром классификатора или регрессионой функции, таким как прямоугольное ограничение машины опорных векторов или скорость обучения устойчивого классификационного ансамбля. Эти параметры могут сильно повлиять на эффективность классификатора или регрессора, и, тем не менее, оптимизировать их обычно трудно или длительно. См. Байесовские характеристики оптимизации.
Как правило, оптимизация гиперпараметров означает, что вы пытаетесь минимизировать потери классификатора или регрессии при перекрестной валидации.
Можно выполнить байесовскую оптимизацию несколькими способами:
fitcauto
и fitrauto
- Передайте предиктор и данные отклика в fitcauto
или fitrauto
функция для оптимизации через выбор типов модели и значений гиперзначений параметров. В отличие от других подходов, использование fitcauto
или fitrauto
не требует, чтобы вы задали одну модель до оптимизации; выбор модели является частью процесса оптимизации. Оптимизация минимизирует потери перекрестной валидации, которая моделируется с помощью мульти- TreeBagger
модель в fitcauto
и мульти- RegressionGP
модель в fitrauto
, а не одну регрессионую модель Гауссова процесса, используемую в других подходах. См. Байесову оптимизацию для fitcauto
и байесовская оптимизация для fitrauto
.
Приложения Classification Learner и Regression Learner - Выбирайте Optimizable модели в приложениях машинного обучения и автоматически настраивайте их значения гиперзначений параметров с помощью байесовской оптимизации. Оптимизация минимизирует потери модели на основе выбранных опций валидации. Этот подход имеет меньше параметров настройки, чем использование функции подгонки, но позволяет выполнить оптимизацию по Байесову непосредственно в приложениях См. Оптимизацию по гипероптимизации параметров управления в Classification Learner App и Оптимизацию по гипероптимизации параметров управления в Regression Learner App.
Функция Fit - Включите OptimizeHyperparameters
Пара "имя-значение" во многих функциях аппроксимации для автоматического применения байесовской оптимизации. Оптимизация минимизирует потери перекрестной валидации. Этот подход дает вам меньше параметров настройки, чем использование bayesopt
, но позволяет вам выполнить байесовскую оптимизацию легче. См. Байесовская оптимизация с использованием функции подгонки.
bayesopt
- Оказывайте наибольший контроль над своей оптимизацией, вызывая bayesopt
непосредственно. Этот подход требует, чтобы вы написали целевую функцию, которая не должна представлять потери перекрестной валидации. См. Байесовская оптимизация с использованием bayesopt.
Чтобы минимизировать ошибку в перекрестно проверенном ответе через байесовскую оптимизацию, выполните следующие шаги.
Выберите свой решатель классификации или регрессии среди fitcdiscr
, fitcecoc
, fitcensemble
, fitckernel
, fitcknn
, fitclinear
, fitcnb
, fitcsvm
, fitctree
, fitrensemble
, fitrgp
, fitrkernel
, fitrlinear
, fitrsvm
, или fitrtree
.
Определитесь с гиперпараметрами, чтобы оптимизировать, и передайте их в OptimizeHyperparameters
Пара "имя-значение". Для каждой функции подгонки можно выбрать из набора гиперпараметров. Смотрите Подходящие Гиперпараметры для Подгонки Функций, или используйте hyperparameters
function, или обратитесь к странице с описанием функции аппроксимации.
Можно передать массив ячеек с именами параметров. Можно также задать 'auto'
как OptimizeHyperparameters
значение, которое выбирает типовой набор гиперпараметров для оптимизации, или 'all'
оптимизировать все доступные параметры.
Для функций подгонки ансамбля fitcecoc
, fitcensemble
, и fitrensemble
, также включите параметры слабых учащихся в OptimizeHyperparameters
массив ячеек.
Вы можете создать структуру опций для HyperparameterOptimizationOptions
Пара "имя-значение". Смотрите опции оптимизации гипероптимизации параметров управления для функций подгонки.
Вызовите функцию fit с соответствующими парами "имя-значение".
Для примеров смотрите Оптимизацию классификатора SVM Подгонки Используя Байесову Оптимизацию и Оптимизацию бустерного регрессионого ансамбля. Кроме того, каждая страница с описанием функции аппроксимации содержит пример байесовской оптимизации.
bayesopt
Чтобы выполнить байесовскую оптимизацию, используя bayesopt
, следуйте этим шагам.
Подготовьте свои переменные. Смотрите Переменные для байесовской оптимизации.
Создайте свою целевую функцию. См. «Байесовские целевые функции оптимизации». При необходимости создайте ограничения тоже. См. «Ограничения в байесовской оптимизации». Чтобы включить дополнительные параметры в целевую функцию, см. «Параметризация функций».
Определитесь с опциями, означающими bayseopt
Name,Value
пар. Вы не обязаны передавать какие-либо опции в bayesopt
но обычно это так, особенно при попытке улучшить решение.
Звонить bayesopt
.
Исследуйте решение. Можно принять решение возобновить оптимизацию при помощи resume
, или перезапустите оптимизацию, обычно с измененными опциями.
Для получения примера смотрите Оптимизацию классификатора SVM с перекрестной проверкой используя bayesopt.
Байесовские алгоритмы оптимизации лучше всего подходят для этих типов задач.
Особенность | Подробнее |
---|---|
Низкая размерность | Оптимизация Байеса лучше всего работает при небольшом количестве размерностей, обычно 10 или менее. Хотя байесовская оптимизация может решить некоторые задачи с несколькими десятками переменных, она не рекомендуется для размерностей, превышающих около 50. |
Дорогая цель | Байесовская оптимизация предназначена для целевых функций, которые медленно оцениваются. Это имеет значительные накладные расходы, обычно несколько секунд для каждой итерации. |
Низкая точность | Байесовская оптимизация не обязательно дает очень точные результаты. Если у вас есть детерминированная целевая функция, можно иногда улучшить точность, запустив стандартный алгоритм оптимизации из |
Глобальное решение | Байесовская оптимизация является глобальным методом. В отличие от многих других алгоритмов, для поиска глобального решения вам не нужно запускать алгоритм из различных начальных точек. |
Гиперпараметры | Байесовская оптимизация хорошо подходит для оптимизации hyperparameters другой функции. Гиперпараметр является параметром, который управляет поведением функции. Для примера, |
Подходящие гиперпараметры для подгонки функций
При оптимизации с помощью функции fit у вас есть эти опции, доступные в HyperparameterOptimizationOptions
Пара "имя-значение". Задайте значение как структуру. Все поля в структуре являются необязательными.
Имя поля | Значения | Дефолт |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Функции сбора данных, имена которых включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество вычислений целевой функции. | 30 для 'bayesopt' или 'randomsearch' , и вся сетка для 'gridsearch' |
MaxTime | Временной предел, заданный как положительный действительный. Предел времени в секундах, что измеряется | Inf |
NumGridDivisions | Для 'gridsearch' , количество значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности, или скаляром, который применяется ко всем размерностям. Это поле игнорируется для категориальных переменных. | 10 |
ShowPlots | Логическое значение, указывающее, показывать ли графики. Если true , это поле строит график наилучшего значения целевой функции относительно числа итерации. Если существует один или два параметра оптимизации и если Optimizer является 'bayesopt' , затем ShowPlots также строит график модели целевой функции относительно параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранять ли результаты при Optimizer является 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области с именем 'BayesoptResults' при каждой итерации. Переменная является BayesianOptimization объект. | false |
Verbose | Отображение в командной строке.
Для получения дополнительной информации смотрите | 1 |
UseParallel | Логическое значение, указывающее, запускать ли байесовскую оптимизацию параллельно, что требует Parallel Computing Toolbox™. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно приводит к воспроизводимым результатам. Для получения дополнительной информации см. «Параллельная байесовская оптимизация». | false |
Repartition | Логическое значение, указывающее, следует ли повторять перекрестную валидацию при каждой итерации. Если
| false |
Используйте не более одного из следующих трех имен полей. | ||
CVPartition | A cvpartition объект, созданный cvpartition . | 'Kfold',5 если вы не задаете какое-либо поле перекрестной проверки |
Holdout | Скаляр в области значений (0,1) представляющий фракцию удержания. | |
Kfold | Целое число, больше 1. |
BayesianOptimization
| bayesopt