Evalml: RĂŒckruf als Automl-Ziel nicht zulassen

Erstellt am 10. MĂ€rz 2020  Â·  5Kommentare  Â·  Quelle: alteryx/evalml

Problem
Ein Modell, das immer wahr vorhersagt, hat einen perfekten Erinnerungswert. Indem wir automl erlauben, den RĂŒckruf zu optimieren, ermutigen wir es, ein triviales Modell zu erstellen.

Hilfreiche Referenz hier .

Vorschlag
Löschen Sie das RĂŒckrufziel.

Im Allgemeinen sollten wir den Satz von Automl-Zielen auf diejenigen beschrĂ€nken, die wir fĂŒr wertvoll halten und bei denen die Optimierung fĂŒr diese Ziele gute Modelle hervorbringt.

Ich denke, wir sollten auch mehr binĂ€re Klassifizierungsziele hinzufĂŒgen. Nr. 457 enthĂ€lt einen Vorschlag fĂŒr einen, der fĂŒr unausgeglichene Klassen gut sein könnte.

Fragen
*Kann ein Ă€hnliches Argument fĂŒr PrĂ€zision angefĂŒhrt werden? Oder ist es sinnvoll, dies zu optimieren?
*Kann ein Ă€hnliches Argument fĂŒr die Genauigkeit vorgebracht werden (#294)?

@angela97lin @kmax12 FYI

enhancement

Hilfreichster Kommentar

Ich denke, PrÀzision und Genauigkeit sind in dem Sinne in Ordnung, dass sie Ihnen kein triviales Modell geben.

Wir wollen Recall nicht unbedingt als Ziel löschen, es sollte nur nicht in der Automl-Suche dagegen optimiert werden. Zum Beispiel möchte ich vielleicht fĂŒr f1 optimieren, aber dann meine Erinnerungspunktzahl daneben sehen

Alle 5 Kommentare

Ich denke, PrÀzision und Genauigkeit sind in dem Sinne in Ordnung, dass sie Ihnen kein triviales Modell geben.

Wir wollen Recall nicht unbedingt als Ziel löschen, es sollte nur nicht in der Automl-Suche dagegen optimiert werden. Zum Beispiel möchte ich vielleicht fĂŒr f1 optimieren, aber dann meine Erinnerungspunktzahl daneben sehen

@kmax12 Ja, richtig, wir möchten den Code, der den RĂŒckruf berechnet, nicht löschen, und wir möchten die Berechnung des RĂŒckrufs weiterhin als Punktzahl in einer Pipeline unterstĂŒtzen, aber wir möchten dies als unterstĂŒtztes Optimierungsziel in automl verbieten.

Dies erinnert mich an die anhaltende Diskussion um die Plotting-/Info-Methoden fĂŒr binĂ€re Klassifikationen fĂŒr ROC und Konfusionsmatrix (#427, #365). Das sind keine Metriken, fĂŒr die wir in automl optimieren können, und es sind auch keine Einzahl-Scores, aber unter unserer API bestand die einfachste Möglichkeit, sie zu definieren, darin, sie als Instanzen von ObjectiveBase hinzuzufĂŒgen.

Wir haben derzeit eine Reihe von Dingen, die mit Pipelines berechnet werden können:

  1. Vorhersagen
  2. Zielfunktionswerte fĂŒr automl
  3. Scoring-Metriken, nach automl
  4. Plotten von Daten (Beispiel fĂŒr binĂ€re Klassifikation: ROC-Kurve, Konfusionsmatrix)
  5. Feature-Bedeutungen

Ich denke, bis heute haben wir versucht, ObjectiveBase zu verwenden, um 2, 3 und 4 darzustellen. Mit anderen Worten, uns fehlt eine klare API, um Scoring-Methoden und Plot-Methoden zu definieren, getrennt vom Automl-Prozess .

Ich denke, der nÀchste Schritt hier sollte darin bestehen, diese APIs zu entwerfen. Sieht so aus, als hÀtte ich das bereits als #392 abgelegt. Ich werde dieses Ticket so aktualisieren, dass es darauf blockiert wird.

FĂŒr die derzeitige Überarbeitung der Ziel-API haben wir ROC und Confusion Matrix stattdessen nach PlotMetrics verschoben (weniger Designaufwand, dies war der einfachste Weg, diese beiden von den ĂŒbrigen Zielen ohne zu trennen Dinge kaputt machen). Wir haben auch can_optimize_threshold als Attribut fĂŒr BinaryClassificationObjective hinzugefĂŒgt, wenn also fit() mit einem Ziel mit can_optimize_threshold=True aufgerufen wird, dann optimieren wir fĂŒr dieses Ziel, andernfalls optimieren wir fĂŒr Genauigkeit. Gedanken dazu und wie könnte dies mit einigen der hier aufgeworfenen Fragen ĂŒbereinstimmen? WĂ€re es unklar, wenn ein Benutzer bei Recall fit anruft, wir aber stattdessen auf Genauigkeit optimiert haben?

@angela97lin ja, ich denke, dass die Verschiebung von ROC/confusion von ObjectiveBase ein positiver Schritt war! Ich denke, #392 sollte weitergehen. Lassen Sie uns stattdessen das GesprĂ€ch darĂŒber fortsetzen, wie die API auf #392 aktualisiert wird. Auf diese Weise kann dieses Problem nur den RĂŒckruf von Aktualisierungen verfolgen, sobald wir eine Entscheidung darĂŒber getroffen haben, wie wir mit diesem Zeug allgemeiner umgehen.

Ich denke auch, dass die Optimierung der Schwellenwerte fĂŒr die binĂ€re Klassifizierung ein separates Thema ist, und zum GlĂŒck eines, das Ihre laufende Arbeit in # 346 zu 100% behandelt!

Zusammenfassende Diskussion mit @eccabay und @jeremyliweishih vorhin : Optionen, dies zu unterstĂŒtzen, sind:

  • Löschen Sie die RĂŒckrufziele vollstĂ€ndig.
  • Löschen Sie die EintrĂ€ge fĂŒr die RĂŒckrufziele in objectives/utils.py OPTIONS und bestĂ€tigen Sie, dass diese Ziele in automl nicht zugelassen werden.
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen