Ich führe mithilfe des glmnet
Pakets 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,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.1942612
alpha=0.8
Ist es sicher mit zu gehen alpha=0.8
? Oder sollte ich angesichts der Variation cv.glmnet
mit 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 αalpha=0.0
1.0
caret
Paket 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 dieglmnet
Dokumentation 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ähltcv.glmnet
.cv.glmnet()
ohne Umweg infoldids
einem bekannten Zufallsstartwert geschaffen.Antworten:
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
Sklearn verwendet
Es gibt auch alternative Parametrisierungen mit und .ein b
Um Verwirrung zu vermeiden, werde ich anrufen
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.y X X1= x X2= x2 X1 X2
Die folgenden Grafiken veranschaulichen den Lösungsweg der elastischen Netzregression mit zwei verschiedenen Verhältnisparametern als Funktion von dem Stärkeparameter .L1 λ
Die Wirkung der Parameter verstehen
Das ElasticNet wurde eingeführt, um einige der Einschränkungen des Lasso zu überwinden:
Durch die Kombination einer und einer quadratischen Strafe erhalten wir die Vorteile von beiden:L1 L2
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)
Weitere Lektüre
quelle
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.
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.α k f1, . . . , fk f( x ) = 1k∑ichfich( x ) f( x ) = ∏ki = 1fich( x )--------√k
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
GridSearchCV
stores erfahren Sie Details zu den Fold-Anforderungen incv_results_
( siehe hier ).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
quelle