Ich möchte die Koeffizienten für das LASSO-Problem erhalten
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.
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.
quelle
glmnet
von 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.Antworten:
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.
quelle
LASSO ist nicht einzigartig, wenn mehrere Features eine perfekte Kollinearität aufweisen. Hier ist ein einfaches Gedankenexperiment, um es zu beweisen.
quelle
Lars und Glmnet geben unterschiedliche Lösungen für das Lasso-Problem an, da sie leicht unterschiedliche Zielfunktionen und unterschiedliche Standardisierungen der Daten verwenden. Den Detailcode für die Reproduktion finden Sie in der entsprechenden Frage. Warum geben Lars und Glmnet unterschiedliche Lösungen für das Lasso-Problem an?
quelle