Estoy buscando un código abierto o una biblioteca existente que pueda usar. Por lo que digo, el paquete glmnet no es fácilmente extensible para cubrir el caso no negativo. Puedo estar equivocado, cualquiera con alguna idea muy apreciada.
Por no negativo quiero decir que todos los coeficientes están limitados a ser positivos (> 0).

Respuestas:
En
glmnetexiste la opciónque puede usar y que sería la forma adecuada de imponer restricciones de positividad en los coeficientes ajustados y si establece el parámetro
alphaen 1, ajustará LASSO. En combinación con el argumentoupper.limits, también puede especificar restricciones de cuadro. Elglmnetpaquete también es mucho más rápido que elpenalizedpaquete, sugerido en otra respuesta aquí.También se está preparando una
Rcppversión deglmneteso que puede ajustarse al lazo y la red elástica con soporte para positividad y restricciones de caja, y está disponible para pruebas en https://github.com/jaredhuling/ordinisfuente
Vea el paquete penalizado para una opción. La viñeta (PDF) que viene con el paquete tiene un ejemplo de esto en la sección 3.9.
Esencialmente establezca el argumento
positive = TRUEen la llamada a lapenalized()función.fuente
Esto y este documento demuestran que, en algunas condiciones, la determinación de umbrales duros de la solución de mínimos cuadrados no negativos puede tener un rendimiento equivalente o mejor que la regularización L1 (LASSO), en términos de rendimiento. Un ejemplo es si su matriz de diseño solo tiene entradas no negativas, que a menudo es el caso.
Vale la pena echarle un vistazo, ya que NNLS es muy compatible y también será más fácil / rápido de resolver.
fuente