Was ist aus dieser Lasso-Handlung (glmnet) zu schließen?

19

Es folgt die Darstellung von glmnet mit dem Standard-Alpha (1, daher Lasso) unter Verwendung des mtcarsDatensatzes in R mit mpgals DV und anderen als Prädiktorvariablen.

glmnet(as.matrix(mtcars[-1]), mtcars[,1])

Bildbeschreibung hier eingeben

Was können wir aus dieser Handlung in Bezug auf verschiedene Variablen schließen, vor allem am, cylund wt(rot, schwarz und hellblaue Linien)? Wie würden wir die Ausgabe in einem Bericht formulieren, der veröffentlicht werden soll?

Ich dachte an folgendes:

  1. wtist der wichtigste Prädiktor von mpg. Es wirkt sich negativ auf die mpg.

  2. cylist ein schwacher negativer Prädiktor für mpg.

  3. amkann ein positiver Prädiktor für sein mpg.

  4. Andere Variablen sind keine robusten Prädiktoren für mpg.

Vielen Dank für Ihre Meinung.

(Hinweis: cylIst die schwarze Linie, die erst sehr nahe bei 0 liegt.)

Bearbeiten: Es folgt ein Diagramm (mod, xvar = 'lambda'), das die x-Achse in umgekehrter Reihenfolge zum obigen Diagramm anzeigt:

Bildbeschreibung hier eingeben

(PS: Wenn Sie diese Frage interessant / wichtig finden, stimmen Sie sie bitte hoch;)

rnso
quelle
Es sieht aus wie Sie , bevor Sie ein Komma vergessen -1in glmnet(as.matrix(mtcars[-1]), mtcars[,1]).
Richard Hardy
Wenn kein Komma angegeben wird, geht R davon aus, dass die Nummer die Spaltennummer ist, sodass dies funktioniert.
RNSO
Schön, das habe ich jetzt noch nicht gemacht.
Richard Hardy
2
@RichardHardy sei vorsichtig; Dieses Verhalten unterscheidet sich für Datenrahmen und Matrizen. Ein Datenrahmen ist eine Liste, und jede Spalte ist ein Element dieser Liste, so my_data_frame[1]gibt einen Datenrahmen mit einer Spalte, während my_data_frame[[1]]und my_data_frame[, 1]beide Rückkehr eines Vektor, ist nicht „enthielt“ von einem Datenrahmen. Matrices, jedoch sind tatsächlich nur flach Vektoren mit einem speziellen Attribut , das sie wie ein Gitter R zugreifen können, so my_matrix[1], my_matrix[1, 1]und my_matrix[[1]]wird die ganze erste Rückelement aus my_matrix. my_matrix[, 1] gibt die erste Spalte zurück.
Shadowtalker
2
Ich erwähne nur, dass die plot_glmnet- Funktion im plotmo- Paket etwas bessere Koeffizientendiagramme liefert, da sie sich um das Überzeichnen von Etiketten und einige andere Details kümmert. Beispiele finden Sie in Kapitel 6 in plotres vignette .
Stephen Milborrow

Antworten:

39

λ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_uncorrhaben 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_corrhat 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)

Bildbeschreibung hier eingeben

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)

Bildbeschreibung hier eingeben

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.

Bildbeschreibung hier eingeben

  • Wie Sie sagen, wtscheint 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, aminsbesondere scheint es einen drastischen Effekt zu haben, wenn es eintritt.
  • amist auch wichtig. Es kommt später herein und korreliert damit wt, da es die Neigung von wtauf gewaltsame Weise beeinflusst. Es ist auch korreliert mit carbund 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 cylund erkennen wt.
  • cylist ziemlich faszinierend. Es tritt an zweiter Stelle ein, ist also wichtig für kleine Modelle. Nach anderen Variablen und vor allem nach der amEingabe 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 cylvollständig von den Variablen erfasst werden kann, die am Ende des Prozesses eingegeben werden. Ob die Verwendung cyloder 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 wtund amsind eindeutig, sie wichtig sind. cylist 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, amund cylsind 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.

Matthew Drury
quelle
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?
Rnso
@ rnso Ich habe eine Antwort an meine Antwort angehängt.
Matthew Drury
Vielleicht soll "Erbe" "Sparsamkeit" sein?
Hatschepsut
@Matthew Drury, ich habe ein paar Dinge, über die ich mir nicht sicher bin. Ich wäre dankbar für Ihre Erklärung. # Sie haben geschrieben, "zB wenn die zweiten Prädiktoren eintreten" . ## Wann kann ich sagen, dass diese Prädiktoren wichtig sind oder nicht? ### Wie kann ich das beste Modell für diese Armatur auswählen? Außerdem wird die Legende / Bezeichnung automatisch mit einbezogen. (Ich habe dieses Beispiel in R implementiert)
jeza
5
+6, das habe ich offensichtlich verpasst, als es herauskam. Wirklich gute Arbeit.
gung - Reinstate Monica