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
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:
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:
objectives/utils.py
OPTIONS
und bestÀtigen Sie, dass diese Ziele in automl nicht zugelassen werden.
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