Оптимизация, в ее самой общей форме, является процессом определения местоположения точки, которая минимизирует действительную функцию, названную objective function. Байесова оптимизация является именем одного такого процесса. Байесова оптимизация внутренне поддерживает Гауссову модель процесса целевой функции и использует оценки целевой функции, чтобы обучить модель. Инновациями в Байесовой оптимизации является использование acquisition function, который использование алгоритма определить следующий вопрос, чтобы оценить. Функция приобретения может сбалансировать выборку в точках, которые низко смоделировали целевые функции и области исследования, которые еще не были смоделированы хорошо. Для получения дополнительной информации см. Байесов Алгоритм Оптимизации.
Байесова оптимизация является частью Statistics and Machine Learning Toolbox™, потому что это является подходящим к оптимизации hyperparameters алгоритмов регрессии и классификации. Гиперпараметр является внутренним параметром классификатора или функции регрессии, такой как ограничение поля машины вектора поддержки или темп обучения устойчивого ансамбля классификации. Эти параметры могут строго влиять на производительность классификатора или регрессора, и все же это обычно трудно или длительно, чтобы оптимизировать их. Смотрите Байесовы Характеристики Оптимизации.
Как правило, оптимизация гиперпараметров означает, что вы пытаетесь минимизировать потерю перекрестной проверки классификатора или регрессии.
Можно выполнить Байесовую оптимизацию двумя отличными способами:
Подходящая функция — Включает пару "имя-значение" OptimizeHyperparameters
во многие подходящие функции, чтобы иметь Байесовую оптимизацию, применяются автоматически. Оптимизация минимизирует потерю перекрестной проверки. Этот путь дает вам меньше настраивающихся опций, но позволяет вам выполнить Байесовую оптимизацию наиболее легко. Смотрите, что Байесова Оптимизация Использует Подходящую Функцию.
bayesopt
— Осуществите большую часть контроля своей оптимизацией путем вызова bayesopt
непосредственно. Этот путь требует, чтобы вы записали целевую функцию, которая не должна представлять потерю перекрестной проверки. Смотрите, что Байесова Оптимизация Использует bayesopt.
Чтобы минимизировать ошибку в перекрестном подтвержденном ответе через Байесовую оптимизацию, выполните эти шаги.
Выберите свою классификацию или решатель регрессии среди fitcdiscr
, fitcecoc
, fitcensemble
, fitckernel
, fitcknn
, fitclinear
, fitcnb
, fitcsvm
, fitctree
, fitrensemble
, fitrgp
, fitrkernel
, fitrlinear
, fitrsvm
или fitrtree
.
Выберите гиперпараметры, чтобы оптимизировать, и передать их в паре "имя-значение" OptimizeHyperparameters
. Для каждой подходящей функции можно выбрать из набора гиперпараметров. Смотрите Имеющие право Гиперпараметры для Подходящих Функций, или используйте функцию hyperparameters
или консультируйтесь с подходящей страницей ссылки на функцию.
Можно передать массив ячеек названий параметра. Можно также установить 'auto'
как значение OptimizeHyperparameters
, которое выбирает типичный набор гиперпараметров, чтобы оптимизировать, или 'all'
, чтобы оптимизировать все доступные параметры.
Для функций подгонки ансамбля fitcecoc
fitcensemble
и fitrensemble
, также включают параметры слабых учеников в массиве ячеек OptimizeHyperparameters
.
Опционально, создайте структуру опций для пары "имя-значение" HyperparameterOptimizationOptions
. См. Опции Гипероптимизации параметров управления для Подходящих Функций.
Вызовите подходящую функцию с соответствующими парами "имя-значение".
Для примеров смотрите, Оптимизируют Подгонку Классификатора SVM Используя Байесовую Оптимизацию и Оптимизируют Повышенный Ансамбль Регрессии. Кроме того, каждая подходящая страница ссылки на функцию содержит Байесов пример оптимизации.
bayesopt
Чтобы выполнить Байесовую оптимизацию с помощью bayesopt
, выполните эти шаги.
Подготовьте свои переменные. Смотрите Переменные для Байесовой Оптимизации.
Создайте свою целевую функцию. Смотрите Байесовы Целевые функции Оптимизации. При необходимости создайте ограничения, также. Смотрите Ограничения в Байесовой Оптимизации.
Выберите опции, имея в виду пары Name,Value
bayseopt
. Вы не обязаны передавать любые опции bayesopt
, но вы обычно делаете, особенно при попытке улучшить решение.
Вызовите bayesopt
.
Исследуйте решение. Можно решить возобновить оптимизацию при помощи resume
или перезапустить оптимизацию, обычно с измененными опциями.
Для примера смотрите, Оптимизируют перекрестный Подтвержденный Классификатор SVM Используя bayesopt.
Байесовы алгоритмы оптимизации подходят лучше всего для этих проблемных типов.
Характеристика | Детали |
---|---|
Низкая размерность | Байесова оптимизация работает лучше всего в небольшом числе размерностей, обычно 10 или меньше. В то время как Байесова оптимизация может решить некоторые проблемы с несколькими дюжинами переменных, она не рекомендуется для размерностей выше, чем приблизительно 50. |
Дорогая цель | Байесова оптимизация разработана для целевых функций, которые не спешат оценивать. Это имеет значительные издержки, обычно несколько секунд для каждой итерации. |
Низкая точность | Байесова оптимизация не обязательно дает очень точные результаты. Если у вас есть детерминированная целевая функция, можно иногда улучшать точность путем запуска стандартного алгоритма оптимизации с решения |
Глобальное решение | Байесова оптимизация является глобальным методом. В отличие от многих других алгоритмов, чтобы искать глобальное решение вы не должны запускать алгоритм с различных начальных точек. |
Гиперпараметры | Байесова оптимизация является подходящей к оптимизации hyperparameters другой функции. Гиперпараметр является параметром, который управляет поведением функции. Например, функция |
Имеющие право гиперпараметры для подходящих функций
При оптимизации использования подходящей функции вы имеете эти опции в наличии в паре "имя-значение" 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 | Объект cvpartition , как создано cvpartition . | 'Kfold',5 , если вы не задаете поля перекрестной проверки |
Holdout | Скаляр в области значений (0,1) , представляющий часть затяжки. | |
Kfold | Целое число, больше, чем 1. |