Evalml: Aktivieren Sie die Schwellenwertabstimmung für die binäre Klassifizierung standardmäßig wieder

Erstellt am 15. Apr. 2020  ·  17Kommentare  ·  Quelle: alteryx/evalml

Wir haben dieses Feature im Feature-Zweig #346 hinzugefügt und dann in #606 zurückgesetzt, weil es predict berechnet und automl verlangsamt hat.

Wir sollten dies standardmäßig wieder aktivieren. Dazu müssten wir die Vorhersageausgabe zwischenspeichern, die derzeit in der Punktzahl berechnet wird. Die langfristige Lösung besteht darin, Vorhersagen mit einem Cache zu speichern (#466), aber kurzfristig sollten wir in der Lage sein, etwas zu tun.

Dies betrifft auch #579, das das Bereinigen des doppelten Codes zwischen den score Methoden der Pipeline-Klassen verfolgt.

enhancement

Alle 17 Kommentare

Das möchte ich nächste Woche mal in Angriff nehmen. Ich habe ein paar verschiedene Methoden zum Caching recherchiert und einiges lokal getestet.

Wir sollten dies nicht tun, bis wir einen Perf-Test-MVP haben

Jetzt, da wir die Perf-Tests MVP haben, sollten wir dies tun! Dies kam als Teil von #1024 auf.

@angela97lin danke! Ja auf jeden Fall.

Der nächste Schritt besteht darin, einen Vorher-Nachher-Leistungsvergleich für einige unserer binären Klassifizierungsprobleme zu erstellen.

Weitere Überlegungen

  • Log-Verlust (Standardziel für Bin-Klasse) und AUC sollten dadurch überhaupt nicht geändert werden, da sie schwellenwertunabhängig sind. Aber andere Metriken wie F1 sollten sich definitiv verbessern. Es wäre schön, sich ein paar anzusehen.
  • Die Fit-Zeit wird einen Hit haben. Die Frage ist, wie schlimm ein Treffer ist? Ich würde nicht mehr als 10-20% erwarten.
  • Wir könnten damit experimentieren, die Größe der Schwellenwertauswahl aufzuteilen. Dies könnte die Holdout-Genauigkeit verbessern, indem eine Über-/Unteranpassung verhindert wird. Eine Erhöhung der Split-Größe für die Schwellenwertabstimmung würde auch die Trainings-Split-Größe verringern, was zu einer schnelleren Anpassungszeit führt

Zukünftige Arbeit

  • Wir haben derzeit keine Sicherheitsvorkehrungen für diese Datengröße. Dies gilt jedoch für das Trainingsset im Allgemeinen, daher sollten wir eine separate Ausgabe einreichen.

In der ursprünglichen Zuschreibung im April sagte ich

wir müssten die Vorhersageausgabe zwischenspeichern, die derzeit in der Punktzahl berechnet wird.

Ich glaube, das gilt nicht mehr, kann ich ignorieren. Dieser Kommentar ist übrig geblieben, bevor wir score umgestaltet haben. Außerdem führen wir die Schwellenwertoptimierung in einem separaten Split durch, sodass nichts zwischengespeichert werden muss. @freddyaboulton Zur Info

@dsherry @ angela97lin ich die ersten Abschnitte der Analyse doc zusammen hier . Können Sie mir Ihre Meinung mitteilen (nur bis zum Abschnitt Experimente lesen - alles andere ist noch ein Platzhalter)?

@freddyaboulton Ich habe gerade ein paar Kommentare hinterlassen. Wir sollten uns auf jeden Fall den Log-Loss ansehen, der zeigen sollte, dass es zumindest im ersten Batch keine Änderung gibt. Ich denke jedoch, wir sollten auch versuchen, für F1 oder etwas anderes zu optimieren, das schwellenempfindlich ist, damit wir den Effekt der Aktivierung des Tunings sehen können.

@freddyaboulton Entschuldigung, ich war verwirrt von den Plots, die von der Vorlage übrig geblieben sind, und ich habe deinen Kommentar nicht gesehen, dass du nur den ersten Teil gelesen hast 🤦‍♂️ Ich mag, was du hast

@freddyaboulton FYI Da Sie ein Dokument gepostet haben, habe ich dieses Problem nach In

@dsherry @angela97lin Ich habe meine Analyse der Datei "datasets_small_0.yaml" abgeschlossen.

Kurz gesagt, die Leistung hat nach der Einstellung des Schwellenwerts tatsächlich abgenommen - könnte es daran liegen, dass wir keine geschichtete Aufteilung verwenden, um den Schwellenwert abzustimmen?

@freddyaboulton ooh, ja, das könnte sein.

Ich habe Ihr Dokument überprüft und Kommentare hinterlassen. Ich mag die neuen Charts und Statistiken. Wir sollten Wege finden, diese wieder zu looking_glass/analysis/ hinzuzufügen, damit wir sie wiederverwenden können. Drücken aber nicht.

Einige Optionen, die mir spontan einfallen:

  • Verwenden Sie eine geschichtete Aufteilung für die Aufteilung der Schwellenwertoptimierung
  • Erzwingen Sie eine Mindestanzahl von Zeilen für die Schwellenwertoptimierungsaufteilung. Wenn dies nicht erreichbar ist, könnte eine Warnung erfolgen und kein Schwellenwert festgelegt werden oder ein Fehler auftreten
  • Verwenden Sie bei kleineren Datensätzen die gesamten Trainingsdaten als Aufteilung der Schwellenwertoptimierung und riskieren Sie eine Überanpassung

Ich denke, wir sollten zuerst versuchen, auf geschichtetes Sampling umzusteigen und zu sehen, was das bewirkt.

Eine andere Möglichkeit wäre, die Aufteilungsgröße von 80 % Training 20 % Schwellenoptimierung auf 50 % Training 50 % Schwellenoptimierung umzustellen. Ich bezweifle, dass dies gut funktionieren würde, aber es ist einfach zu versuchen und wäre interessant zu sehen.

Da @jeremyliweishih #1049 , @freddyaboulton abholt ,

@freddyaboulton du @jeremyliweishih das

@jeremyliweishih @dsherry Bitte nimm es! Die anfängliche Analyse zeigte, dass das einfache Aktivieren der Abstimmung die Punktzahl nicht verbessert. Die Verwendung einer anderen Datenaufteilungsstrategie könnte helfen!

Zurück zum Dev Backlog und nach weiteren Datensplitting-Arbeiten weiter.

@bchen1116 und ich haben darüber gesprochen, und wir halten dies für notwendig für #973

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen