Una introducción a la optimización robusta [... y una pequeña lista de compras que olvidé ...]

¿Cómo determinar cuántas personas necesitan ser contratadas para un nuevo cumplimiento, cómo exactamente completarlo y dónde colocar un producto en particular? Cuanto mayor es el negocio, mayor es la incertidumbre y más caro es el error. Vencer al caos y elegir la mejor solución es una de las tareas del equipo de ciencia de datos. Y dado que las matemáticas son la base del análisis de datos, comenzaremos con él.

En este post consideraremos problemas de optimización con incertidumbre en los datos y su aproximación por problemas convexos deterministas. Este es uno de los principales trucos en la optimización robusta: una técnica que le permite hacer frente a problemas de optimización que son demasiado sensibles para los cambios en los datos de entrada.

El tema de la sensibilidad es muy importante. Para las tareas, cuya calidad de la solución depende débilmente de los cambios en los datos, es más fácil usar la optimización estocástica habitual. Sin embargo, en tareas con alta sensibilidad, este enfoque dará un mal resultado. Hay muchas tareas de este tipo en finanzas, gestión de la cadena de suministro, diseño y muchas otras áreas.

Y sí, este es un ejemplo de una publicación donde la complejidad crece exponencialmente (basura ya) ...

¿Qué significa "resolver" el problema de optimización?


Comencemos con un breve recordatorio.

La tarea de optimización en general se ve así:

 m i n x e n R n  f ( x )s . t .x e n X 



Aqui f ( x ) llamada la función objetivo, y X - Un conjunto válido.

Al resolver el problema de optimización nos referimos a tal punto x e n X  para lo cual se ejecuta:

f ( x ) - f ( x ) g e q 0 , q u a d f o r a l l x e n X    


Este es el concepto estándar para resolver el problema de optimización sin incertidumbre.

¿Qué es un problema de optimización con incertidumbre?


Es hora de preguntarse sobre el origen de la función. f ( x ) y limitaciones X .

Muy útil para compartir.

  • lógica estructural del problema (en otras palabras, qué funciones se utilizan),
  • limitaciones técnicas (independientes de la lógica o los datos humanos),
  • parámetros que se evalúan a partir de los datos.

Por ejemplo, una persona de negocios vino a nosotros y nos mostró el problema de programación lineal:

 minx enR22.16x1+3.7x2s.t.0.973x1+2.619x2 leq3.32x1 geq0,x2 geq0



Ves esta tarea por primera vez. Un hombre también (tal vez no, ¡pero con chaquetas azules todo es tan abstracto!). No sabes el significado de las variables. Pero incluso ahora, con mucha confianza, podemos decir que:

  1. Lo más probable es que la tarea sea lineal, porque alguien lo ha decidido. La linealidad es la estructura que una persona ha elegido.
  2. Limitaciones x1 geq0,x2 geq0 Son técnicos. Es decir, provenían de la "física" y no de los datos (por ejemplo, las ventas no pueden ser negativas).
  3. Coeficientes específicos \ {0.973, 2.619, 3.32 \} en limitar 0.973x1+2.619x2 leq3.32 en nuestro ejemplo fueron evaluados a partir de los datos. Es decir, al principio alguien dijo que la variable x1 asociado con variable x2 , luego se dijo que la relación es lineal, y finalmente, los coeficientes en la ecuación de acoplamiento se estimaron a partir de los datos. Lo mismo es cierto para las probabilidades. \ {2.16, 3.7 \} en la función objetivo.

Cuando hablamos de tareas con incertidumbre, apuntamos precisamente a la incertidumbre en los parámetros estimados a partir de los datos. No tocamos las limitaciones técnicas ni la elección inicial de la estructura del problema.

De vuelta a nuestra historia. Tenemos un problema lineal, alguien calculó los coeficientes de alguna manera. Si teníamos razón sobre la naturaleza de los coeficientes en la función, de hecho, se nos pidió que resolviéramos el problema para un escenario del desarrollo de eventos (una instancia específica del problema).

A veces esto es suficiente para nosotros, y simplemente lo resolvemos.

