LARS vs descenso coordinado para el lazo

13

¿Cuáles son los pros y los contras de usar LARS [1] versus usar el descenso coordinado para ajustar la regresión lineal regularizada por L1?

Estoy principalmente interesado en los aspectos de rendimiento (mis problemas tienden a tener Ncientos de miles y p<20). Sin embargo, cualquier otra información también sería apreciada.

editar: desde que publiqué la pregunta, chl ha señalado amablemente un artículo [2] de Friedman et al donde se muestra que el descenso coordinado es considerablemente más rápido que otros métodos. Si ese es el caso, ¿debería, como profesional, simplemente olvidarme de LARS a favor del descenso coordinado?

[1] Efron, Bradley; Hastie, Trevor; Johnstone, Iain y Tibshirani, Robert (2004). "Regresión de ángulo mínimo". Annals of Statistics 32 (2): págs. 407–499.
[2] Jerome H. Friedman, Trevor Hastie, Rob Tibshirani, "Rutas de regularización para modelos lineales generalizados mediante descenso coordinado", Journal of Statistical Software, vol. 33, Número 1, febrero de 2010.
NPE
fuente

Respuestas:

13

En scikit-learn, la implementación de Lasso con descenso de coordenadas tiende a ser más rápida que nuestra implementación de LARS, aunque para p pequeño (como en su caso) son más o menos equivalentes (LARS podría ser incluso un poco más rápido con las últimas optimizaciones disponibles en el repositorio principal). Además, el descenso coordinado permite la implementación eficiente de problemas regularizados de red elástica. Este no es el caso de LARS (que solo resuelve problemas penalizados por Lasso, también conocido como L1).

La penalización de Elastic Net tiende a producir una mejor generalización que Lasso (más cerca de la solución de regresión de cresta) mientras mantiene las características inductoras de dispersión agradables de Lasso (selección supervisada de características).

Para N grande (y p grande, disperso o no), también puede intentar un descenso de gradiente estocástico (con L1 o penalización de red elástica) (también implementado en scikit-learn).

Editar : aquí hay algunos puntos de referencia que comparan LassoLARS y la implementación de descenso coordinado en scikit-learn

ogrisel
fuente
(+1) @ogrisel ¡Muchas gracias! Dado que probablemente terminaré teniendo que codificar esto yo mismo (lo necesito en Java y todavía no he visto ninguna implementación de código abierto de Java), ¿qué algoritmo dirías que es más fácil de implementar?
NPE
1
Tanto el descenso coordinado como el SGD son fáciles de implementar (consulte la página web de Leon Bottou para obtener una buena introducción al SGD). LARS es probablemente más complicado de acertar.
Ogrisel
Excelente, gracias! Revisaré el sitio de Léon Bottou.
NPE
@ogrisel (+1) Me alegro de verte allí.
chl
2
@aix He editado mi respuesta para agregar algunos puntos de referencia sobre las implementaciones actuales en scikit-learn. También revise la versión java de liblinear antes de implementar su propio descenso de coordenadas, ya que podría ser lo suficientemente bueno para usted (aunque no puede tener tanto L1 como L2 reg al mismo tiempo).
Ogrisel