exponenta event banner

Рабочий процесс байесовской оптимизации

Что такое байесовская оптимизация?

Оптимизация в наиболее общем виде - это процесс нахождения точки, которая минимизирует действительную функцию, называемую целевой функцией. Байесовская оптимизация - это название одного такого процесса. Байесовская оптимизация внутренне поддерживает гауссову модель процесса целевой функции и использует оценки целевой функции для обучения модели. Одним из нововведений байесовской оптимизации является использование функции обнаружения, которую алгоритм использует для определения следующей точки для оценки. Функция сбора может сбалансировать выборку в точках, имеющих низкие моделируемые целевые функции, и исследовать области, которые еще не были хорошо смоделированы. Дополнительные сведения см. в разделе Алгоритм байесовской оптимизации.

Байесовская оптимизация является частью Toolbox™ статистики и машинного обучения, поскольку она хорошо подходит для оптимизации гиперпараметров алгоритмов классификации и регрессии. Гиперпараметр - это внутренний параметр классификатора или регрессионной функции, такой как ограничение бокса машины опорных векторов или скорость обучения надежного классификационного ансамбля. Эти параметры могут сильно влиять на производительность классификатора или регрессера, и, тем не менее, оптимизировать их обычно трудно или требует много времени. См. раздел Байесовские характеристики оптимизации.

Как правило, оптимизация гиперпараметров означает, что вы пытаетесь минимизировать потерю перекрестной проверки классификатора или регрессии.

Способы выполнения байесовской оптимизации

Байесовскую оптимизацию можно выполнить несколькими способами:

  • fitcauto и fitrauto - Передача данных предиктора и ответа в fitcauto или fitrauto для оптимизации выбора типов моделей и значений гиперпараметров. В отличие от других подходов, использование fitcauto или fitrauto не требует указания одной модели перед оптимизацией; выбор модели является частью процесса оптимизации. Оптимизация минимизирует потери при перекрестной проверке, которые моделируются с использованием много-TreeBagger модель в fitcauto и много-RegressionGP модель в fitrauto, а не одна модель регрессии гауссова процесса, как используется в других подходах. См. байесовскую оптимизацию для fitcauto и байесовская оптимизация для fitrauto.

  • Приложения Classification Learner и Regression Learner - выбирайте оптимизируемые модели в приложениях для машинного обучения и автоматически настраивайте их значения гиперпараметров с помощью байесовской оптимизации. Оптимизация минимизирует потери модели на основе выбранных опций проверки. Этот подход имеет меньше опций настройки, чем использование функции подгонки, но позволяет выполнять байесовскую оптимизацию непосредственно в apps. См. Hyperparameter Optimization in Classification Learner App и Hyperparameter Optimization in Regression Learner App.

  • Функция посадки - Включить OptimizeHyperparameters пара имя-значение во многих функциях фитинга для автоматического применения байесовской оптимизации. Оптимизация минимизирует потери при перекрестной проверке. Этот подход дает меньше возможностей настройки, чем использование bayesopt, но позволяет выполнять байесовскую оптимизацию проще. См. раздел Байесовская оптимизация с использованием функции подгонки.

  • bayesopt - Максимально контролируйте оптимизацию, позвонив по телефону bayesopt непосредственно. Этот подход требует записи целевой функции, которая не должна представлять потери при перекрестной проверке. См. раздел Байесовская оптимизация с использованием байесопта.

Байесовская оптимизация с использованием функции подгонки

Чтобы минимизировать ошибку в перекрестно проверенном ответе с помощью байесовской оптимизации, выполните следующие действия.

  1. Выберите решатель классификации или регрессии среди fitcdiscr, fitcecoc, fitcensemble, fitckernel, fitcknn, fitclinear, fitcnb, fitcsvm, fitctree, fitrensemble, fitrgp, fitrkernel, fitrlinear, fitrsvm, или fitrtree.

  2. Определите гиперпараметры для оптимизации и передайте их в OptimizeHyperparameters пара имя-значение. Для каждой функции подгонки можно выбрать один из наборов гиперпараметров. См. раздел Подходящие гиперпараметры для функций подгонки или используйте hyperparameters или обратитесь к странице ссылки на fit function.

    Можно передать массив ячеек имен параметров. Также можно задать 'auto' в качестве OptimizeHyperparameters значение, которое выбирает типичный набор гиперпараметров для оптимизации, или 'all' для оптимизации всех доступных параметров.

  3. Для функций подбора ансамбля fitcecoc, fitcensemble, и fitrensemble, также включают параметры слабых учащихся в OptimizeHyperparameters массив ячеек.

  4. При необходимости создайте структуру опций для HyperparameterOptimizationOptions пара имя-значение. См. раздел Параметры оптимизации гиперпараметров для функций подгонки.

  5. Вызовите функцию посадки с соответствующими парами имя-значение.

