¿Cómo resolver la menor desviación absoluta por el método simplex?

12

Este es el problema de desviación menos absoluto en cuestión:. Sé que se puede reorganizar como problema de LP de la siguiente manera:argminwL(w)=i=1n|yiwTx|

mini=1nui

uixTwyii=1,,n

ui(xTwyi)i=1,,n

Pero no tengo idea de resolverlo paso a paso, ya que soy un novato en LP. ¿Tienes alguna idea? ¡Gracias por adelantado!

EDITAR:

Aquí está la última etapa que he alcanzado en este problema. Estoy tratando de resolver el problema siguiendo esta nota :

Paso 1: formularlo en una forma estándar

minZ=i=1nui

xTwui+s1=yii=1,,n

xTw+ui+s2=yii=1,,n

sujeto a s10;s20;ui0 i=1,...,n

Paso 2: construya un cuadro inicial

           |      |    0      |    1   |  0  |   0   |   0    
 basic var | coef |  $p_0$    |  $u_i$ |  W  | $s_1$ | $s_2$ 
      $s_1$| 0    |  $y_i$    |   -1   |  x  |   1   |   0
      $s_2 | 0    |  $-y_i$   |    1   |  x  |   0   |   1
      z    |      |    0      |    -1  |  0  |   0   |   0

Paso 3: elija variables básicas

ui se elige como variable base de entrada. Aquí viene un problema. Al elegir la variable base de salida, es obvio yi/1=yi/1=yi . Según la nota, si yi0 , el problema tiene una solución ilimitada.

Estoy totalmente perdido aquí. Me pregunto si hay algo mal y cómo debo continuar con los siguientes pasos.

puerta sur
fuente
2
Pragmáticamente, utiliza un solucionador de programas lineal en lugar de escribir el suyo. Recomiendo gurobi.
Matthew Drury
1
@MatthewDrury Gracias por responder. Pero quiero saber exactamente cómo funciona LP en este problema, en lugar de simplemente tomar la respuesta.
southdoor
1
¿Conoces o conociste el 'método simplex' de Google?
2
El programa lineal es solo una formulación de su problema en términos de maximizar (o minimizar) la función de meta lineal sujeta a algunas restricciones lineales. No se "resuelve" por sí mismo. Hay un montón de algoritmos que resuelven estos programas especialmente formulados, uno de los más utilizados es Simplex
Łukasz Grad
1
@ fcop Sí, de hecho, he leído algunas notas del método simplex. Pero no tengo idea de cómo generarlo para este problema. Como los ejemplos en esas notas son muy simples y específicos. No puedo encontrar uno que comience con problemas generales. Ya he pasado dos noches en este problema, pero todavía estoy confundido. Lo siento.
southdoor

Respuestas:

5

Desea un ejemplo para resolver la menor desviación absoluta mediante programación lineal. Le mostraré una implementación simple en R. La regresión cuantil es una generalización de la desviación mínima absoluta, que es el caso del cuantil 0.5, por lo que mostraré una solución para la regresión cuantil. Luego puede verificar los resultados con el quantregpaquete R :

rq_LP  <-  function(x, Y, r=0.5, intercept=TRUE) {
    require("lpSolve")
    if (intercept) X  <-  cbind(1, x) else X <-  cbind(x)
    N   <-  length(Y)
    n  <-  nrow(X)
    stopifnot(n == N)
    p  <-  ncol(X)
    c  <-  c(rep(r, n), rep(1-r, n), rep(0, 2*p))  # cost coefficient vector
    A  <- cbind(diag(n), -diag(n), X, -X)
    res  <-  lp("min", c, A, "=", Y, compute.sens=1)
### Desempaquetar los coefs:
    sol <- res$solution
    coef1  <-  sol[(2*n+1):(2*n+2*p)]
    coef <- numeric(length=p)
    for (i in seq(along=coef)) {
         coef[i] <- (if(coef1[i]<=0)-1 else +1) *  max(coef1[i], coef1[i+p])
    }
    return(coef)
    }

Luego lo usamos en un ejemplo simple:

library(robustbase)
data(starsCYG)
Y  <- starsCYG[, 2]
x  <- starsCYG[, 1]
rq_LP(x, Y)
[1]  8.1492045 -0.6931818

entonces usted mismo puede hacer la verificación quantreg.

kjetil b halvorsen
fuente
2
+1 ¡Soy un gran admirador de hacer las cosas de forma manual y diferente y luego comparar!
Haitao Du
3
Para una publicación con un poco más de explicación, consulte Regresión cuantil
detener las preguntas de cierre rápido el
2

La programación lineal se puede generalizar con la optimización convexa, donde además del simplex, hay muchos algoritmos más confiables disponibles.

Le sugiero que consulte el Libro de optimización convexo y la caja de herramientas CVX que proporcionaron. Donde puede formular fácilmente la menor desviación absoluta con la regularización.

https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf

http://cvxr.com/cvx/

Haitao Du
fuente
2
Gracias por tu respuesta. Pero cuando trato de buscar el término "método simplex" en el libro, no puedo encontrar ninguno. Y la caja de herramientas CVX es solo una herramienta para tomar datos como el problema de LP y ejecutar el algoritmo. Pero lo que realmente quiero es cómo funciona el algoritmo en este problema. Ni el resultado final, ni cómo formular el problema. Pero el paso para obtener el resultado. gracias
southdoor