So schätzen Sie eine Kalibrierungskurve mit Bootstrap (R)

9

Frage : Ich habe ein Wahrscheinlichkeitsmodell (Bayes'sches Netzwerk) zur Modellierung einer binären Ergebnisvariablen angepasst. Ich möchte ein hochauflösendes Kalibrierungsdiagramm (z. B. Spline) erstellen, das wegen Überanpassung mit Bootstrapping korrigiert wurde. Gibt es ein Standardverfahren zur Berechnung einer solchen Kurve?

Überlegungen : Ich könnte dies leicht mit Zug- / Testaufteilung tun, aber ich würde lieber keine Daten wegwerfen, da ich weniger als 20.000 Proben habe. Also habe ich natürlich über Bootstrapping nachgedacht. Ich weiß, dass eine solche Funktion (Kalibrieren) in Frank Harrells Effektivwertpaket implementiert ist, aber leider wird das von mir verwendete Modell vom Paket nicht unterstützt.

Bonus Frage : Ist es möglich , ein miscalibrated Modell neu zu kalibrieren mit Bootstrapping? Der Grund, warum ich dies frage, ist, dass ich versucht habe, ein Modell von neu zu kalibrieren

  1. Daten im Zug / Test aufteilen
  2. passendes Modell zum Zugset
  3. Modell neu kalibrieren, um das Set zu trainieren (mit einem kubischen Spline)
  4. Kalibrierung am Testgerät auswerten

Die auf die oben beschriebene Weise neu kalibrierten Modelle wurden am Zugsatz perfekt kalibriert, jedoch nicht so sehr am Testsatz, was wahrscheinlich auf eine leichte Überanpassung hinweist. Ich habe auch versucht, das Test-Set weiter aufzuteilen, auf einen Split zu kalibrieren und die Kalibrierung auf den zweiten Split auszuwerten. Ich habe bessere Ergebnisse erzielt (immer noch nicht perfekt kalibriert), aber die Sets wurden ziemlich klein (~ 1000 Proben) und daher war die Kalibrierung unzuverlässig

Gino_JrDataScientist
quelle
1
Ich bin nicht sicher, was in R verfügbar ist, aber Pythons sklearn verfügt über ein hervorragendes Wahrscheinlichkeitskalibrierungsmodul, das Kreuzvalidierung und isotonische / monotone Regression unterstützt, die für eine qualitativ hochwertige Wahrscheinlichkeitskalibrierung von entscheidender Bedeutung sind. Dies könnte ein guter Ort sein, um einige Ideen zu erhalten. scikit-learn.org/stable/modules/calibration.html
olooney
Vielen Dank für Ihre Antwort! Ich bin an R gebunden und nicht besonders daran interessiert, mit zu beginnen reticulate. Ich könnte das Verfahren selbst implementieren, wenn ich es wüsste, aber ich habe es nirgendwo gefunden. Ich hoffe nur, dass Prof. Harrell diese Frage sieht: D
Gino_JrDataScientist
1
Bitte fügen Sie ein (kleines) Datenbeispiel bei, um zu veranschaulichen, wovon Sie sprechen. Vielen Dank.
Jim
Sie sollten sich diese Einführung in das Effektivwertpaket (und seine Kalibrierungsfunktion) in R: r-bloggers.com/introduction-to-the-rms-package
rpatel
Hallo rpatel, danke für den Vorschlag. Ich hatte die Funktion rms :: kalibrieren in meiner ursprünglichen Frage erwähnt und festgestellt, dass sie die von mir verwendete Modellklasse nicht unterstützt. Ich besitze auch Harrells Regressionsmodellierungsstrategien-Buch, kann jedoch keine detaillierte Beschreibung der Funktionsweise der Kalibrierungsfunktion finden.
Gino_JrDataScientist

Antworten:

6

Nachdem ich per E-Mail mit Prof. Frank Harrell gesprochen hatte, entwickelte ich das folgende Verfahren zur Schätzung der optimismuskorrigierten Kalibrierungskurve, das teilweise auf seinem Tutorial in Biostatistik (STATISTICS IN MEDICINE, BAND 15,361-387 (1996)) basiert:

  1. Passen Sie ein Risikoprognosemodell an alle Daten an
  2. p=(0.01,0.02,...,0.99)calapp
  3. Zeichnen Sie ein Bootstrap-Beispiel mit Ersatz, gleiche Größe der Originaldaten
  4. Fit-Risikoprognosemodell auf Bootstrap-Beispiel
  5. calboot
  6. calorig
  7. p
    Optimism(p)=calboot(p)calorig(p)
  8. p
  9. calcorr(p)=calapp(p)<Optimism(p)>

Wichtiger Hinweis : Das obige Verfahren ist von Harrells Arbeit und meiner Diskussion mit ihm inspiriert, aber alle Fehler sind allein meine.

Gino_JrDataScientist
quelle