Implementación de lazo no negativo en R

13

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).

gbh.
fuente
1
Disculpe por preguntar, pero ¿qué quiere decir exactamente con lazo no negativo? ¿Para mantener todos los coeficientes> 0 o solo permitir predicciones positivas? Buscar en Google no me iluminó, pero suena como algo que me gustaría saber.
Backlin
1
Perdón por cerrar su pregunta, pero es mejor preguntarla y responderla en www.crossvalidated.com Marqué la pregunta para la migración, por lo que los mods se encargarán de ella en breve. Dicho esto, por favor aclare su pregunta y explique exactamente lo que quiere. El experto en lazo de nuestro grupo de investigación no podría entender a qué apuntaba ...
Joris Meys
Lo siento por eso. No negativo significa que todos los coeficientes son positivos. Intenté usar el paquete glmnet pero eso solo resuelve el caso general.
Gbh.

Respuestas:

8

En glmnetexiste la opción

lower.limits=0

que 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 argumento upper.limits, también puede especificar restricciones de cuadro. El glmnetpaquete también es mucho más rápido que el penalizedpaquete, sugerido en otra respuesta aquí.

También se está preparando una Rcppversión de glmneteso 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/ordinis

Tom Wenseleers
fuente
7

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 la penalized()función.

Restablece a Mónica - G. Simpson
fuente
4

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.

Bitwise
fuente