Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Flujo de trabajo de optimización bayesiana

¿Qué es la optimización bayesiana?

La optimización, en su forma más general, es el proceso de localizar un punto que minimiza una función de valor real llamada el.función objetiva La optimización bayesiana es el nombre de un proceso de este tipo. La optimización bayesiana mantiene internamente un modelo de proceso Gaussiano de la función objetiva y utiliza evaluaciones de funciones objetivas para entrenar el modelo. Una innovación en la optimización bayesiana es el uso de un, que el algoritmo utiliza para determinar el siguiente punto a evaluar.función de adquisición La función de adquisición puede equilibrar el muestreo en puntos que tienen funciones objetivas de bajo modelado y explorar áreas que aún no se han modelado bien. Para obtener más información, consulte.Algoritmo de optimización bayesiana

La optimización bayesiana es parte de porque se adapta bien a la optimización de los algoritmos de clasificación y regresión.Statistics and Machine Learning Toolbox™hiperparámetros Un hiperparámetro es un parámetro interno de una función de clasificador o regresión, como la restricción de caja de una máquina de vectores de soporte o la velocidad de aprendizaje de un conjunto de clasificación robusto. Estos parámetros pueden afectar fuertemente al rendimiento de un clasificador o regresor y, sin embargo, suele ser difícil o requiere mucho tiempo optimizarlos. Ver.Características de optimización bayesiana

Normalmente, la optimización de los hiperparámetros significa que se intenta minimizar la pérdida de validación cruzada de un clasificador o una regresión.

Dos formas de realizar la optimización bayesiana

Puede realizar una optimización bayesiana de dos maneras distintas:

  • Función de ajuste: incluya el par nombre-valor en muchas funciones de ajuste para que la optimización bayesiana se aplique automáticamente.OptimizeHyperparameters La optimización minimiza la pérdida de validación cruzada. De esta forma, se proporcionan menos opciones de ajuste, pero le permite realizar la optimización Bayesiana con mayor facilidad. Ver.Optimización bayesiana mediante una función de ajuste

  • : Ejerza el mayor control sobre su optimización llamando directamente.bayesoptbayesopt De este modo, es necesario escribir una función objetiva, que no tiene que representar la pérdida de validación cruzada. Ver.Optimización bayesiana mediantebayesopt

Optimización bayesiana mediante una función de ajuste

Para minimizar el error en una respuesta con validación cruzada mediante la optimización Bayesiana, siga estos pasos.

  1. Elija la clasificación o el solucionador de regresión entre,,,,,,,,,,,,, o.fitcdiscrfitcecocfitcensemblefitckernelfitcknnfitclinearfitcnbfitcsvmfitctreefitrensemblefitrgpfitrkernelfitrlinearfitrsvmfitrtree

  2. Decida los hiperparámetros que desea optimizar y párelos en el par nombre-valor.OptimizeHyperparameters Para cada función de ajuste, puede elegir entre un conjunto de hiperparámetros. Consulte o utilice la función o consulte la página de referencia de la función de ajuste.Los hiperparámetros elegibles para funciones de ajustehiperparámetros

    Puede pasar una matriz de celdas de nombres de parámetro. También puede establecer como el valor, que elige un conjunto típico de hiperparámetros para optimizar, o para optimizar todos los parámetros disponibles.'auto'OptimizeHyperparameters'all'

  3. Para las funciones de ajuste de conjunto, y, también incluyen los parámetros de los alumnos débiles en la matriz de celdas.fitcecocfitcensemblefitrensembleOptimizeHyperparameters

  4. Opcionalmente, cree una estructura de opciones para el par nombre-valor.HyperparameterOptimizationOptions Ver.Opciones de optimización de hiperparámetros para funciones de ajuste

  5. Llame a la función Fit con los pares de nombre-valor apropiados.

Para ver ejemplos, vea y.Optimice un ajuste del clasificador SVM usando la optimización bayesianaOptimice un conjunto de regresión potenciado Además, cada página de referencia de función de Ajuste contiene un ejemplo de optimización bayesiana.

Optimización bayesiana mediantebayesopt

Para realizar una optimización bayesiana utilizando, siga estos pasos.bayesopt

  1. Prepare sus variables. Ver.Las variables para una optimización bayesiana

  2. Crea tu función objetiva. Ver.Funciones objetivo de optimización bayesiana Si es necesario, cree restricciones también. Ver.Las restricciones en la optimización bayesiana

  3. Decida las opciones, es decir, elbayseopt Name,Value Pares. No es necesario pasar ninguna opción, pero normalmente lo hace, especialmente cuando se intenta mejorar una solución.bayesopt

  4. Llamar.bayesopt

  5. Examine la solución. Puede decidir reanudar la optimización utilizando, o reiniciar la optimización, normalmente con opciones modificadas.resume

Para ver un ejemplo, vea.Optimice un clasificador SVM con validación cruzada mediantebayesopt

Características de optimización bayesiana

Los algoritmos de optimización bayesiana se adaptan mejor a estos tipos de problemas.

CaracterísticaDetalles
Baja dimensión

La optimización bayesiana funciona mejor en un número bajo de dimensiones, normalmente 10 o menos. Mientras que la optimización bayesiana puede resolver algunos problemas con unas cuantas docenas de variables, no se recomienda para dimensiones superiores a 50.

Objetivo costoso

La optimización bayesiana está diseñada para funciones objetivas que son lentas de evaluar. Tiene una sobrecarga considerable, normalmente varios segundos para cada iteración.

