Szukam jakiegoś open source lub istniejącej biblioteki, której mogę użyć. O ile mówię, pakiet glmnet nie jest łatwo rozszerzalny, aby objąć przypadek nieujemny. Mogę się mylić, każdy z wszelkimi pomysłami bardzo cenionymi.
Przez nieujemne rozumiem, że wszystkie współczynniki są ograniczone do dodatnich (> 0).
Odpowiedzi:
W
glmnet
istnieje możliwośćktórego możesz użyć i byłby to odpowiedni sposób na wymuszenie ograniczeń
alpha
dodatnich na dopasowanych współczynnikach, a jeśli ustawisz parametr na 1, dopasujesz LASSO. W połączeniu z argumentemupper.limits
można również określić ograniczenia pola.glmnet
Pakiet jest również znacznie szybciej niżpenalized
opakowania, zasugerował w innej odpowiedzi tutaj.Przygotowywana jest również
Rcpp
wersja,glmnet
która może pasować do lasso i elastycznej siatki ze wsparciem dla pozytywności i ograniczeń pudełkowych, i jest dostępna do testowania na https://github.com/jaredhuling/ordinisźródło
Zobacz karany pakiet dla jednej opcji. Vignette (PDF!), Który pochodzi z pakietu ma przykład tego w rozdziale 3.9.
Zasadniczo ustaw argument
positive = TRUE
w wywołaniupenalized()
funkcji.źródło
Ten i ten dokument pokazują, że w niektórych warunkach twarde prógowanie nieujemnego rozwiązania najmniejszych kwadratów może być równoważne lub lepsze niż regularyzacja L1 (LASSO) pod względem wydajności. Jednym z przykładów jest sytuacja, gdy macierz projektowa zawiera tylko wpisy nieujemne, co często ma miejsce.
Warto to sprawdzić, ponieważ NNLS jest bardzo szeroko wspierany i będzie również łatwiejszy / szybszy do rozwiązania.
źródło