GLMNET ou LARS para computação de soluções LASSO?

13

Gostaria de obter os coeficientes para o problema do LASSO

||Y-Xβ||+λ||β||1.

O problema é que as funções glmnet e lars dão respostas diferentes. Para a função glmnet, peço os coeficientes deem vez de apenas , mas ainda recebo respostas diferentes.λ/||Y||λ

Isso é esperado? Qual é a relação entre o lars e glmnet ? Entendo que o glmnet é mais rápido para problemas do LASSO, mas gostaria de saber qual método é mais poderoso?λλ


deps_stats Receio que o tamanho do meu conjunto de dados seja tão grande que o LARS não possa lidar com isso, enquanto, por outro lado, o glmnet pode lidar com o meu grande conjunto de dados.

mpiktas Quero encontrar a solução de (Y-Xb) ^ 2 + L \ sum | b_j | mas quando peço dos dois algoritmos (lars e glmnet) seus coeficientes calculados para esse L em particular, recebo respostas diferentes ... e me pergunto se isso é correto / esperado? ou estou apenas usando um lambda errado para as duas funções.

Glen_b -Reinstate Monica
fonte
1
forneça um exemplo que ilustra seu problema. Além disso, como você define o poder do algoritmo?
Mvctas
1
Eu usei pacotes glmnet e lars em alguns projetos. Na minha experiência limitada, tive muitos problemas ao implementar o glmnet. Eu acho que o glmnet precisa de algumas correções de erros em relação ao tipo de variáveis ​​usadas no quadro de dados. Além disso, o glmnet possui documentação confusa. Acabei usando o lars e fiquei muito satisfeito com os resultados. Não importa o tamanho do seu problema, acho que o Lars pode lidar com isso.
deps_stats
"O problema é que as funções glmnet e lars dão respostas diferentes." Eu tenho o mesmo problema. Alguma resposta?
conceder
Respostas drasticamente diferentes para coeficientes? E apenas lendo a postagem original, você realmente não deve solicitar uma única solução lambda glmnete provavelmente não uma implementação do LARS. Eles fornecem toda uma gama de soluções ao longo do espectro de viés versus variação. O que dificulta a comparação dos coeficientes reais. Mas ainda assim, as mesmas variáveis ​​provavelmente devem se tornar diferentes de zero em uma ordem semelhante.
Shea Parkes

Respostas:

14

Na minha experiência, o LARS é mais rápido para pequenos problemas, problemas muito esparsos ou problemas muito "amplos" (muito mais recursos do que amostras). De fato, seu custo computacional é limitado pelo número de recursos selecionados, se você não calcular o caminho completo da regularização. Por outro lado, para grandes problemas, o glmnet (otimização da descida de coordenadas) é mais rápido. Entre outras coisas, a descida de coordenadas tem um bom padrão de acesso a dados (compatível com memória) e pode se beneficiar da redundância nos dados em conjuntos de dados muito grandes, pois converge com ajustes parciais. Em particular, ele não sofre com conjuntos de dados fortemente correlacionados.

A conclusão de que nós (os principais desenvolvedores do scikit-learn ) chegamos também é que, se você não possui um conhecimento a priori forte de seus dados, deve usar o glmnet (ou coordenar a otimização de descida) para falar sobre um algoritmo do que uma implementação).

Benchmarks interessantes podem ser comparados na tese de Julien Mairal:

http://www.di.ens.fr/~mairal/resources/pdf/phd_thesis.pdf

Seção 1.4, em particular 1.4.5 (página 22)

Julien chega a conclusões ligeiramente diferentes, embora sua análise do problema seja semelhante. Eu suspeito que isso seja porque ele estava muito interessado em problemas muito amplos.

Gael Varoquaux
fonte
A maioria das suas respostas são feitas em CW (aqui, mas também em metaoptimize.com/qa) ... Qualquer motivo?
chl
1
Porque acho que é bom que as pessoas consigam erros de digitação, formulações incorretas ... Gosto da ideia de melhorias contínuas nas respostas. Isso é contra as melhores práticas?
Gael Varoquaux 12/04
2
Corrigi dois ou três erros de digitação de passagem. Nada a ver com a CW por si só, a menos que você esteja pensando no representante mais baixo necessário para editar sua postagem! Os usuários podem sugerir edições; mas, dando a sua resposta, a CW não permitirá que você obtenha representantes deles. Eu acho que você não está atrás de representante, mas como suas respostas sempre foram bem colocadas, eu só estava me perguntando ... Saúde.
chl
1

O LASSO não é único no caso em que vários recursos têm colinearidade perfeita. Aqui está um experimento simples para provar isso.

yx1x2yx1x2yx1x2β1=1-Pβ2=0 0Pβ1=0 0β2-1-P

dsimcha
fonte
2
@dsmcha, desculpe dizer isso, mas acho que não gosto muito desse exemplo. A resposta é idêntica a dois dos preditores? Isso é além de patológico, na minha opinião.
cardeal