Baja precisión

La optimización bayesiana no da necesariamente resultados muy precisos. Si tiene una función objetiva determinista, a veces puede mejorar la precisión iniciando un algoritmo de optimización estándar de la solución.bayesopt

Solución global

La optimización bayesiana es una técnica global. A diferencia de muchos otros algoritmos, para buscar una solución global no tiene que iniciar el algoritmo desde varios puntos iniciales.

Hiperparámetros

La optimización bayesiana se adapta bien a la optimización de otra función.hiperparámetros Un hiperparámetro es un parámetro que controla el comportamiento de una función. Por ejemplo, la función se ajusta a un modelo SVM a los datos.fitcsvm Tiene hiperparámetros y para su.BoxConstraintKernelScale'rbf'KernelFunction Para obtener un ejemplo de optimización Bayesiana aplicada a los hiperparámetros, consulte.Optimice un clasificador SVM con validación cruzada mediantebayesopt

Parámetros disponibles para funciones de ajuste

Los hiperparámetros elegibles para funciones de ajuste

Nombre de la funciónParámetros elegibles
fitcdiscrDelta
Gamma
DiscrimType
fitcecocparámetros elegibles para los parámetros elegibles para los parámetros elegibles para los parámetros elegibles para los parámetros elegibles para los parámetros elegibles paraCoding
fitcdiscr'Learners','discriminant'
fitckernel'Learners','kernel'
fitcknn'Learners','knn'
fitclinear'Learners','linear'
fitcsvm'Learners','svm'
fitctree'Learners','tree'
fitcensembleparámetros elegibles para los parámetros elegibles para los parámetros elegibles paraMethod
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
Núcleo
fitcsvmBoxConstraint
KernelScale
KernelFunction
PolynomialOrder
Standardize
fitctreeMinLeafSize
MaxNumSplits
SplitCriterion
NumVariablesToSample
fitrensembleparámetros elegibles para:Method
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

Opciones de optimización de hiperparámetros para funciones de ajuste

Al optimizar el uso de una función de ajuste, tiene estas opciones disponibles en el par nombre-valor.HyperparameterOptimizationOptions Dar el valor como una estructura. Todos los campos de la estructura son opcionales.

Nombre de campoValoresPredeterminado
Optimizer
  • — Utilice la optimización bayesiana.'bayesopt' Internamente, esta configuración llama.bayesopt

  • : Utilice la búsqueda de cuadrícula con valores por dimensión.'gridsearch'NumGridDivisions

  • — Búsqueda aleatoria entre puntos.'randomsearch'MaxObjectiveEvaluations

búsquedas en orden aleatorio, utilizando muestreo uniforme sin sustitución de la rejilla.'gridsearch' Después de la optimización, puede obtener una tabla en orden de cuadrícula mediante el comando.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'

Las funciones de adquisición cuyos nombres incluyen no producen resultados reproducibles porque la optimización depende del tiempo de ejecución de la función objetiva.per-second Las funciones de adquisición cuyos nombres incluyen modificar su comportamiento cuando están sobreexplotando un área.plus Para obtener más información, consulte.Tipos de función de adquisición

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsNúmero máximo de evaluaciones de funciones objetivas.para o, y toda la rejilla para30'bayesopt''randomsearch''gridsearch'
MaxTime

Límite de tiempo, especificado como real positivo. El límite de tiempo es en segundos, medido por y.tictoc El tiempo de ejecución puede exceder porque no interrumpe las evaluaciones de funciones.MaxTimeMaxTime

Inf
NumGridDivisionsPara el número de valores de cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que da el número de valores para cada dimensión, o un escalar que se aplica a todas las dimensiones. Este campo se omite para las variables categóricas.10
ShowPlotsValor lógico que indica si se mostrarán los trazados. Si, este campo traza el mejor valor de la función objetiva con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es así, también traza un modelo de la función objetiva contra los parámetros.Optimizer'bayesopt'ShowPlotstrue
SaveIntermediateResultsValor lógico que indica si se guardan los resultados cuando es.Optimizer'bayesopt' Si, este campo sobrescribe una variable de espacio de trabajo denominada en cada iteración.true'BayesoptResults' La variable es un objeto.BayesianOptimizationfalse
Verbose

Mostrar en la línea de comandos.

  • — Sin visualización iterativa0

  • — Visualización iterativa1

  • — Visualización iterativa con información adicional2

Para obtener información detallada, vea el argumento de par nombre-valor.bayesoptVerbose

1
UseParallelValor lógico que indica si se debe ejecutar la optimización bayesiana en paralelo, lo que requiere.Parallel Computing Toolbox™ Para obtener más información, consulte.Optimización bayesiana paralelafalse
Repartition

Valor lógico que indica si se vuelve a particionar la validación cruzada en cada iteración. Si, el optimizador utiliza una sola partición para la optimización.false

normalmente proporciona los resultados más sólidos, ya que esta configuración tiene en cuenta el ruido de partición.true Sin embargo, para obtener buenos resultados, requiere al menos el doble de evaluaciones de función.true

false
No utilice más de uno de los tres nombres de campo siguientes.
CVPartitionUn objeto, creado por.cvpartitioncvpartitionSi no especifica ningún campo de validación cruzada'Kfold',5
HoldoutUn escalar en el rango que representa la fracción de exclusión.(0,1)
KfoldUn entero mayor que 1.