Примеры см. в разделе Оптимизация вписывания классификатора SVM с использованием байесовской оптимизации и оптимизация усиленного ансамбля регрессии. Кроме того, каждая страница ссылки на функцию посадки содержит пример байесовской оптимизации.

Байесовская оптимизация с использованием bayesopt

Выполнение байесовской оптимизации с помощью bayesoptвыполните следующие действия.

  1. Подготовьте переменные. См. раздел Переменные для байесовской оптимизации.

  2. Создайте целевую функцию. См. раздел Целевые функции байесовской оптимизации. При необходимости также создайте зависимости. См. раздел Ограничения в байесовской оптимизации. Сведения о включении дополнительных параметров в целевую функцию см. в разделе Параметризация функций.

  3. Решите варианты, то есть bayseopt Name,Value пар. Вы не обязаны передавать какие-либо параметры bayesopt но вы обычно это делаете, особенно при попытке улучшить решение.

  4. Звонить bayesopt.

  5. Осмотрите решение. Можно принять решение о возобновлении оптимизации с помощью resumeили перезапустите оптимизацию, как правило, с измененными параметрами.

Пример см. в разделе Оптимизация кросс-проверенного классификатора SVM с помощью байесопта.

Байесовские характеристики оптимизации

Байесовские алгоритмы оптимизации лучше всего подходят для этих типов задач.

ОсобенностьПодробнее
Низкий размер

Байесовская оптимизация лучше всего работает в малом количестве размеров, обычно 10 или менее. Хотя байесовская оптимизация может решить некоторые задачи с несколькими десятками переменных, она не рекомендуется для размеров выше примерно 50.

Дорогостоящая цель

Байесовская оптимизация предназначена для объективных функций, которые медленно оцениваются. Он имеет значительные издержки, обычно несколько секунд для каждой итерации.

Низкая точность

Байесовская оптимизация не обязательно дает очень точные результаты. При наличии детерминированной целевой функции иногда можно повысить точность, запустив стандартный алгоритм оптимизации из bayesopt решение.

Глобальное решение

Байесовская оптимизация - это глобальная техника. В отличие от многих других алгоритмов, для поиска глобального решения не нужно запускать алгоритм с различных начальных точек.

Гиперпараметры

Байесовская оптимизация хорошо подходит для оптимизации гиперпараметров другой функции. Гиперпараметр - это параметр, управляющий поведением функции. Например, fitcsvm функция соответствует модели SVM данным. Имеет гиперпараметры BoxConstraint и KernelScale для своих 'rbf' KernelFunction. Пример байесовской оптимизации, применяемой к гиперпараметрам, см. в разделе Оптимизация перекрестно проверенного классификатора SVM с помощью байесопта.

Параметры, доступные для функций подгонки

Подходящие гиперпараметры для функций подгонки

Имя функцииПодходящие параметры
fitcdiscrDelta
Gamma
DiscrimType
fitcecocCoding
подходящие fitcdiscrпараметры для 'Learners','discriminant'
подходящие fitckernelпараметры для 'Learners','kernel'
подходящие fitcknnпараметры для 'Learners','knn'
подходящие fitclinearпараметры для 'Learners','linear'
подходящие fitcsvmпараметры для 'Learners','svm'
подходящие fitctreeпараметры для 'Learners','tree'
fitcensembleMethod
NumLearningCycles
LearnRate
подходящие fitcdiscrпараметры для 'Learners','discriminant'
подходящие fitcknnпараметры для 'Learners','knn'
подходящие fitctreeпараметры для 'Learners','tree'
fitckernel'Learner'
'KernelScale'
'Lambda'
'NumExpansionDimensions'
fitcknnNumNeighbors
Distance
DistanceWeight
Exponent
Standardize
fitclinearLambda
Learner
Regularization
fitcnbDistributionNames
Width
Kernel
fitcsvmBoxConstraint
KernelScale
KernelFunction
PolynomialOrder
Standardize
fitctreeMinLeafSize
MaxNumSplits
SplitCriterion
NumVariablesToSample
fitrensembleMethod
NumLearningCycles
LearnRate
подходящие fitrtreeпараметры для 'Learners','tree':
MinLeafSize
MaxNumSplits
NumVariablesToSample
fitrgpSigma
BasisFunction
KernelFunction
KernelScale
Standardize
fitrkernelLearner
KernelScale
Lambda
NumExpansionDimensions
Epsilon
fitrlinearLambda
Learner
Regularization
fitrsvmBoxConstraint
KernelScale
Epsilon
KernelFunction
PolynomialOrder
Standardize
fitrtreeMinLeafSize
MaxNumSplits
NumVariablesToSample

