Nicht negative Lasso-Implementierung in R

13

Ich suche Open Source oder eine vorhandene Bibliothek, die ich nutzen kann. Soweit ich weiß, ist das glmnet-Paket nicht sehr einfach zu erweitern, um den nicht negativen Fall abzudecken. Ich kann mich irren, jeder mit irgendwelchen Ideen sehr geschätzt.

Mit nicht negativ meine ich, dass alle Koeffizienten positiv sein müssen (> 0).

gbh.
quelle
1
Verzeihung, dass ich gefragt habe, aber was genau meinst du mit nicht-negativem Lasso? Alle Koeffizienten> 0 halten oder nur positive Vorhersagen zulassen? Googeln hat mich nicht aufgeklärt, aber es klingt nach etwas, was ich gerne wissen würde.
Backlin
1
Es tut uns leid, dass Sie Ihre Frage geschlossen haben, aber sie wird unter www.crossvalidated.com besser gestellt und beantwortet. Ich habe die Frage für die Migration markiert, sodass die Mods sie in Kürze bearbeiten werden. Bitte machen Sie Ihre Frage klar und erklären Sie genau, was Sie wollen. Der Lasso-Experte in unserer Forschungsgruppe konnte unmöglich herausfinden, was Sie anstrebten ...
Joris Meys
Das tut mir leid. Nicht negativ bedeutet, dass alle Koeffizienten positiv sind. Ich habe versucht, das Paket glmnet zu verwenden, aber das löst nur für den allgemeinen Fall.
gbh.

Antworten:

8

Darin glmnetbesteht die Möglichkeit

lower.limits=0

Dies ist die geeignete Methode, um die Positivitätsbeschränkungen für die angepassten Koeffizienten durchzusetzen. Wenn Sie den Parameter alphaauf 1 setzen, passen Sie LASSO an. In Kombination mit dem Argument können upper.limitsSie auch Box-Einschränkungen festlegen. Das glmnetPaket ist auch viel schneller als das penalizedPaket, was in einer anderen Antwort hier vorgeschlagen wird.

Eine RcppVersion davon glmnet, die für das Lasso und das elastische Netz mit Unterstützung für Positivität und Box-Einschränkungen geeignet ist, befindet sich ebenfalls in Vorbereitung und kann unter https://github.com/jaredhuling/ordinis getestet werden

Tom Wenseleers
quelle
7

Siehe das bestrafte Paket für eine Option. Ein Beispiel für die mitgelieferte Vignette (PDF!) Finden Sie in Abschnitt 3.9.

Stellen Sie positive = TRUEim Aufruf der penalized()Funktion im Wesentlichen das Argument ein .

Setzen Sie Monica - G. Simpson wieder ein
quelle
4

Dies und dieses Papier zeigen, dass unter bestimmten Bedingungen eine harte Schwellwertbildung der nicht-negativen Lösung der kleinsten Quadrate in Bezug auf die Leistung gleich oder besser als die L1-Regularisierung (LASSO) sein kann. Ein Beispiel ist, wenn Ihre Entwurfsmatrix nur nicht negative Einträge enthält, was häufig der Fall ist.

Es lohnt sich herauszufinden, da NNLS sehr weit verbreitet ist und auch einfacher / schneller zu lösen sein wird.

Bitweise
quelle