9 votos

¿Qué métodos numéricos son conocidos para solucionar $L_1$ regularización de la programación cuadrática problemas?

¿Qué métodos numéricos son adecuados para resolver el siguiente problema

$$\min_x \tfrac{1}{2}x^T A x + b^Tx + \lambda ||x||_1$$

donde $x,b\in\mathbf{R}^n$, e $A\in \mathbf{R}^{n\times n}$ es positiva definida, y $\lambda\in\mathbf{R}$ es positivo?

Normalmente, este problema se plantea en L1-regularización de los problemas de regresión (por ejemplo, el LAZO), pero el método común para resolver (LARS) requiere que usted puede calcular la regresión de los residuos, que no se puede en este caso.

Hay herramientas estándar (comerciales o de código abierto) que pueden resolver problemas como este?

9voto

Giulio Muscarello Puntos 150

Oh, claro que sí, hay un montón de herramientas. Haga una búsqueda para proximal gradiente de métodos en su motor de búsqueda favorito; estas son generalizaciones de la proyectada gradiente de métodos. Para herramientas específicas, búsqueda de TFOCS (divulgación de abajo), FISTA, NESTA, SPGL1, GPSR, SpaRSA, L1LS... y la bibliografía para estos va a llevar aún más opciones. Aún mejor, ver a esta extensa lista de primer orden de métodos compilado por Esteban Becker como parte de su más dispersas y de baja rango de aproximación de la wiki.

Un básico proximal método de gradiente considera que su función como la suma de una suave plazo $f(x)=\tfrac{1}{2}x^TAx+b^Tx$ y no liso sino que "prox-capaz de términos"$g(x)=\lambda\|x\|_1$. En cada iteración, se utiliza el gradiente de la lisa plazo $v=\nabla f(x)=Ax+b$ y calcula el siguiente paso utilizando un proximal de minimización de $$x^{+} = \mathop{\textrm{arg min}}_z ~ \lambda \|z\|_1 + \tfrac{1}{2t} \|x-tv-z\|_2^2$$ donde $t$ es de un tamaño de paso. Muchas de las presentaciones de estos métodos suponen un paso fijo tamaño determinado por una de Lipschitz de la continuidad de la medida, pero tal tamaños de paso son siempre muy conservador. Así, un simple paso el tamaño de la estrategia de adaptación es esencial para un buen rendimiento.

Métodos más avanzados utilizan el mismo gradiente y proximal de minimización de los cálculos, pero la mezcla de esa información en diferentes formas para lograr una demostrable de mejora en el peor de los casos el rendimiento. Pero resulta que para que su función es fuertemente convexo, debido a su afirmación de que $A$ es positiva definida. Así que una proximal algoritmo de gradiente estructura es probablemente una muy buena elección.

Yo co-escribió TFOCS con Esteban Becker y Emmanuel Candes. TFOCS es una de MATLAB basado en la caja de herramientas que le permite construir personalizado de primer orden solucionadores de problemas utilizando una variedad de algoritmos, suave funciones, operadores lineales, y de proximidad funciones. Se escribió un acompañamiento de artículo de revista . Nuestro objetivo era estructurar el código de tal manera que es fácil de probar una variedad de primer orden a los métodos de sus modelos, y para hacer que el código que implementa las iteraciones en sí, fácil de leer. Pero en realidad, es sólo uno de los muchos paquetes de software, y por supuesto, si usted no desea utilizar MATLAB, vas a tener que intentar algo más!

Si usted está dispuesto y es capaz de factorizar $A=R^TR$, entonces también puede utilizar el estándar de herramientas de LAZO: $$\min_x \tfrac{1}{2} \| R x - \bar{b} \|_2^2 + \lambda \|x\|_1 - \tfrac{1}{2} \bar{b}^T\bar{b}, \qquad \bar{b}\triangleq - R^{-T} b$$ No se limite a LARS; hay un montón de enfoques alternativos, y de ahí muchos de los paquetes de arriba específicamente a apoyar el LAZO. Pero la cosa buena acerca de muchas (pero no todas) de las herramientas mencionadas anteriormente, incluyendo TFOCS, es que no necesariamente tienes que hacer la factorización si usted prefiere no.

Por último, esto es, por supuesto, un problema de optimización convexa, por lo que cualquier propósito general convexa marco de optimización será capaz de manejar esto con aplomo, aunque de forma menos eficaz que en estos métodos especializados. Normalmente se repartirán $x$ en positivo y negativo partes: $$x=x^{+} - x^{-}, \quad x^{+}, x^{-} \succeq 0$$ Esto permite la sustitución de $\|x\|_1=\vec{1}^T(x^{+}+x^{-})$, en cuyo caso el problema se convierte en un estándar de la QP.

Edición principal de la historia:

  • Aclaró que el OP función es fuertemente convexo, debido a la positiva la certeza de $A$.
  • Añadida una nota sobre la importancia de el tamaño de paso de la adaptación en la práctica; gracias littleO.
  • Añadido enlaces a Esteban Becker escasa aproximación wiki; gracias icurays1.

3voto

Bryan Eargle Puntos 124

CVX (MATLAB) o CVXPY (Python) que le permitirían resolver muy fácilmente, siempre y cuando el problema no es demasiado grande.

La CVX código sería así:

cvx_begin
    variable x(n)
    minimize( 1/2*quad_form(x,A) + b'*x + lambda*norm(x,1) )
cvx_end

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X