Gostaria de obter os coeficientes para o problema do LASSO
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.
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.
fonte
glmnet
e 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.Respostas:
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.
fonte
O LASSO não é único no caso em que vários recursos têm colinearidade perfeita. Aqui está um experimento simples para provar isso.
fonte
Lars e Glmnet fornecem soluções diferentes para o problema Lasso, pois usam funções objetivas ligeiramente diferentes e diferentes padronizações dos dados. Você pode encontrar o código de detalhes para a reprodução na pergunta relacionada Por que Lars e Glmnet fornecem soluções diferentes para o problema do laço?
fonte