Sin embargo, a veces resolver un problema para un escenario es una idea estúpida (por ejemplo, si la solución es muy sensible a la variación de datos).

¿Qué hacer en este caso y cómo modelar la incertidumbre en los datos?

Primero, tenga en cuenta que la incertidumbre de los datos siempre se puede transferir de la función objetivo a restricciones o viceversa. Cómo hacer esto, mira debajo del corte.

Transferencia de incertidumbre de la función objetivo a restricciones o viceversa.
A menudo es más conveniente transferir toda la incertidumbre a una parte de la tarea: la función objetivo o las restricciones.

Transferencia de incertidumbre de la funcionalidad objetivo a restricciones

Para cualquier tarea de optimización

 m i n x e n R n  f 0 ( x , w )s tfi(x, thetai) leq0, quad1 leqi leqkhi(x, betai)=0, quad1 leqi leqmx enX



Es posible construir un equivalente sin incertidumbre en el objetivo funcional:

 minx enRn,t enRtstf0(x,w) leqtfi(x, thetai) leq0, quad1 leqi leqkhi(x, betai)=0, quad1 leqi leqmx inX



Solución (x,t) tarea equivalente contiene una solución al original x .

Transferencia de incertidumbre de las restricciones al objetivo funcional

Formalmente para cualquier tarea de optimización con restricciones.

 minx enRnf(x)s.t.x enX



uno puede construir un problema equivalente sin restricciones

 minx enRnf(x)+IX(x)



utilizando la función del indicador

IX(x)= begincases0, quadx inX+ infty, quadx notinX endcases



Está claro que ni un solo algoritmo puede digerir dicha función, pero esto no es necesario. El siguiente paso lógico es aproximar la función del indicador con algo digerible. Qué exactamente - depende de la situación (más sobre eso más adelante). Así, por ejemplo, se construyen los métodos del punto interno (un caso especial de los métodos de las funciones de penalización ) y muchos otros.


Optimización estocástica, en línea, robusta y lista de productos


Podemos tener muchos escenarios de incertidumbre, así como opciones sobre qué hacer con él. Ilustramos varios enfoques estándar con un ejemplo simple.

No sé cómo es la situación con un lector respetado, pero aquí estoy casado (con éxito) y periódicamente voy al supermercado. Con una hoja, por supuesto (da invulnerabilidad de compras impulsivas). A veces no solo a la tienda, sino al Auchan condicional, donde es más barato, pero a dónde ir lejos.

Modelaremos esta situación: vinimos a Auchan con una hoja en nuestras manos para comprar.

Atención, la primera pregunta: ¿cómo modelar?

Entrada: información sobre los productos a comprar y la cantidad requerida.

Por conveniencia, podemos pensar en el folleto como un vector entero no negativo y enZn+ .

Como variables, tomamos, respectivamente, un vector entero no negativo x enZn+ - cuántos y qué productos compraremos en última instancia (nuestra solución).

El punto es pequeño: tome algún tipo de función objetivo f(x,y) , que dice cuánto cometimos un error con la elección de los productos.

Dependiendo del contexto, el tipo de función puede cambiar, pero hay algunos requisitos básicos para ello:

  • Función f(x,y) debe tener un mínimo x= arg minx enRnf(x,y)=y (es decir, en óptimo compraremos exactamente lo que está escrito en el folleto)
  • Función f(x,y) debe ser convexo en x (y preferiblemente suave) - para poder calcular efectivamente min .

Así, obtenemos el problema:

minx enRnf(x,y)



Ahora imagine que la hoja se quedó en casa ...

Entonces, con un comentario, entramos en el mundo de las tareas con incertidumbre.

Entonces, ¿qué hacer si en la tarea minx enRnf(x,y) desconocido para nosotros y ?

La respuesta, nuevamente, depende del contexto.

Optimización estocástica

La optimización estocástica (generalmente) implica

  • La incertidumbre en los datos es de naturaleza estocástica. Conocimiento completo de la distribución probabilística de valores de parámetros no deterministas.
  • Las limitaciones, incluida la incertidumbre, son suaves

