Evalml: Fehler bei Verwendung des Rückrufs als primäres Automl-Ziel

Erstellt am 12. März 2021  ·  4Kommentare  ·  Quelle: alteryx/evalml

Verehrte Gäste,
Bei einem binären Klassifizierungsproblem, bei dem die Kosten von FN höher sind als die Kosten von FP, erhalte ich beim Versuch, den Rückruf als Ziel zu verwenden, die folgende Fehlermeldung:

ValueError: Rückruf ist in AutoML nicht erlaubt! Verwenden Sie evalml.objectives.utils.get_core_objective_names(), um alle in automl zulässigen Zielnamen abzurufen.

Ich bin die erlaubten Namen durchgegangen und kann sehen, dass der Rückruf da ist

Irgendwelche Vorschläge?

Vielen Dank im Voraus
Nikos

Hilfreichster Kommentar

Hallo @npapan69 !

Wir raten davon ab, Recall als primäres Ziel bei der Automl-Suche zu verwenden, da eine triviale Pipeline, die immer die positive Klasse vorhersagt, normalerweise einen perfekten Recall-Score liefert. Automl hat also einen Anreiz, triviale Pipelines zu finden. Siehe Ausgabe #476. Deshalb steht es nicht in unserer Liste der Kernziele, wie der Fehler sagt:

image

Sie können den Rückruf jedoch weiterhin als Automl-Ziel verwenden! Übergeben Sie es einfach als Instanz und nicht als String:

from evalml.demos import load_breast_cancer
from evalml.automl import AutoMLSearch
from evalml.objectives import Recall
X, y = load_breast_cancer()
automl = AutoMLSearch(X, y, problem_type="binary", objective=Recall())

automl.search()

Ausgabe:

image

Alle 4 Kommentare

Hallo @npapan69 !

Wir raten davon ab, Recall als primäres Ziel bei der Automl-Suche zu verwenden, da eine triviale Pipeline, die immer die positive Klasse vorhersagt, normalerweise einen perfekten Recall-Score liefert. Automl hat also einen Anreiz, triviale Pipelines zu finden. Siehe Ausgabe #476. Deshalb steht es nicht in unserer Liste der Kernziele, wie der Fehler sagt:

image

Sie können den Rückruf jedoch weiterhin als Automl-Ziel verwenden! Übergeben Sie es einfach als Instanz und nicht als String:

from evalml.demos import load_breast_cancer
from evalml.automl import AutoMLSearch
from evalml.objectives import Recall
X, y = load_breast_cancer()
automl = AutoMLSearch(X, y, problem_type="binary", objective=Recall())

automl.search()

Ausgabe:

image

Danke @freddyaboulton !

Ich hätte noch einen Vorschlag: Wenn Sie möchten, dass automl weiß, dass die Kosten für falsch positive Ergebnisse bei Ihrem Problem höher sein sollten als die Kosten für falsch negative Ergebnisse, können Sie versuchen, das Ziel CostBenefitMatrix zu verwenden:

import evalml
obj = evalml.objectives.CostBenefitMatrix(true_positive=1.0, true_negative=1.0, false_positive=10.0, false_negative=1.0)
automl = AutoMLSearch(X, y, problem_type="binary", objective=obj)

Vielen Dank für die Einreichung des Problems @npapan69 ! Ich schließe es, da sich @dsherry und @freddyaboulton eingeschaltet haben . Bitte melde dich, wenn du weitere Fragen hast!

Vielen Dank TylerNickolas Papanikolaou, Ph.D.Head of Computational Clinical Imaging GroupChampalimaud FoundationCentre for the UnknownAv. Brasília, Doca de Pedrouços1400-038 Lissabon, PortugalFestnetz: ++351210480073Mobil: ++351969323757Am Do, 18. März 2021 um 17:40 Uhr, Tyler @ . * > schrieb:
Vielen Dank für die Einreichung des Problems @npapan69 ! Ich schließe es, da sich @dsherry und @freddyaboulton eingeschaltet haben . Bitte melde dich, wenn du weitere Fragen hast!

– Sie erhalten dies, weil Sie erwähnt wurden. Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub an oder melden Sie sich ab.
[
{
@ . ": " http://schema.org ",* @ . ": "E-Mail Nachricht",
"potenzielle Aktion": {
@ . ": "Aktion anzeigen","target": " https://github.com/alteryx/evalml/issues/1973#issuecomment -802154198","url": " https://github.com/alteryx/evalml/issues/1973#issuecomment -802154198","name": "Problem anzeigen"},"description": "Dieses Problem auf GitHub anzeigen","Herausgeber": {.* ": "Organisation",
"name": "GitHub",
"url": " https://github.com "
}
}
]

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen