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.

Funciones de salida de optimización bayesiana

¿Qué es una función de salida de optimización bayesiana?

Una función de salida es una función que se llama al final de cada iteración de.bayesopt Una función de salida puede detener iteraciones. También puede crear parcelas, guardar información en su espacio de trabajo o en un archivo, o realizar cualquier otro cálculo que le guste.

Aparte de detener las iteraciones, las funciones de salida no pueden cambiar el curso de una optimización bayesiana. Simplemente monitorean el progreso de la optimización.

Funciones de salida incorporadas

Estas funciones de salida integradas guardan los resultados de la optimización en un archivo o en el espacio de trabajo.

  • : Guarda los resultados después de cada iteración en una variable denominada en el área de trabajo.@assignInBase'BayesoptResults' Para elegir un nombre diferente, pase el par nombre-valor.SaveVariableName

  • : Guarda los resultados después de cada iteración en un archivo con el nombre de la carpeta actual.@saveToFile'BayesoptResults.mat' Para elegir un nombre o carpeta diferente, pase el par nombre-valor.SaveFileName

Por ejemplo, para guardar los resultados después de cada iteración en una variable de espacio de trabajo denominada,'BayesIterations'

results = bayesopt(fun,vars,'OutputFcn',@assignInBase, ...     'SaveVariableName','BayesIterations')

Funciones de salida personalizadas

Escriba una función de salida personalizada con la firma

stop = outputfun(results,state)

pasa las variables y a la función.bayesoptresultsEstado La función devuelve, que se establece para detener las iteraciones o para permitir que las iteraciones continúen.stoptruefalse

es un objeto de clase. contiene la información disponible sobre los cálculos hasta el momento.resultsBayesianOptimizationresults

tiene valores posibles:Estado

  • — está a punto de comenzar a iterar.'initial'bayesopt

  • — acaba de terminar una iteración.'iteration'bayesopt

  • — acaba de terminar su iteración final.'done'bayesopt

Para ver un ejemplo, vea.Función de salida de optimización bayesiana

Función de salida de optimización bayesiana

Este ejemplo muestra cómo utilizar una función de salida personalizada con optimización bayesiana. La función de salida detiene la optimización cuando la función objetiva, que es la tasa de error de validación cruzada, desciende por debajo del 13%. La función de salida también traza el tiempo para cada iteración.

 function stop = outputfun(results,state) persistent h stop = false; switch state     case 'initial'         h = figure;     case 'iteration'         if results.MinObjective < 0.13             stop = true;         end         figure(h)         tms = results.IterationTimeTrace;         plot(1:numel(tms),tms')         xlabel('Iteration Number')         ylabel('Time for Iteration')         title('Time for Each Iteration')         drawnow end  

La función objetiva es la pérdida cruzada de validación de la clasificación KNN de los datos.ionosphere Cargue los datos y, para reproducibilidad, establezca el flujo aleatorio predeterminado.

load ionosphere rng default 

Optimice el tamaño del vecindario de 1 a 30 y para las métricas de tres distancias.

num = optimizableVariable('n',[1,30],'Type','integer'); dst = optimizableVariable('dst',{'chebychev','euclidean','minkowski'},'Type','categorical'); vars = [num,dst]; 

Establezca la partición de validación cruzada y la función objetiva. Para reproducibilidad, establezca la a.AcquisitionFunctionName'expected-improvement-plus' Ejecute la optimización.

c = cvpartition(351,'Kfold',5); fun = @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,...     'Distance',char(x.dst),'NSMethod','exhaustive')); results = bayesopt(fun,vars,'OutputFcn',@outputfun,...     'AcquisitionFunctionName','expected-improvement-plus'); 
|=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |            n |          dst | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |    1 | Best   |     0.19943 |      1.1094 |     0.19943 |     0.19943 |           24 |    chebychev | |    2 | Best   |     0.16809 |     0.74747 |     0.16809 |      0.1747 |            9 |    euclidean | |    3 | Best   |     0.12536 |     0.49109 |     0.12536 |     0.12861 |            3 |    chebychev |  __________________________________________________________ Optimization completed. Total function evaluations: 3 Total elapsed time: 22.0991 seconds. Total objective function evaluation time: 2.3479  Best observed feasible point:     n       dst        _    _________      3    chebychev  Observed objective function value = 0.12536 Estimated objective function value = 0.12861 Function evaluation time = 0.49109  Best estimated feasible point (according to models):     n       dst        _    _________      3    chebychev  Estimated objective function value = 0.12861 Estimated function evaluation time = 0.73505  

Temas relacionados