λlog(λ)∑i|βi|
Zu diesem Zweck habe ich einige korrelierte und nicht korrelierte Daten erstellt, um Folgendes zu demonstrieren:
x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]
sigma <- matrix(c( 1, -.5, 0,
-.5, 1, -.5,
0, -.5, 1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]
Die Daten x_uncorr
haben nicht korrelierte Spalten
> round(cor(x_uncorr), 2)
[,1] [,2] [,3]
[1,] 1.00 0.01 0.00
[2,] 0.01 1.00 -0.01
[3,] 0.00 -0.01 1.00
while x_corr
hat eine voreingestellte Korrelation zwischen den Spalten
> round(cor(x_corr), 2)
[,1] [,2] [,3]
[1,] 1.00 -0.49 0.00
[2,] -0.49 1.00 -0.51
[3,] 0.00 -0.51 1.00
Betrachten wir nun die Lasso-Diagramme für beide Fälle. Zuerst die unkorrelierten Daten
gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)
Ein paar Features fallen auf
- Die Prädiktoren gehen in der Größenordnung ihres wahren linearen Regressionskoeffizienten in das Modell ein.
- ∑i|βi|∑i|βi|
- Wenn ein neuer Prädiktor in das Modell eintritt, wirkt er sich deterministisch auf die Steigung des Koeffizientenpfads aller Prädiktoren aus, die sich bereits im Modell befinden. Wenn beispielsweise der zweite Prädiktor in das Modell eintritt, wird die Steigung des ersten Koeffizientenpfads halbiert. Wenn der dritte Prädiktor in das Modell eintritt, beträgt die Steigung des Koeffizientenpfads ein Drittel seines ursprünglichen Werts.
All dies sind allgemeine Tatsachen, die für die Lasso-Regression mit nicht korrelierten Daten gelten und die entweder von Hand (gute Übung!) Oder in der Literatur nachgewiesen werden können.
Lassen Sie uns nun korrelierte Daten machen
gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)
Sie können einige Dinge an dieser Handlung ablesen, indem Sie sie mit dem nicht korrelierten Fall vergleichen
- Der erste und der zweite Prädiktorpfad haben dieselbe Struktur wie der nicht korrelierte Fall, bis der dritte Prädiktor in das Modell eintritt, obwohl sie korreliert sind. Dies ist eine Besonderheit des Zwei-Prädiktor-Falls, die ich in einer anderen Antwort erläutern kann, wenn Interesse besteht, würde es mich ein wenig von der aktuellen Diskussion abbringen.
- ∑|βi|
Schauen wir uns nun Ihren Plot aus dem Datensatz des Autos an und lesen einige interessante Dinge ab (ich habe Ihren Plot hier reproduziert, damit diese Diskussion einfacher zu lesen ist):
Ein Wort der Warnung : Ich habe die folgende Analyse unter der Annahme geschrieben, dass die Kurven die standardisierten Koeffizienten zeigen, in diesem Beispiel jedoch nicht. Nicht standardisierte Koeffizienten sind nicht dimensionslos und nicht vergleichbar, sodass daraus keine Schlussfolgerungen hinsichtlich der prädiktiven Bedeutung gezogen werden können. Damit die folgende Analyse gültig ist, geben Sie bitte vor, dass es sich bei der Darstellung um die standardisierten Koeffizienten handelt, und führen Sie eine eigene Analyse für standardisierte Koeffizientenpfade durch.
- Wie Sie sagen,
wt
scheint der Prädiktor sehr wichtig. Es tritt zuerst in das Modell ein und fällt langsam und stetig auf seinen Endwert ab. Es hat ein paar Korrelationen, die es zu einer etwas holprigen Fahrt machen, am
insbesondere scheint es einen drastischen Effekt zu haben, wenn es eintritt.
am
ist auch wichtig. Es kommt später herein und korreliert damit wt
, da es die Neigung von wt
auf gewaltsame Weise beeinflusst. Es ist auch korreliert mit carb
und qsec
, weil wir nicht die vorhersehbare Abschwächung der Steigung sehen, wenn diese eintreten. Nachdem diese vier Variablen obwohl eingegeben haben, wir haben das schöne unkorreliert Muster zu sehen, so ist es mit allen Prädiktoren am Ende zu sein scheint unkorreliert.
- Etwas tritt um 2,25 auf der x-Achse ein, aber sein Pfad selbst ist nicht wahrnehmbar. Sie können ihn nur anhand seiner Auswirkung auf die Parameter
cyl
und erkennen wt
.
cyl
ist ziemlich faszinierend. Es tritt an zweiter Stelle ein, ist also wichtig für kleine Modelle. Nach anderen Variablen und vor allem nach der am
Eingabe ist es nicht mehr so wichtig, und sein Trend kehrt sich um und wird schließlich so gut wie entfernt. Es scheint, dass der Effekt von cyl
vollständig von den Variablen erfasst werden kann, die am Ende des Prozesses eingegeben werden. Ob die Verwendung cyl
oder die komplementäre Gruppe von Variablen angemessener ist, hängt wirklich vom Kompromiss zwischen Bias und Varianz ab. Wenn Sie die Gruppe in Ihrem endgültigen Modell haben, würde dies die Varianz erheblich erhöhen, aber es kann sein, dass die niedrigere Verzerrung dies wieder wettmacht!
Das ist eine kleine Einführung, wie ich gelernt habe, Informationen aus diesen Handlungen abzulesen. Ich denke, sie machen jede Menge Spaß!
Vielen Dank für eine tolle Analyse. Um in einfachen Worten zu berichten, würden Sie sagen, dass wt, am und cyl die drei wichtigsten Prädiktoren für mpg sind. Wenn Sie ein Vorhersagemodell erstellen möchten, welche werden Sie basierend auf dieser Zahl einbeziehen: wt, am und cyl? Oder eine andere Kombination. Außerdem benötigen Sie anscheinend nicht das beste Lambda für die Analyse. Ist es nicht wichtig wie bei der Gratregression?
Ich würde den Fall sagen für wt
und am
sind eindeutig, sie wichtig sind. cyl
ist viel subtiler, es ist wichtig in einem kleinen Modell, aber überhaupt nicht relevant in einem großen.
Ich würde nicht in der Lage sein, eine Entscheidung darüber zu treffen, was einbezogen werden soll, und zwar nur auf der Grundlage der Zahl, die wirklich im Kontext Ihrer Tätigkeit beantwortet werden muss. Man könnte sagen , dass wenn Sie ein drei Prädiktor Modell wollen, dann wt
, am
und cyl
sind eine gute Wahl, da sie in den großen Plan der Dinge relevant sind, und sollten angemessen Effektgrößen in einem kleinen Modell am Ende mit. Dies wird vorausgesetzt, dass Sie einen externen Grund haben, ein kleines Drei-Prädiktor-Modell zu wünschen.
Diese Art der Analyse deckt das gesamte Spektrum der Lambdas ab und ermöglicht Ihnen, Beziehungen über eine Reihe von Modellkomplexitäten hinweg zu analysieren. Für ein letztes Modell halte ich es jedoch für sehr wichtig, ein optimales Lambda einzustellen. In Abwesenheit anderer Einschränkungen würde ich definitiv Kreuzvalidierung verwenden, um entlang dieses Spektrums das prädiktivste Lambda zu finden, und dieses Lambda dann für ein endgültiges Modell und eine endgültige Analyse verwenden.
λ
In der anderen Richtung gibt es manchmal äußere Einschränkungen dafür, wie komplex ein Modell sein kann (Implementierungskosten, Legacy-Systeme, erklärender Minimalismus, Interpretierbarkeit des Geschäfts, ästhetisches Erbe), und diese Art der Überprüfung kann Ihnen wirklich dabei helfen, die Form Ihrer Daten zu verstehen Die Kompromisse, die Sie eingehen, wenn Sie ein Modell wählen, das kleiner als optimal ist.
-1
inglmnet(as.matrix(mtcars[-1]), mtcars[,1])
.