GLMNET ou LARS pour le calcul des solutions LASSO?

13

Je voudrais obtenir les coefficients du problème LASSO

||YXβ||+λ||β||1.

Le problème est que les fonctions glmnet et lars donnent des réponses différentes. Pour la fonction glmnet, je demande les coefficients de λ/||Y||au lieu de simplement λ , mais j'obtiens toujours des réponses différentes.

Est-ce attendu? Quelle est la relation entre le lars λ et le glmnet λ ? Je comprends que glmnet est plus rapide pour les problèmes LASSO mais je voudrais savoir quelle méthode est la plus puissante?


deps_stats J'ai peur que la taille de mon ensemble de données soit si grande que LARS ne puisse pas le gérer, alors que d'un autre côté, glmnet peut gérer mon grand ensemble de données.

mpiktas Je veux trouver la solution de (Y-Xb) ^ 2 + L \ sum | b_j | mais quand je demande aux deux algorithmes (lars et glmnet) leurs coefficients calculés pour ce L particulier, j'obtiens des réponses différentes ... et je me demande si c'est correct / attendu? ou j'utilise juste une mauvaise lambda pour les deux fonctions.

Glen_b -Reinstate Monica
la source
1
veuillez fournir un exemple illustrant votre problème. Aussi comment définissez-vous la puissance de l'algorithme?
mpiktas
1
J'ai utilisé les packages glmnet et lars dans quelques projets. Dans mon expérience limitée, j'ai eu BEAUCOUP de problèmes pour implémenter glmnet. Je pense que glmnet a besoin de corrections de bugs concernant le type de variables utilisées dans le bloc de données. En outre, glmnet a une documentation confuse. J'ai fini par utiliser lars et j'étais très satisfait des résultats. Peu importe la taille de votre problème, je pense que Lars peut le gérer.
deps_stats
"Le problème est que les fonctions glmnet et lars donnent des réponses différentes." J'ai le même problème. Des réponses?
accorder
Des réponses radicalement différentes pour les coefficients? Et juste à la lecture de l'article d'origine, vous ne devriez vraiment pas demander une seule solution lambda à partir glmnetd'une implémentation LARS et probablement pas d'une implémentation LARS. Ils fournissent toute une gamme de solutions le long du spectre de biais vs variance. Ce qui rend difficile la comparaison des coefficients réels. Mais encore, les mêmes variables devraient probablement devenir non nulles dans un ordre similaire.
Shea Parkes

Réponses:

14

D'après mon expérience, LARS est plus rapide pour les petits problèmes, les problèmes très clairsemés ou les problèmes très «larges» (beaucoup plus de fonctionnalités que les échantillons). En effet, son coût de calcul est limité par le nombre de fonctionnalités sélectionnées, si vous ne calculez pas le chemin de régularisation complet. En revanche, pour les gros problèmes, glmnet (optimisation de la descente de coordonnées) est plus rapide. Entre autres choses, la descente de coordonnées a un bon modèle d'accès aux données (compatible avec la mémoire) et elle peut bénéficier d'une redondance dans les données sur de très grands ensembles de données, car elle converge avec des ajustements partiels. En particulier, il ne souffre pas d'ensembles de données fortement corrélés.

La conclusion que nous (les principaux développeurs de scikit-learn ) sommes venus aussi est que, si vous n'avez pas une bonne connaissance a priori de vos données, vous devriez plutôt utiliser glmnet (ou optimiser l'optimisation de la descente, pour parler d'un algorithme plutôt qu’une mise en œuvre).

Des repères intéressants peuvent être comparés dans la thèse de Julien Mairal:

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

Section 1.4, en particulier 1.4.5 (page 22)

Julien arrive à des conclusions légèrement différentes, bien que son analyse du problème soit similaire. Je soupçonne que c'est parce qu'il était très intéressé par des problèmes très larges.

Gael Varoquaux
la source
La plupart de vos réponses sont faites CW (ici, mais aussi sur metaoptimize.com/qa) ... Une raison pour laquelle?
chl
1
Parce que je pense que c'est bien si les gens peuvent corriger les fautes de frappe, les libellés incorrects ... J'aime l'idée d'une amélioration continue des réponses. Est-ce contraire aux meilleures pratiques?
Gael Varoquaux
2
J'ai corrigé deux ou trois fautes de frappe en passant. Rien à voir avec CW en soi, sauf si vous pensez au représentant inférieur requis pour éditer votre message! Les utilisateurs peuvent toutefois suggérer des modifications; mais faire votre réponse CW ne vous permettra pas de gagner de la réputation auprès d'eux. Je suppose que vous n'êtes pas après le représentant, mais comme vos réponses ont toujours été bien formulées, je me demandais simplement ... Bravo.
chl
1

LASSO n'est pas unique dans le cas où plusieurs fonctionnalités ont une colinéarité parfaite. Voici une simple expérience de pensée pour le prouver.

Disons que vous avez trois vecteurs aléatoires , x 1 , x 2 . Vous essayez de prédire y à partir de x 1 , x 2 . Supposons maintenant y = x 1 = x 2 . Une solution LASSO optimale serait β 1 = 1 - P , β 2 = 0 , où P est l'effet de la pénalité LASSO. Cependant, optimal serait également β 1 = 0 , β 2 -yx1x2yx1x2yx1x2β1=1Pβ2=0Pβ1=0 .β21P

dsimcha
la source
2
@dsmcha, désolé de le dire, mais je ne pense pas que j'aime trop cet exemple. La réponse est identique à deux des prédicteurs? C'est au-delà de pathologique, à mon avis.
Cardinal