GLMNET oder LARS für die Berechnung von LASSO-Lösungen?


13

Ich möchte die Koeffizienten für das LASSO-Problem erhalten

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

Das Problem ist, dass die Funktionen glmnet und lars unterschiedliche Antworten geben. Für die glmnet-Funktion frage ich nach den Koeffizienten von statt nur λ , aber ich bekomme immer noch andere Antworten.λ/||Y||λ

Wird das erwartet? Wie ist die Beziehung zwischen den Laren und glmnet λ ? Ich verstehe, dass glmnet für LASSO-Probleme schneller ist, aber ich möchte wissen, welche Methode leistungsfähiger ist.λλ


deps_stats Ich befürchte, dass die Größe meines Datensatzes so groß ist, dass LARS nicht damit umgehen kann, während glmnet dagegen mit meinem großen Datensatz umgehen kann.

mpiktas Ich möchte die Lösung von (Y-Xb) ^ 2 + L \ sum | b_j | finden Aber wenn ich von den beiden Algorithmen (lars & glmnet) nach ihren berechneten Koeffizienten für dieses bestimmte L frage, erhalte ich unterschiedliche Antworten ... und frage mich, ob das richtig / erwartet ist? oder ich verwende nur ein falsches Lambda für die beiden Funktionen.


1
Bitte geben Sie ein Beispiel für Ihr Problem an. Wie definieren Sie auch die Potenz des Algorithmus?
mpiktas

1
Ich habe in einigen Projekten glmnet- und lars-Pakete verwendet. In meiner begrenzten Erfahrung hatte ich eine Menge Probleme bei der Implementierung von glmnet. Ich denke, dass glmnet einige Fehlerbehebungen in Bezug auf die Art der im Datenrahmen verwendeten Variablen benötigt. Außerdem hat glmnet eine verwirrende Dokumentation. Am Ende habe ich Lars genommen und war mit den Ergebnissen sehr zufrieden. Egal wie groß Ihr Problem ist, ich denke, Lars kann damit umgehen.
deps_stats

"Das Problem ist, dass die Funktionen glmnet und lars unterschiedliche Antworten geben." Ich habe das gleiche Problem. Irgendwelche Antworten?
Erteilen Sie den

Drastisch unterschiedliche Antworten für Koeffizienten? Und wenn Sie nur den Originalbeitrag lesen, sollten Sie wirklich nicht nach einer einzelnen Lambda-Lösung glmnetvon einer LARS-Implementierung und wahrscheinlich auch nicht von einer LARS-Implementierung fragen . Sie bieten eine ganze Reihe von Lösungen entlang des Spektrums von Bias vs. Varianz. Was es schwierig macht, die tatsächlichen Koeffizienten zu vergleichen. Dennoch sollten dieselben Variablen wahrscheinlich in einer ähnlichen Reihenfolge ungleich Null werden.
Shea Parkes

Antworten:


14

Nach meiner Erfahrung ist LARS schneller für kleine Probleme, sehr spärliche Probleme oder sehr "weite" Probleme (viel mehr Funktionen als Samples). In der Tat wird der Rechenaufwand durch die Anzahl der ausgewählten Features begrenzt, wenn Sie nicht den vollständigen Regularisierungspfad berechnen. Bei großen Problemen ist glmnet (Koordinatensinkoptimierung) dagegen schneller. Unter anderem hat die Koordinatenabnahme ein gutes Datenzugriffsmuster (speicherfreundlich) und kann von der Redundanz der Daten bei sehr großen Datensätzen profitieren, da sie mit Teilanpassungen konvergiert. Insbesondere leidet es nicht an stark korrelierten Datensätzen.

Die Schlussfolgerung, dass wir (die Kernentwickler des Scikit-Lernens) ) gezogen haben, ist, dass Sie, wenn Sie keine fundierten A-priori-Kenntnisse über Ihre Daten haben, lieber glmnet (oder die Optimierung der Koordinatenabnahme) verwenden sollten, um über einen Algorithmus zu sprechen als eine Implementierung).

Interessante Benchmarks lassen sich in Julien Mairals These vergleichen:

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

Abschnitt 1.4, insbesondere 1.4.5 (Seite 22)

Julien kommt zu etwas anderen Schlussfolgerungen, obwohl seine Analyse des Problems ähnlich ist. Ich vermute, das liegt daran, dass er sich sehr für sehr breite Probleme interessiert hat.


Die meisten Ihrer Antworten erfolgen in CW (hier, aber auch auf metaoptimize.com/qa) ... Aus irgendeinem Grund warum?
Chl

1
Weil ich denke, dass es gut ist, wenn die Leute Tippfehler und falsche Formulierungen korrigieren können ... Ich mag die Idee der kontinuierlichen Verbesserung der Antworten. Verstößt dies gegen die besten Praktiken?
Gael Varoquaux

2
Ich habe zwei oder drei Tippfehler im Vorbeigehen behoben. Mit CW per se nichts zu tun, es sei denn, Sie denken an den niedrigeren Repräsentanten, der zum Bearbeiten Ihres Beitrags erforderlich ist! Benutzer können jedoch Änderungen vorschlagen. Aber wenn Sie mit CW antworten, können Sie keine Repräsentanten von ihnen erhalten. Ich schätze, du bist nicht auf Wiederholung aus, aber da deine Antworten immer gut formuliert waren, habe ich mich nur gefragt ... Prost.
Chl

1

LASSO ist nicht einzigartig, wenn mehrere Features eine perfekte Kollinearität aufweisen. Hier ist ein einfaches Gedankenexperiment, um es zu beweisen.

yx1x2yx1x2yx1x2β1=1Pβ2=0Pβ1=0β21P


2
@dsmcha, tut mir leid das zu sagen, aber ich glaube nicht, dass ich dieses Beispiel zu sehr mag. Die Antwort ist identisch mit zwei der Prädiktoren? Das ist aus meiner Sicht alles andere als pathologisch.
Kardinal

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.