En nuestro ejemplo, si lo modelamos utilizando la optimización estocástica, diríamos

  • De acuerdo, no sé qué estaba escrito en el folleto, pero he estado caminando con folletos durante 8 años y tengo bastante conocimiento sobre la distribución del vector. y
  • Incluso si me equivoco con la elección (es decir, con x ), volviendo a casa, descubro lo real y y, si estoy completamente seguro, iré a Pyaterochka y compraré allí, aunque sea más caro.
  • Ahora elegiré uno x , que minimizará algún tipo de agregado de la función objetivo original y posibles "multas" por el error.

Esto nos llevará a esta tarea:

 minx enRnEy[f(x,y)+ psi(y,z)]s.t.x+z geqy



Tenga en cuenta que en esta tarea, de facto tomamos decisiones dos veces: primero, la decisión principal de comprar en Auchan, de la cual somos responsables x , luego "corrección de errores" con z .

Los principales problemas con este enfoque son:

  • A menudo no hay información sobre la distribución de parámetros.
  • Las limitaciones pueden ser severas (para tareas con alto riesgo: muerte, ruina, apocalipsis nuclear o zombie, etc.)
  • No siempre es posible "corregir errores" (una decisión se toma una vez) o viceversa, a menudo se toman decisiones (en este caso, aparecerán muchas integrales anidadas, y será muy difícil contarlas).

Optimización en línea

La optimización en línea es un marco que explora la toma de decisiones consistentes. Uno de los enfoques estándar para el modelado en este marco son los bandidos multi-armados, que ya se han escrito sobre Habré muchas veces.

En el contexto de nuestro ejemplo de juguete, haríamos lo siguiente:

  • no tenía ningún folleto (y nunca lo usó antes)
  • y en casa seríamos elogiados / regañados por los productos que compramos (al mismo tiempo, solo podíamos adivinar sobre el conjunto deseado)
  • la tarea sería aprender lo más rápido posible a comprar comida, así como a su antiguo príncipe imaginario, bueno, o al mejor amigo de los hijos de su madre.

Optimización robusta

La optimización robusta es una extensión lógica de la idea de una solución minimax.

Idealmente, ahora deberíamos tomar una decisión que siempre será aceptable, independientemente de las circunstancias. Las personas que diseñaron ollas, planchas y refrigeradores en la URSS hicieron esto en el contexto de una optimización robusta: el producto debería funcionar incluso si se ha utilizado durante 20 años como la herramienta principal para el exterminio de mutantes que surgieron después de la guerra nuclear (también debe sobrevivir).

Además, quiero que el rompecabezas sea llevado a un solucionador regular, y no entienden las restricciones "para cualquier implementación de una variable aleatoria" (si no hay un número finito de estas implementaciones).

En el problema con un folleto, la decisión debe tomarse aquí y ahora y seguir siendo válida bajo cualquier circunstancia:

 minx enRn,t enRts.t.f(x,y) leqt quad forallyx geqy quad forally



Está claro que incluso en este ejemplo de juguete, si no necesita nada de y , entonces ninguna solución significativa funcionará.

Entonces, ¿cómo manejas esas tareas?

Creación de una versión robusta de una tarea utilizando el ejemplo de tarea LP


Considere un problema de optimización lineal con incertidumbre:

 minx enRncTx+ds.t.Ax leqb



Parámetros  beginpmatrixcT,dA,b endpmatrix se derivaron de los datos e incluyen incertidumbre.

Supuesto 1: muchos valores (implementaciones)  beginpmatrixcT,dA,b endpmatrix se puede parametrizar, es decir hay tal  beginpmatrixcT0,d0A0,b0 endpmatrix, beginpmatrixcT1,d1A1,b1 endpmatrix, dots, beginpmatrixcTk,dkAk,bk endpmatrix que cualquier implementación de datos  beginpmatrixcT,dA,b endpmatrix se encuentra en el conjunto:

