Auswahl des optimalen Alphas in der elastischen Netto-Logistik-Regression


22

Ich führe mithilfe des glmnetPakets in R eine elastisch-net logistische Regression für einen Datensatz im Gesundheitswesen durch, indem ich Lambda-Werte über ein Raster von von 0 bis 1 auswähle . Mein abgekürzter Code lautet wie folgt:α

alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
  cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}

Dies gibt den durchschnittlichen kreuzvalidierten Fehler für jeden Wert von Alpha von bis mit einem Inkrement von :1,0 0,10.01,00,1

[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874

Basierend auf dem, was ich in der Literatur gelesen habe, ist die optimale Wahl von wo der Lebenslauffehler minimiert wird. Die Fehler variieren jedoch stark im Bereich der Alphas. Ich sehe mehrere lokale Minimums mit einem globalen Minimumfehler von für .α0.1942612alpha=0.8

Ist es sicher mit zu gehen alpha=0.8? Oder sollte ich angesichts der Variation cv.glmnetmit mehr Kreuzvalidierungsfalten (z. B. statt ) oder einer größeren Anzahl von Inkrementen zwischen und erneut ausführen , um ein klares Bild des Lebenslauffehlerpfads zu erhalten?10 α2010αalpha=0.01.0


5
Sie sollten sich ein caretPaket ansehen , das einen wiederholten Lebenslauf durchführen und sowohl Alpha als auch Lambda einstellen kann (unterstützt Multicore-Verarbeitung!). Aus dem Gedächtnis denke ich, dass die glmnetDokumentation davon abrät, Alpha so zu optimieren, wie Sie es hier tun. Es wird empfohlen, die Foldiden fest zu halten, wenn der Benutzer zusätzlich zu der von bereitgestellten Lambda-Abstimmung Alpha wählt cv.glmnet.

1
Ah, fand diesen Beitrag hier: stats.stackexchange.com/questions/69638/…
RobertF

2
Vergessen Sie nicht, das Foldid zu korrigieren, wenn Sie einen anderen α
user4581

1
Für die Reproduzierbarkeit, nie lief cv.glmnet()ohne Umweg in foldidseinem bekannten Zufallsstartwert geschaffen.
smci

1
@amoeba werfen Sie einen Blick auf meine Antwort - Eingaben zu den Kompromissen zwischen l1 und l2 sind willkommen!
Xavier Bourret Sicotte

Antworten:


7

Klären, was mit α und Elastic Net-Parametern gemeint ist

Unterschiedliche Terminologie und Parameter werden von verschiedenen Paketen verwendet, die Bedeutung ist jedoch im Allgemeinen gleich:

Das R-Paket Glmnet verwendet die folgende Definition

Mindestβ0,β1Nich=1Nwichl(yich,β0+βTxich)+λ[(1-α)||β||22/2+α||β||1]

Sklearn verwendet

Mindestw12Nich=1N||y-Xw||22+α×l1Verhältnis||w||1+0,5×α×(1-l1Verhältnis)×||w||22

Es gibt auch alternative Parametrisierungen mit und .einb

Um Verwirrung zu vermeiden, werde ich anrufen

  • λ der Strafkraftparameter
  • L1Verhältnis das Verhältnis zwischen der Strafe von und zwischen 0 (Kamm) und 1 (Lasso)L1L2

Visualisierung der Auswirkung der Parameter

Stellen Sie sich einen simulierten Datensatz vor, bei dem aus einer verrauschten Sinuskurve besteht und ein zweidimensionales Merkmal ist, das aus und . Aufgrund der Korrelation zwischen und die Kostenfunktion ein enges Tal.yXX1=xX2=x2X1X2

Die folgenden Grafiken veranschaulichen den Lösungsweg der elastischen Netzregression mit zwei verschiedenen Verhältnisparametern als Funktion von dem Stärkeparameter .L1λ

  • Für beide Simulationen gilt: Wenn ist die Lösung die OLS-Lösung unten rechts mit der zugehörigen talförmigen Kostenfunktion.λ=0
  • Wenn zunimmt, setzt die Regularisierung ein und die Lösung tendiert zuλ(0,0)
  • Der Hauptunterschied zwischen den beiden Simulationen ist der Verhältnisparameter.L1
  • LHS : Für ein kleines Verhältnis die regulierte Kostenfunktion stark der Ridge-Regression mit runden Konturen.L1
  • RHS : Für ein großes Verhältnis die Kostenfunktion stark der Lasso-Regression mit den typischen Diamantformkonturen.L1
  • Für ein mittleres Verhältnis (nicht gezeigt) ist die Kostenfunktion eine Mischung aus beidenL1

Bildbeschreibung hier eingeben


Die Wirkung der Parameter verstehen

Das ElasticNet wurde eingeführt, um einige der Einschränkungen des Lasso zu überwinden:

  • Gibt es mehr Variablen als Datenpunkte , , wählt das Lasso höchstens Variablen aus.pnp>nn
  • Lasso führt keine Gruppenauswahl durch, insbesondere bei Vorhandensein korrelierter Variablen. Es wird dazu tendieren, eine Variable aus einer Gruppe auszuwählen und die anderen zu ignorieren

Durch die Kombination einer und einer quadratischen Strafe erhalten wir die Vorteile von beiden:L1L2

  • L1 erzeugt ein spärliches Modell
  • L2 hebt die Beschränkung der Anzahl der ausgewählten Variablen auf, fördert die Gruppierung und stabilisiert den Regularisierungspfad.L1

Sie können dies visuell im obigen Diagramm sehen, die Singularitäten an den Eckpunkten fördern die Sparsamkeit , während die strengen konvexen Kanten die Gruppierung fördern .

Hier ist eine Visualisierung von Hastie (dem Erfinder von ElasticNet)

Bildbeschreibung hier eingeben

Weitere Lektüre


2

Lassen Sie mich trotz des Alters der Frage einige sehr praktische Bemerkungen hinzufügen. Da ich kein R-Benutzer bin, kann ich keinen Code sprechen lassen, aber es sollte trotzdem verständlich sein.

  1. Normalerweise sollten Sie nur die Hyperparameter (hier: ) mit dem besten CV-Score auswählen . Alternativ können Sie die besten Modelle auswählen und durch arithmetische Mittelung der Entscheidungsfunktion ein Ensemble . Dies erhöht natürlich die Laufzeitkomplexität. Hinweis: Manchmal funktioniert die geometrische Mittelung besser. . Ich nehme an, dass dies auf eine glattere Entscheidungsgrenze zurückzuführen ist.αkf1,...,fkf(x)=1kichfich(x)f(x)=ich=1kfich(x)k

  2. Ein Vorteil des Resamplings ist, dass Sie die Reihenfolge der Testergebnisse überprüfen können. Dies sind die Ergebnisse des Lebenslaufs. Sie sollten immer nicht nur den Durchschnitt betrachten, sondern auch die Standardabweichung (sie ist nicht normalverteilt, aber Sie verhalten sich so). Normalerweise wird dieser Wert aus Genauigkeitsgründen als 65,5% (± 2,57%) angezeigt. Auf diese Weise können Sie feststellen, ob die "kleinen Abweichungen" eher zufällig oder strukturell sind. Besser wäre es sogar, die kompletten Sequenzen zu inspizieren . Wenn es aus irgendeinem Grund immer eine Falte gibt, sollten Sie die Art und Weise, wie Sie Ihre Trennung vornehmen, überdenken (dies deutet auf eine fehlerhafte Versuchsanordnung hin, auch: Mischen Sie?). In scikit-learn the GridSearchCVstores erfahren Sie Details zu den Fold-Anforderungen in cv_results_( siehe hier ).

  3. In Bezug auf das : Je höher es ist, desto mehr hat Ihr elastisches Netz die Sparsity-Funktion. Sie können die Gewichte der resultierenden Modelle überprüfen. Je höher ist, desto mehr wird auf Null gesetzt. Es ist ein nützlicher Trick, die Attribute mit einer auf Null gesetzten Gewichtung aus Ihrer Pipeline zu entfernen (dies verbessert die Laufzeitleistung dramatisch). Ein weiterer Trick besteht darin, das elastische für die Merkmalsauswahl zu verwenden und anschließend eine Variante zu . In der Regel führt dies zu einer dramatischen Steigerung der Modellleistung, da die Wechselbeziehungen zwischen den Features herausgefiltert wurden.αL1αL2

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.