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.

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


(+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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.