¿Qué algoritmo usar para encontrar una ganancia l1 óptima?

Este es un problema de desviaciones mínimas absolutas, por lo tanto, se puede convertir a programación lineal.

Sin embargo, creo que la naturaleza especial del problema significa que se puede resolver directamente, con la complejidad [matemática] O (n) [/ matemática]:

Deje [math] x = (x_1, …, x_n) [/ math] y [math] y = (y_1, …, y_n) [/ math]. Para simplificar, deje que [math] x_i \ neq 0 [/ math] para cada [math] i = 1, …, n [/ math]. Necesitamos minimizar la función [math] f: \ mathbb {R} \ to \ mathbb {R} [/ math] definida por

[math] f (\ beta) = \ sum_ {i = 1} ^ n f_i (\ beta) [/ math], donde [math] f_i (\ beta) = | \ beta x_i – y_i | [/ math] para [matemáticas] i = 1, …, n [/ matemáticas].

Cada [math] f_i [/ ​​math] es una función en forma de V lineal por partes con el mínimo en [math] y_i / x_i [/ ​​math]. Por lo tanto, [math] f [/ math] será una función convexa lineal por partes, no diferenciable en [math] y_1 / x_1, …, y_n / x_n [/ math]. Claramente, el mínimo de dicha función se alcanza en uno (o más) de los puntos de no diferenciabilidad.

En otras palabras, el mínimo se puede encontrar evaluando [math] f [/ math] en los puntos [math] \ beta_1 = y_1 / x_1 [/ math],…., [Math] \ beta_n = y_n / x_n [/ mates].

Tenga en cuenta también que si se ordenan [math] \ beta_i [/ ​​math], una vez que obtengamos [math] f (\ beta_k) \ geq f (\ beta_ {k-1}) [/ math] para algunos [math] k [/ math], podemos dejar de evaluar la función; ya debemos haber encontrado el mínimo.

¿Es posible ser un poco más específico sobre el problema que está tratando de resolver? ¿Es este un problema de control de sistemas? ¿Un problema de optimización más general con una norma L1 como / en su función objetivo? ¿Algo más completamente?

EDITAR: Gracias por los detalles adicionales, ahora tiene más sentido.

Si fuera yo quien resolviera este problema, lo convertiría en un programa lineal (LP) de la siguiente manera …

Primero, necesitamos definir un conjunto adicional de variables de decisión no negativas, [matemáticas] w_i, i = 1,2, …, n [/ matemáticas]. Al hacerlo, podemos resolver el siguiente LP con respecto al nuevo vector de variables de decisión, [math] w [/ math], y el escalar [math] \ beta [/ math]:

[matemáticas] \ min_ {w, \ beta} \; \ sum_ {i = 1} ^ {n} w_i [/ ​​matemáticas]

[matemáticas] \ text {st} \; w_i \ geq \ beta x_i – y_i, \; i = 1, 2, …, n [/ matemáticas]

[matemáticas] w_i \ geq y_i – \ beta x_i, \; i = 1, 2, …, n [/ matemáticas]

[matemáticas] w_i \ geq 0, \; i = 1, 2, …, n. [/ matemáticas]

Ahora para resolverlo: sus dos mejores opciones son (1) alguna variante del Método Simplex (SM), por ejemplo, primal / dual simplex, o (2) un algoritmo de Puntos Interiores (IP) que sigue la ruta. Teóricamente hablando, los algoritmos de IP tienen una complejidad polinómica en el peor de los casos, mientras que SM es exponencial en el peor de los casos. En términos prácticos, SM a menudo todavía funciona muy bien, e incluso supera los algoritmos de IP en muchas instancias problemáticas.

En general, es muy difícil saber de antemano qué clase de algoritmos funcionará mejor para una determinada instancia de problema. En general, para LP, si tiene acceso a un solucionador con algoritmos SM e IP, debe probar ambos. Si sabe que su modelo es altamente degenerado (es decir, su espacio de solución consiste en múltiples soluciones de puntos extremos donde una o más variables básicas equivalen a 0), puede notar un mejor rendimiento con un algoritmo IP. Pero esto está lejos de ser cierto y, en resumen, los algoritmos SM e IP son opciones altamente competitivas y viables.

Radoslav Harman Brindó una gran respuesta.
Tenga en cuenta que el problema se puede reducir al problema de la mediana ponderada (Mediana ponderada – Wikipedia) que a su vez se puede resolver en O (n).

El subdegradado [matemáticas] \ signo de suma (\ beta x_i – y_i) x_i [/ ​​matemáticas] cambia su signo cuando
[matemática] \ sum _ {\ beta x_i – y_i> 0} ~ x_i \ aproximada \ sum _ {\ beta x_i – y_i <0} ~ x_i [/ ​​matemática] con alguna manipulación obtenemos

[matemática] \ sum _ {\ beta> \ frac {y_i} {x_i}} x_i \ aprox \ sum _ {\ beta <\ frac {y_i} {x_i}} x_i, [/ math] Por lo tanto, estableciendo [math] z_i = \ frac {y_i} {x_i} [/ math], y [math] w_i = x_i [/ ​​math], obtenemos el problema de la mediana ponderada. Específicamente encontramos la [matemática] k [/ matemática] en la respuesta de Radoslav Harman.