¿Existe algún paquete de software para resolver la regresión lineal con el objetivo de minimizar la norma L-infinito?
regression
Fan Zhang
fuente
fuente
Respuestas:
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 cony=(yi)∈Rn X∈Rn×p i xi β∈Rp f(β)=∥y−Xβ∥∞ β
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,
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
Relación con la (variación total) de regresión linealℓ1
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ℓ1 g(β)=∥y−Xβ∥1
Observe aquí que ahora es un vector de longitud lugar de un escalar, como lo fue en el caso .t n ℓ∞
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í.
fuente
Malab puede hacerlo, usando cvx. para obtener cvx (gratis):
http://cvxr.com/cvx/download/
En cvx, lo escribirías de esta manera:
(ver ejemplo página 12 del manual )
Hay una implementación Python de CVX ( aquí ) pero los comandos son ligeramente diferentes ...
fuente
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, .Lp p>=1
Tenga en cuenta que estas son bibliotecas comerciales, pero las versiones de Python son gratuitas (como en cerveza) para uso no comercial.
fuente