Evalml: Erreur lors de l'utilisation du rappel comme objectif automatique principal

Créé le 12 mars 2021  ·  4Commentaires  ·  Source: alteryx/evalml

Chers tous,
Dans un problème de classification binaire, où le coût de FN est supérieur au coût de FP, lorsque j'essaie d'utiliser le rappel comme objectif, j'obtiens l'erreur suivante :

ValueError : le rappel n'est pas autorisé dans AutoML ! Utilisez evalml.objectives.utils.get_core_objective_names() pour obtenir tous les noms d'objectif autorisés dans automl.

J'ai parcouru les noms autorisés et je peux voir que le rappel est là

Aucune suggestion?

Merci d'avance
Nikos

Commentaire le plus utile

Bonjour @npapan69 !

Nous déconseillons d'utiliser le rappel comme objectif principal dans la recherche automatique, car un pipeline trivial qui prédit toujours la classe positive produira généralement un score de rappel parfait. Ainsi, automl est incité à trouver des pipelines triviaux. Voir le numéro 476. C'est pourquoi il ne figure pas dans notre liste d'objectifs principaux, comme le dit l'erreur :

image

Cependant, vous pouvez toujours utiliser le rappel comme objectif automatique ! Transmettez-le simplement en tant qu'instance plutôt qu'en tant que chaîne :

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()

Sortir:

image

Tous les 4 commentaires

Bonjour @npapan69 !

Nous déconseillons d'utiliser le rappel comme objectif principal dans la recherche automatique, car un pipeline trivial qui prédit toujours la classe positive produira généralement un score de rappel parfait. Ainsi, automl est incité à trouver des pipelines triviaux. Voir le numéro 476. C'est pourquoi il ne figure pas dans notre liste d'objectifs principaux, comme le dit l'erreur :

image

Cependant, vous pouvez toujours utiliser le rappel comme objectif automatique ! Transmettez-le simplement en tant qu'instance plutôt qu'en tant que chaîne :

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()

Sortir:

image

Merci @freddyaboulton !

J'avais une autre suggestion : si vous voulez qu'automl sache que le coût des faux positifs sur votre problème devrait être supérieur au coût des faux négatifs, vous pouvez essayer d'utiliser l'objectif CostBenefitMatrix :

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)

Merci d'avoir signalé le problème @dsherry et @freddyaboulton sont intervenus . Veuillez nous contacter si vous avez des questions supplémentaires !

Merci TylerNickolas Papanikolaou, Ph.D.Head of Computational Clinical Imaging Group Champalimaud FoundationCentre for the UnknownAv. Brasília, Doca de Pedrouços1400-038 Lisbonne, PortugalLigne fixe : ++351210480073Mobile : ++351969323757Le jeu. 18 mars 2021 à 17h40, Tyler @ . * > a écrit :
Merci d'avoir signalé le problème @dsherry et @freddyaboulton sont intervenus . Veuillez nous contacter si vous avez des questions supplémentaires !

—Vous recevez ceci parce que vous avez été mentionné.Répondez directement à cet e-mail, consultez-le sur GitHub ou désabonnez-vous.
[
{
@ . " : " http://schema.org ",* @ . ": "Message électronique",
"action potentielle": {
@ . " : "Afficher l'action","cible": " https://github.com/alteryx/evalml/issues/1973#issuecomment -802154198","url": " https://github.com/alteryx/evalml/issues/1973#issuecomment -802154198","name": "Afficher le problème"},"description": "Afficher ce problème sur GitHub","éditeur": {.* " : "Organisation",
"nom": "GitHub",
"url": " https://github.com "
}
}
]

Cette page vous a été utile?
0 / 5 - 0 notes