Опции оптимизации гиперпараметров для функций подгонки

При оптимизации с использованием функции посадки эти опции доступны в HyperparameterOptimizationOptions пара имя-значение. Задайте значение как структуру. Все поля в структуре являются необязательными.

Имя поляЦенностиДефолт
Optimizer
  • 'bayesopt' - использовать байесовскую оптимизацию. Внутренний вызов этого параметра bayesopt.

  • 'gridsearch' - Использовать поиск по сетке с NumGridDivisions значения для измерения.

  • 'randomsearch' - Случайный поиск среди MaxObjectiveEvaluations точки.

'gridsearch' ищет в случайном порядке, используя равномерную выборку без замены из сетки. После оптимизации можно получить таблицу в порядке сетки с помощью команды sortrows(Mdl.HyperparameterOptimizationResults).

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Функции приобретения, имена которых включают per-second не дают воспроизводимых результатов, поскольку оптимизация зависит от времени выполнения целевой функции. Функции приобретения, имена которых включают plus изменять их поведение при чрезмерной эксплуатации области. Для получения дополнительной информации см. Типы функций сбора данных.

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsМаксимальное количество оценок целевой функции.30 для 'bayesopt' или 'randomsearch'и вся сетка для 'gridsearch'
MaxTime

Ограничение по времени, указанное как положительный реал. Ограничение по времени в секундах, измеренное tic и toc. Время выполнения может превышать MaxTime потому что MaxTime не прерывает оценки функций.

Inf
NumGridDivisionsДля 'gridsearch', количество значений в каждом измерении. Значение может быть вектором положительных целых чисел, дающим количество значений для каждого измерения, или скаляром, который применяется ко всем измерениям. Это поле игнорируется для категориальных переменных.10
ShowPlotsЛогическое значение, указывающее, показывать ли графики. Если trueв этом поле отображается наилучшее значение целевой функции относительно номера итерации. Если имеется один или два параметра оптимизации, и если Optimizer является 'bayesopt', то ShowPlots также строит график модели целевой функции по параметрам.true
SaveIntermediateResultsЛогическое значение, указывающее, сохранять ли результаты при Optimizer является 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области с именем 'BayesoptResults' на каждой итерации. Переменная является BayesianOptimization объект.false
Verbose

Отображение в командной строке.

  • 0 - Нет итеративного дисплея

  • 1 - Итеративный дисплей

  • 2 - Итеративный дисплей с дополнительной информацией

Для получения более подробной информации см. bayesopt Verbose аргумент пары имя-значение.

1
UseParallelЛогическое значение, указывающее, выполнять ли байесовскую оптимизацию параллельно, что требует Toolbox™ параллельных вычислений. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно дает воспроизводимые результаты. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация.false
Repartition

Логическое значение, указывающее, следует ли перераспределять перекрестную проверку при каждой итерации. Если falseоптимизатор использует один раздел для оптимизации.

true обычно дает наиболее надежные результаты, поскольку этот параметр учитывает секционирующий шум. Однако для хороших результатов, true требуется, по крайней мере, вдвое больше оценок функций.

false
Используйте не более одного из следующих трех имен полей.
CVPartitionA cvpartition объект, созданный cvpartition.'Kfold',5 если не указано какое-либо поле перекрестной проверки
HoldoutСкаляр в диапазоне (0,1) представляет собой удерживающую фракцию.
KfoldЦелое число больше 1.

См. также

|

Связанные темы