Implémentation du lasso non négatif dans R

13

Je recherche une source ouverte ou une bibliothèque existante que je peux utiliser. Autant que je sache, le paquet glmnet n'est pas très facilement extensible pour couvrir le cas non négatif. Je peux me tromper, toute personne ayant des idées très appréciées.

Par non négatif, je veux dire que tous les coefficients sont contraints d'être positifs (> 0).

gbh.
la source
1
Excusez-moi de demander, mais que voulez-vous dire exactement avec un lasso non négatif? Pour conserver tous les coefficients> 0 ou ne permettre que des prédictions positives? La recherche sur Google ne m'a pas éclairé, mais cela ressemble à quelque chose que j'aimerais savoir.
Backlin
1
Désolé de fermer votre question, mais il vaut mieux la poser et y répondre sur www.crossvalidated.com J'ai signalé la question pour la migration, donc les mods s'en occuperont sous peu. Cela dit, veuillez clarifier votre question et expliquer exactement ce que vous voulez. L'expert en lasso de notre groupe de recherche n'a pas pu comprendre ce que vous visiez ...
Joris Meys
Désolé pour ça. Non négatif signifie que tous les coefficients sont positifs. J'ai essayé d'utiliser le paquet glmnet mais cela ne résout que pour le cas général.
gbh.

Réponses:

8

Il glmnety a l'option

lower.limits=0

que vous pouvez utiliser et qui serait le moyen approprié d'imposer des contraintes de positivité sur les coefficients ajustés et si vous définissez le paramètre alphasur 1, vous ajusterez LASSO. En combinaison avec l'argument, upper.limitsvous pouvez également spécifier des contraintes de boîte. Le glmnetpackage est également beaucoup plus rapide que le penalizedpackage, suggéré dans une autre réponse ici.

Une Rcppversion glmnetqui peut s'adapter au lasso et au filet élastique avec prise en charge des contraintes de positivité et de boîte est également en préparation et est disponible pour les tests sur https://github.com/jaredhuling/ordinis

Tom Wenseleers
la source
7

Voir le package pénalisé pour une option. La vignette (PDF!) Fournie avec le package en est un exemple dans la section 3.9.

Argument essentiellement défini positive = TRUEdans l'appel à la penalized()fonction.

Réintégrer Monica - G. Simpson
la source
4

Ceci et cet article démontrent que, dans certaines conditions, un seuillage strict de la solution des moindres carrés non négatifs peut effectuer une régularisation L1 (LASSO) équivalente ou meilleure, en termes de performances. Par exemple, si votre matrice de conception ne contient que des entrées non négatives, ce qui est souvent le cas.

Cela vaut la peine d'être vérifié, car NNLS est très largement pris en charge et sera également plus facile / plus rapide à résoudre.

Au niveau du bit
la source