LARS vs descida coordenada para o laço

13

Quais são os prós e os contras do uso do LARS [1] versus o uso da descida de coordenadas para ajustar a regressão linear regularizada por L1?

Estou interessado principalmente em aspectos de desempenho (meus problemas tendem a ter Nentre centenas e milhares e p<20.) No entanto, quaisquer outras idéias também seriam apreciadas.

edit: Desde que eu postei a pergunta, chl gentilmente apontou um artigo [2] de Friedman et al, em que a descida de coordenadas se mostra consideravelmente mais rápida do que outros métodos. Se for esse o caso, como profissional, devo simplesmente esquecer o LARS em favor da descida coordenada?

[1] Efron, Bradley; Hastie, Trevor; Johnstone, Iain e Tibshirani, Robert (2004). "Regressão de menor ângulo". Annals of Statistics 32 (2): pp. 407-499.
[2] Jerome H. Friedman, Trevor Hastie, Rob Tibshirani, "Caminhos de regularização para modelos lineares generalizados via descida de coordenadas", Journal of Statistical Software, vol. 33, edição 1, fevereiro de 2010.
NPE
fonte

Respostas:

13

No scikit-learn, a implementação do Lasso com descida coordenada tende a ser mais rápida do que a nossa implementação do LARS, embora para p pequeno (como no seu caso) eles sejam aproximadamente equivalentes (o LARS pode ser um pouco mais rápido com as otimizações mais recentes disponíveis no repo mestre). Além disso, a descida de coordenadas permite a implementação eficiente de problemas regularizados com rede elástica. Este não é o caso do LARS (que resolve apenas o Lasso, também conhecido como problemas penalizados pelo L1).

A penalização com Elastic Net tende a produzir uma melhor generalização que Lasso (mais próxima da solução de regressão de crista), mantendo as boas características de indução de esparsidade do Lasso (seleção supervisionada de recursos).

Para N grande (e grande p, esparso ou não), você também pode tentar uma descida de gradiente estocástico (com L1 ou penalidade líquida elástica) (também implementada no scikit-learn).

Edit : aqui estão algumas referências comparando o LassoLARS e a implementação de descida de coordenadas no scikit-learn

ogrisel
fonte
(+1) @ogrisel Muito obrigado! Como provavelmente vou ter que codificar isso sozinho (preciso dele em Java e ainda não vi implementações de código-fonte aberto em Java), qual algoritmo você diria que é mais fácil de implementar?
NPE
1
a descida de coordenadas e o SGD são fáceis de implementar (consulte a página de Leon Bottou na Web para obter uma boa introdução ao SGD). O LARS é provavelmente mais difícil de acertar.
ogrisel
Soberbo, obrigado! Vou dar uma olhada no site de Léon Bottou.
NPE
@ogrisel (+1) Prazer em vê-lo lá.
chl
2
@aix Eu editei minha resposta para adicionar alguns benchmarks nas implementações atuais no scikit-learn. Verifique também a versão java do liblinear antes de implementar sua própria descida de coordenadas, pois ela pode ser boa o suficiente para você (embora você não possa ter os registros L1 e L2 ao mesmo tempo).
Ogrisel