Implementação de laço não negativo em R

13

Estou procurando algum código-fonte aberto ou uma biblioteca existente que eu possa usar. Tanto quanto eu digo, o pacote glmnet não é muito facilmente extensível para cobrir o caso não negativo. Posso estar errado, qualquer pessoa com alguma idéia muito apreciada.

Por não negativo, quero dizer que todos os coeficientes são restritos a serem positivos (> 0).

gbh.
fonte
1
Perdoe-me por perguntar, mas o que exatamente você quer dizer com laço não negativo? Manter todos os coeficientes> 0 ou permitir apenas previsões positivas? O Google não me esclareceu, mas parece algo que eu gostaria de saber.
Backlin 8/10/12
1
Desculpe por encerrar sua pergunta, mas é melhor perguntar e responder em www.crossvalidated.com. Eu sinalizei a pergunta para migração, para que os mods cuidem dela em breve. Dito isto, faça sua pergunta clara e explique exatamente o que você deseja. O especialista lasso em nosso grupo de pesquisa não poderia descobrir o que você estava visando ...
Joris Meys
Me desculpe por isso. Não negativo significa que todos os coeficientes são positivos. Eu tentei usar o pacote glmnet, mas isso resolve apenas para o caso geral.
gbh.

Respostas:

8

Dentro glmnetexiste a opção

lower.limits=0

que você pode usar e que seria a maneira apropriada de impor restrições de positividade aos coeficientes ajustados e se você definir o parâmetro alphacomo 1, estará ajustando o LASSO. Em combinação com o argumento, upper.limitsvocê também pode especificar restrições de caixa. O glmnetpacote também é muito mais rápido que o penalizedpacote, sugerido em outra resposta aqui.

Também está em preparação uma Rcppversão glmnetdisso que pode ajustar o laço e a rede elástica com suporte para restrições de positividade e caixa, e está disponível para teste em https://github.com/jaredhuling/ordinis

Tom Wenseleers
fonte
7

Veja o pacote penalizado para uma opção. A vinheta (PDF!) Que acompanha o pacote tem um exemplo disso na seção 3.9.

Defina essencialmente o argumento positive = TRUEna chamada para a penalized()função.

Restabelecer Monica - G. Simpson
fonte
4

Isso e isso artigo demonstram que, em algumas condições, o limiar rígido da solução de mínimos quadrados não negativos pode ter desempenho equivalente ou melhor que a regularização L1 (LASSO), em termos de desempenho. Um exemplo é se sua matriz de design possui apenas entradas não negativas, o que geralmente ocorre.

Vale a pena conferir, pois o NNLS é amplamente suportado e também será mais fácil / rápido de resolver.

Bit a bit
fonte