\ begin {pmatrix} c ^ T, d \\ A, b \ end {pmatrix} \ in U = \ left \ {\ begin {pmatrix} c_0 ^ T, d_0 \\ A_0, b_0 \ end {pmatrix} + \ sum_ {i = 1} ^ k \ zeta_i \ begin {pmatrix} c_i ^ T, d_i \\ A_i, b_i \ end {pmatrix} | \ quad \ zeta \ en Q \ subconjunto R ^ k \ right \}



Aqui  beginpmatrixcT0,d0A0,b0 endpmatrix se denominan datos "nominales" y  beginpmatrixcTi,diAi,bi endpmatrix quad(1 leqi leqk) - "turnos".

Mini ejemplo
Quiero aclarar un poco su significado en un ejemplo modelo de finanzas: el problema de elegir la cartera óptima de valores. Digamos que quieres invertir. Ahora aparece en un intercambio disponible n acciones, y debe comprender cómo distribuir su capital (invertir) en estos valores para maximizar sus ingresos y limitar el riesgo. Uno de los primeros modelos para resolver este problema (modelo de Markowitz) sugirió hacer lo siguiente:

  1. Recopile datos históricos sobre el rendimiento de una seguridad: rti= fracStiSt1iSt1i donde Sti Es el precio de un activo i a tiempo t .
  2. Encuentre rendimientos promedio empíricos en valores  hatri= frac1T sumTt=1rti y matriz empírica de covarianza de rendimiento  Sigma= |cov(ri,rj) |i,j
  3. Resolver el problema de optimización

     maxx enRn+xT hatrst frac12xT Sigmax leq sigma sumni=1xi leq1


La solución al problema es la distribución óptima (participación) del capital en valores.

De hecho, maximizamos el rendimiento esperado o estamos buscando la cartera óptima para un escenario , el caso cuando la realización de rendimientos aleatorios (!) Coincide con el promedio empírico.

En el contexto de la parametrización. r exactamente  hatr sirve como datos "nominales".


Ya sabemos que toda la incertidumbre en el problema puede eliminarse en las limitaciones. Hagámoslo

Tenemos el problema

 minx enRn,t enRtstcTx+d leqt, quad forall beginpmatrixcT,d endpmatrix enUAx leqb, quad forall beginpmatrixA,b endpmatrix enU



Versión robusta de la tarea.


Ahora es el momento de uno de los mejores trucos en la optimización robusta: cómo pasar de un número infinito de restricciones a un conjunto finito de buenas restricciones.

Para comenzar, considere un ejemplo simple cuando

Q = \ {\ zeta \ en R ^ k | \ | \ zeta \ | _2 \ leq 1 \}



Todas las restricciones en el sistema.

cTx+d leqt, quad forall beginpmatrixcT,d endpmatrix enUAx leqb, quad forall beginpmatrixA,b endpmatrix enU


del mismo tipo: son solo desigualdades lineales. Aprenda a trabajar con uno: aprenda a trabajar con todos.

Por lo tanto, consideramos una restricción del tipo de desigualdad:

a ^ Tx \ leq b \ quad \ forall (a, b) \ in U = \ {(a_0, b_0) + \ sum_ {i = 1} ^ k \ zeta_i \ cdot (a_i, b_i) | \ quad \ zeta \ en Q \} \\ (a_0 + \ sum_ {i = 1} ^ k \ zeta_i a_i) ^ Tx \ leq b_0 + \ sum_ {i = 1} ^ k \ zeta_i b_i \ quad \ forall \ zeta \ in Q \\ \ sum_ {i = 1} ^ k \ zeta_i \ cdot (a_i ^ T x - b_i) \ leq b_0 - a_0 ^ Tx \ quad \ forall \ zeta \ in Q \\ \ max _ {\ zeta \ en Q} \ sum_ {i = 1} ^ k \ zeta_i \ cdot (a_i ^ T x - b_i) \ leq b_0 - a_0 ^ Tx



Déjame explicarte lo que pasó.

Primero, transferimos todas las partes con incertidumbre al lado izquierdo de la desigualdad;  zeta .
Después de eso, vimos el peor de los casos (para cada x Él es suyo).
Como resultado, obtuvimos el siguiente registro:

g(x)=max zeta inQf(x, zeta) leqb0aT0x

