Wie erstelle ich das endgültige Modell und optimiere den Wahrscheinlichkeitsschwellenwert nach einer verschachtelten Kreuzvalidierung?

17

Erstens, Entschuldigung für das Posten einer Frage, die hier , hier , hier , hier , hier bereits ausführlich besprochen wurde, und zum Aufwärmen eines alten Themas. Ich weiß, dass @DikranMarsupial ausführlich über dieses Thema in Beiträgen und Fachzeitschriften geschrieben hat, aber ich bin immer noch verwirrt, und der Anzahl ähnlicher Beiträge hier nach zu urteilen, fällt es anderen immer noch schwer, es zu verstehen. Ich sollte auch festhalten, dass ich Widerspruch zu diesem Thema erhalten habe, was meine Verwirrung vergrößert hat. Sie sollten auch wissen, dass ich ursprünglich ein Physiker und kein Statistiker bin, weshalb meine Fachkenntnisse hier etwas begrenzt sind. Ich schreibe eine Zeitschrift, in der ich den verschachtelten Lebenslauf verwenden möchte, um die Leistung abzuschätzen, die ich von meinem endgültigen Modell erwarten kann. In meiner Domain ist dies eine Premiere. (Wir verwenden fast nie irgendForm des robusten Lebenslaufs in meinem Bereich, aber lustige Veröffentlichungen mit Ergebnissen aus Studien mit neuronalen Netzen und beschleunigten Entscheidungsbäumen!) Daher ist es sehr wichtig, dass ich ein sehr gründliches und klares Verständnis habe, damit ich nicht falsch mache und mich verbreite ein fehlerhafter vorgang für meine community, der jahrelang verlernen könnte! Vielen Dank! Weiter mit der Frage ...

Wie erstelle ich das endgültige Modell nach einer verschachtelten Kreuzvalidierung?

Ich trainiere ein einfaches Glmnet-Modell mit L1- und L2-Regularisierung. Es ist schnell, einfach und interpretierbar. Ich führe Feature-Centering, Skalierung und Box-Cox-Transformationen durch, um sicherzustellen, dass die Feature-Verteilungen mittelzentriert, standardisiert und etwas gaußartig sind. Ich führe diesen Schritt innerhalb der Kreuzvalidierung durch, um Informationslecks zu vermeiden. Nur weil meine Hardware unglaublich langsam ist und ich keinen Zugriff auf mehr CPU-Muskeln habe, führe ich nach der Feature-Vorverarbeitung auch eine schnelle filterbasierte Feature-Auswahl im CV durch. Ich benutze die Zufallsgittersuche, um die Alpha- und Lambda-Hyperparameter auszuwählen. Ich verstehe, dass ich nicht sollteCV-Schleife, um diese Schätzung zu erhalten. Ich verstehe, dass die innere CV-Schleife für die Modellauswahl verwendet wird (in diesem Fall die optimalen Hyperparameter) und dass die äußere Schleife für die Modellbewertung verwendet wird , dh die innere und die äußere CV dienen zwei verschiedenen Zwecken, die häufig fälschlicherweise in Konflikt stehen. (Wie geht es mir so weit?)

Die Links, die ich gepostet habe, legen nahe, dass "die Methode zur Kreuzvalidierung darin besteht, die Leistung zu schätzen, die mit einer Methode zum Erstellen eines Modells erzielt wird, anstatt die Leistung eines Modells zu schätzen". Wie sollte ich angesichts dessen die Ergebnisse des geschachtelten CV-Verfahrens interpretieren?

Die Ratschläge, die ich gelesen habe, scheinen Folgendes anzuzeigen - bitte korrigieren Sie mich, wenn dies falsch ist: Der innere Lebenslauf ist Teil des Mechanismus, mit dem ich die optimalen Alpha- und Lambda-Hyperparameter meines Glmnet-Modells auswählen kann. Der äußere Lebenslauf gibt die Schätzung an, die ich vom endgültigen Modell erwarten kann, wenn ich die im inneren Lebenslauf verwendete Prozedur genau anwende, einschließlich der Optimierung von Hyperparametern, und den gesamten Datensatz zum Erstellen des endgültigen Modells verwende. Das heißt, die Hyperparameter-Optimierung ist Teil der "Methode zum Erstellen des Modells". Ist das richtig oder nicht? Weil mich das verwirrt. An anderer Stelle habe ich gesehen, dass das Verfahren zum Erstellen des endgültigen Modells, das bereitgestellt werden soll, das Trainieren des gesamten Datensatzes unter Verwendung der festen Werte umfasstder Hyperparameter, die mit CV ausgewählt wurden. In diesem Fall enthält die "Methode zum Erstellen des Modells" keine Optimierung. Also, was ist das? Irgendwann werden die optimalen Hyperparameter für die Erstellung des endgültigen Modells ausgewählt und festgelegt! Wo? Wie? Wenn meine innere Schleife ein 5-facher Lebenslauf ist und meine äußere Schleife ein 5-facher Lebenslauf ist und ich im inneren Lebenslauf beispielsweise 100 Punkte zum Testen als Teil der zufälligen Gittersuche auswähle, wie oft trainiere ich tatsächlich das glmnet Modell? (100 * 5 * 5) + 1 für den endgültigen Build, oder gibt es weitere Schritte, die mir nicht bekannt sind?

Grundsätzlich benötige ich eine sehr klare Beschreibung der Interpretation der Leistungsschätzung aus dem verschachtelten Lebenslauf und der Erstellung des endgültigen Modells.

Ich würde auch gerne wissen, wie der Wahrscheinlichkeitsschwellenwert für die Konvertierung der Wahrscheinlichkeitswerte aus meinem endgültigen Glmnet-Modell in (binäre) Klassenbeschriftungen ausgewählt wird. Wird eine weitere CV-Schleife benötigt?

