Supongo que la razón por la que agregar una penalización L1 ralentiza las cosas significativamente es que una penalización L1 no es diferenciable (es decir, valor absoluto), mientras que la penalización L2 sí lo es. Esto significa que la superficie de la función no será suave y, por lo tanto, los métodos estándar de cuasi-Newton tendrán muchos problemas con estos problemas. Recuerde que una forma de pensar en un método cuasi-Newton es que hace una aproximación cuadrática de la función y luego la propuesta inicial será el máximo de esa aproximación. Si la aproximación cuadrática coincide bastante bien con la función objetivo, deberíamos esperar que la propuesta sea cercana al máximo (o mínimo, dependiendo de cómo se mire el mundo). Pero si su función objetivo no es diferenciable, esta aproximación cuadrática puede ser muy mala,
Si ha encontrado un paquete R que implementa BFGS para penalizaciones L1, pruébelo. BFGS, en general, es un algoritmo muy genérico para la optimización. Como es el caso con cualquier algoritmo genérico, habrá muchos casos especiales en los que no funcionará bien. Los algoritmos que se adaptan especialmente a su problema claramente deberían mejorar (suponiendo que el paquete sea tan bueno como lo afirma el autor: no he oído hablar de lbfgs, pero hay muchas cosas buenas de las que no he oído hablar. Actualización : I He usado el paquete lbfgs de R, ¡y la implementación de L-BFGS que tienen es bastante buena! Todavía no he usado su algoritmo OWL-QN, que es a lo que se refiere el OP).
Si no funciona para ti, quizás quieras probar el método "Nelder-Mead" con la optimización de R. No utiliza derivados para la optimización. Como tal, generalmente será más lento en una función suave pero más estable en una función suave como la que tiene usted.