LARS vs descente coordonnée pour le lasso

13

Quels sont les avantages et les inconvénients de l'utilisation de LARS [1] par rapport à l'utilisation de la descente de coordonnées pour ajuster la régression linéaire régularisée L1?

Je m'intéresse principalement aux aspects de performance (mes problèmes ont tendance à avoir Ndes centaines de milliers et p<20). Cependant, toute autre idée serait également appréciée.

edit: Depuis que j'ai posté la question, chl a gentiment signalé un article [2] de Friedman et al où la descente de coordonnées est considérablement plus rapide que les autres méthodes. Si tel est le cas, devrais-je simplement, en tant que praticien, oublier LARS en faveur de la descente coordonnée?

[1] Efron, Bradley; Hastie, Trevor; Johnstone, Iain et Tibshirani, Robert (2004). "Régression du moindre angle". Annals of Statistics 32 (2): pp. 407–499.
[2] Jerome H. Friedman, Trevor Hastie, Rob Tibshirani, "Chemins de régularisation pour les modèles linéaires généralisés via la descente de coordonnées", Journal of Statistical Software, vol. 33, numéro 1, février 2010.
NPE
la source

Réponses:

13

Dans scikit-learn, l'implémentation de Lasso avec descente de coordonnées a tendance à être plus rapide que notre implémentation de LARS, bien que pour les petits p (comme dans votre cas), ils soient à peu près équivalents (LARS pourrait même être un peu plus rapide avec les dernières optimisations disponibles dans le master repo). De plus, la descente coordonnée permet une mise en œuvre efficace des problèmes de régularisation du filet élastique. Ce n'est pas le cas pour LARS (qui ne résout que les problèmes pénalisés Lasso, alias L1).

La pénalisation d'Elastic Net a tendance à produire une meilleure généralisation que Lasso (plus proche de la solution de régression de crête) tout en conservant les caractéristiques inductives de Lasso (sélection de caractéristiques supervisée).

Pour un grand N (et un grand p, clairsemé ou non), vous pouvez également essayer une descente de gradient stochastique (avec L1 ou pénalité nette élastique) (également implémentée dans scikit-learn).

Edit : voici quelques benchmarks comparant LassoLARS et l'implémentation de la descente de coordonnées dans scikit-learn

ogrisel
la source
(+1) @ogrisel Merci beaucoup! Comme je vais probablement devoir coder cela moi-même (j'en ai besoin en Java, et je n'ai pas encore vu d'implémentations Java open source), quel algorithme diriez-vous est plus facile à implémenter?
NPE
1
la descente coordonnée et SGD sont faciles à mettre en œuvre (consultez la page Web de Leon Bottou pour une belle introduction à SGD). LARS est probablement plus délicat à faire correctement.
ogrisel
Superbe, merci! Je vais consulter le site de Léon Bottou.
NPE
@ogrisel (+1) Ravi de vous y voir.
chl
2
@aix J'ai modifié ma réponse pour ajouter des repères sur les implémentations actuelles dans scikit-learn. Vérifiez également la version java de liblinear avant d'implémenter votre propre descente de coordonnées, car cela pourrait être assez bon pour vous (bien que vous ne puissiez pas avoir à la fois L1 et L2 reg en même temps).
ogrisel