Andrew John Lowe
quelle

Antworten:

8

Erklärung der verschachtelten Kreuzvalidierung ohne Verschachtelung

Hier ist, wie ich (verschachtelte) Kreuzvalidierung und Modellbildung sehe. Beachten Sie, dass ich Chemiker bin und wie Sie von der Anwendungsseite auf den Modellbauprozess schauen (siehe unten). Mein Hauptpunkt hier ist aus meiner Sicht, dass ich keine dedizierte verschachtelte Vielzahl von Kreuzvalidierungen benötige . Ich benötige eine Validierungsmethode (zB Kreuzvalidierung) und eine Modelltrainingsfunktion:

model = f (training data)

Die "my" -Modelltrainingsfunktion f benötigt keine Hyperparameter, da sie intern die gesamte Hyperparametereinstellung vornimmt (z. B. Ihre alpha,lambda und threshold).

Mit anderen Worten, meine Trainingsfunktion kann eine beliebige Anzahl innerer Kreuzvalidierungen enthalten (oder aus dem Sack oder was auch immer für eine Leistungsschätzung ich für nützlich halte). Beachten Sie jedoch, dass die Unterscheidung zwischen Parametern und Hyperparametern typisch ist , dass die Hyper auf den Datensatz / Anwendung zur Hand abgestimmt werden müssen , während die Parameter können dann unabhängig davon , eingebaut werden , welche Daten es sich handelt. Aus Sicht des Entwicklers eines neuen Klassifizierungsalgorithmus ist es daher sinnvoll, nur die "nackte" Anpassungsfunktion ( g (training data, hyperparameters)) bereitzustellen , die bei gegebenen Daten und Hyperparametern zu den Parametern passt.

Der Vorteil der "äußeren" Trainingsfunktion fbesteht darin, dass Sie nach dem Ausführen der Kreuzvalidierung auf einfache Weise "auf dem gesamten Datensatz" trainieren können: Verwenden Sie einfach f (whole data set)anstelle des Anrufsf (cv split training data) für die Kreuzvalidierung.

So haben Sie in Ihrem Beispiel 5 + 1 Anrufe zu fund jeder der Anrufe zu fhat zB 100 * 5 Anrufe zu g.


Wahrscheinlichkeitsschwelle

Während Sie dies mit einer weiteren Kreuzvalidierung tun könnten, ist dies nicht erforderlich: Es ist nur ein weiterer Hyperparameter, den Ihr gebrauchsfertiges Modell hat und der im Inneren geschätzt werden kann f .

Um dies zu beheben, benötigen Sie eine Heuristik, mit der Sie einen solchen Schwellenwert berechnen können. Es gibt eine Vielzahl von Heuristiken (von ROC bis hin zur Angabe, wie wichtig es ist, falsche Positive im Vergleich zu falschen Negativen bei einer akzeptablen Mindestempfindlichkeit oder -spezifität oder einem PPV oder NPV zu vermeiden, um zwei Schwellenwerte und damit ein "unsicheres" (NA) -Niveau zuzulassen usw.) ), die sich für verschiedene Situationen eignen - gute Heuristiken sind in der Regel sehr anwendungsspezifisch.

Für die hier gestellte Frage können Sie dies jedoch intern tun fund z. B. die Vorhersagen verwenden, die während der inneren Kreuzvalidierung erhalten wurden, um den ROC zu berechnen und dann Ihren Arbeitspunkt / Schwellenwert entsprechend zu finden.


Spezifische Kommentare zu Teilen der Frage

Ich verstehe, dass ich die Leistung aus dem CV, der zur Auswahl der optimalen Hyperparameter verwendet wird, nicht als Schätzung der erwarteten Leistung meines endgültigen Modells angeben sollte (was zu optimistisch wäre), sondern stattdessen eine äußere CV-Schleife einschließen sollte, um diese Schätzung zu erhalten .

Ja. (Obwohl die innere Schätzung Informationen in Bezug auf die äußere Schätzung enthält: Wenn sie viel optimistischer ist als die äußere Schätzung, sind Sie in der Regel überangepasst.)

Ich verstehe, dass die innere CV-Schleife für die Modellauswahl verwendet wird

Eigentlich jede Art von datengesteuerter Modelloptimierung -> dazu gehört auch die Optimierung Ihrer Cutoff-Schwelle.

(in diesem Fall die optimalen Hyperparameter) und dass die äußere Schleife für die Modellbewertung verwendet wird, dh die innere und äußere CV dienen zwei verschiedenen Zwecken, die häufig fälschlicherweise in Konflikt stehen.

Ja.

Das heißt, die Hyperparameter-Optimierung ist Teil der "Methode zum Erstellen des Modells".

Am liebsten sehe ich das auch so: Ich bin Chemiker und sehe das von der Anwendungsseite her so: Für mich ist ein trainiertes / angepasstes Modell ohne die Hyperparameter nicht vollständig, oder genauer gesagt, ein Modell, mit dem ich direkt arbeiten kann Vorhersagen erhalten. Wie Sie bemerken, haben andere Leute eine andere Ansicht (ohne Hyperparametertuning). Nach meiner Erfahrung ist dies häufig bei Menschen der Fall, die neue Modelle entwickeln: Hyperparameter-Tuning ist dann ein "gelöstes Problem" und wird nicht berücksichtigt. (Randbemerkung: Ihre Ansicht, was Kreuzvalidierung in Bezug auf Validierung bewirken kann, unterscheidet sich ebenfalls geringfügig von der Ansicht, was Kreuzvalidierung auf der Anwendungsseite bewirken kann.)

cbeleites unterstützt Monica
quelle