Paquete de software para resolver la regresión lineal de la norma L-infinito

10

¿Existe algún paquete de software para resolver la regresión lineal con el objetivo de minimizar la norma L-infinito?

Fan Zhang
fuente
Bueno, cualquier paquete de programación lineal funcionaría. Eso te deja con muchas opciones. :)
cardenal
1
@Cardinal ¿Cómo relanzaría esto como un programa lineal? No es evidente cómo hacerlo incluso en casos triviales (como dos puntos de datos y un parámetro): no hay restricciones y la función objetivo no es lineal.
whuber
Frase clave : aproximación de Chebyshev. (Más para seguir. La idea es introducir una variable adicional y luego convertir el objetivo en las restricciones.)
cardenal
@cardinal Te refieres a este: mathworld.wolfram.com/ChebyshevApproximationFormula.html Parece bastante complicado.
Fan Zhang
Bueno, está un poco relacionado, pero no relacionado con este problema. Su problema puede resolverse con un simple LP. Tan pronto como pueda llegar a una computadora, publicaré una respuesta.
cardenal

Respuestas:

17

Respuesta corta : su problema puede formularse como un programa lineal (LP), lo que le permite elegir su solucionador de LP favorito para la tarea. Para ver cómo escribir el problema como un LP, sigue leyendo.

Este problema de minimización a menudo se denomina aproximación de Chebyshev .

Deje , con la fila denotada por y . Luego buscamos minimizar la función con respecto a . Denote el valor óptimo con y=(yi)RnXRn×pixiβRpf(β)=yXββ

f=f(β)=inf{f(β):βRp}.

La clave para refundir esto como un LP es reescribir el problema en forma de epígrafe . No es difícil convencerse de que, de hecho,

f=inf{t:f(β)t,tR,βRp}.

Ahora, usando la definición de la función , podemos reescribir el lado derecho de arriba como y así vemos que minimizar la en una configuración de regresión es equivalente a LP donde se realiza la optimización over y denota un vector de unos de longitud . Lo dejo como un ejercicio (fácil) para que el lector reformule el LP anterior en forma estándar.f

f=inf{t:tyixiβt,tR,βRp,1in},
minimizetsubject toyXβt1nyXβt1n,
(β,t)1nn

Relación con la (variación total) de regresión lineal1

Es interesante observar que se puede hacer algo muy similar con la norma . Deje . Luego, argumentos similares conducen a la conclusión de que modo que el LP correspondiente sea 1g(β)=yXβ1

g=inf{tT1n:tiyixiβti,t=(ti)Rn,βRp,1in},
minimizetT1nsubject toyXβtyXβt.

Observe aquí que ahora es un vector de longitud lugar de un escalar, como lo fue en el caso .tn

La similitud en estos dos problemas y el hecho de que ambos pueden ser lanzados como LP no es, por supuesto, un accidente. Las dos normas están relacionadas en el sentido de que son las normas duales entre sí.

cardenal
fuente
¿Cómo encontrarías alguna medida de precisión para los parámetros y / o predicciones? Pregunto por la siguiente pregunta reciente: Mathica.stackexchange.com/questions/214226/… .
JimB
3

Malab puede hacerlo, usando cvx. para obtener cvx (gratis):

http://cvxr.com/cvx/download/

En cvx, lo escribirías de esta manera:

cvx_begin
   variable x(n);
   minimize( norm(A*x-b,Inf) );
cvx_end

(ver ejemplo página 12 del manual )

Hay una implementación Python de CVX ( aquí ) pero los comandos son ligeramente diferentes ...

usuario603
fuente
1

La respuesta de @ cardinal está bien establecida y ha sido aceptada, pero, en aras de cerrar este hilo completamente, ofreceré lo siguiente: Las bibliotecas numéricas de IMSL contienen una rutina para realizar la regresión de la norma L-infinito. La rutina está disponible en Fortran, C, Java, C # y Python. He usado las versiones C y Python para las cuales el método se llama lnorm_regression, que también admite la regresión general -norm, .Lpp>=1

Tenga en cuenta que estas son bibliotecas comerciales, pero las versiones de Python son gratuitas (como en cerveza) para uso no comercial.

Josh Hemann
fuente
Desafortunadamente, el enlace ya no funciona. ¿Podrías actualizarlo?
COOLSerdash