.

El siguiente paso es escribir una función explícita g(x) . Para hacer esto, es suficiente resolver el problema de optimización  zeta y sustituir el óptimo  zeta :

 max | zeta |2 leq1 sumki=1 zetai(aTixbi)= sqrt sumki=1(aTixbi)2


lo que lleva a la desigualdad:

 sqrt sumki=1(aTixbi)2+aT0x leqb0



Tenga en cuenta que la desigualdad resultante es convexa y cualquier x satisfacerlo satisface el original aTx leqb para cualquier implementación (a,b) enU ...

Limitación  sqrt sumki=1(aTixbi)2+aT0x leqb0 llamada la versión robusta de la restricción aTx leqb quad forall(a,b) enU .

Este es uno de los principales caballos de batalla en la optimización robusta: la aproximación de las restricciones de probabilidad por un conjunto finito de restricciones convexas.

¿Qué hacer con restricciones más complejas (no lineales)?

Construyendo versiones robustas de restricciones usando dualidad cónica


Se pueden representar muchas restricciones no lineales estándar en forma cónica (es decir, en la forma Ax+b enK donde K es un cono convexo cerrado):

  • No negatividad X geq0 quad leftrightarrow quadx enRn+
  • Restricciones de norma \ | x \ | _p \ leq p \ quad \ leftrightarrow \ quad \ begin {pmatrix} x \\ p \ end {pmatrix} \ in K_p ^ n = \ left \ {(x, t) \ in R ^ n \ veces R_ + | \ quad \ | x \ | _p \ leq t \ right \}
  • Restricciones sobre la definición positiva de la matriz. x1F1+ puntosxnFn+G succeq0

Volver a las restricciones robustas.

Suponga que el problema de optimización con respecto a  zeta logró reducirse a una forma cónica

 max zeta sumki=1 zetai(aTixbi)s.tC zeta+d enK



Construimos un dual para este problema.

Hace algún tiempo publiqué una publicación sobre la dualidad cónica exactamente para dedicar un poco menos de atención a la técnica misma en esta publicación.

 min lambda lambdaTdstCT lambda+ beginpmatrixaT1xb1 dotsaTkxbk endpmatrix=0k lambda enK



Ahora depende de lo pequeño: el teorema de la dualidad débil:

\ max _ {[\ zeta: \ quad C \ zeta + d \ in K]} \ sum_ {i = 1} ^ k \ zeta_i (a_i ^ Tx-b_i) \ leq \ min _ {\ lambda \ en G} \ lambda ^ Td \\ where \\ G = \ left \ {\ lambda | \ quad C ^ T \ lambda + \ begin {pmatrix} a_1 ^ Tx - b_1 \\ \ dots \\ a_k ^ Tx - b_k \ end {pmatrix} = 0_k; \ quad \ lambda \ en K ^ * \ right \}



Por lo tanto, como una aproximación robusta de la restricción inicial aTx leqb, quad(a,b) enU restricción puede ser utilizada

\ lambda ^ Td \ leq b_0 - a_0 ^ Tx \\ G = \ left \ {\ lambda | \ quad C ^ T \ lambda + \ begin {pmatrix} a_1 ^ Tx - b_1 \\ \ dots \\ a_k ^ Tx - b_k \ end {pmatrix} = 0_k; \ quad \ lambda \ en K ^ * \ right \}


donde  lambda misma variable que x .

Entonces construimos una restricción robusta para la desigualdad original.

Conclusión


Examinamos la técnica de aproximación de restricciones malas (estocásticas) mediante un conjunto de buenas restricciones convexas. Esto puede ser útil, por ejemplo, si:

  • No desea escribir algoritmos usted mismo, pero el solucionador que está utilizando no sabe cómo trabajar con restricciones de probabilidad.
  • Hay un problema con los parámetros estocásticos, mientras que el óptimo es muy sensible a las fluctuaciones en los datos.
  • Y, por supuesto, tareas con incertidumbre, donde todas las restricciones son estrictas (el precio del error es demasiado alto)

Source: https://habr.com/ru/post/es436342/


All Articles