Caros,
Em um problema de classificação binária, onde o custo do FN é maior do que o custo do FP, ao tentar usar o recall como um objetivo, recebo o seguinte erro:
ValueError: rechamada não é permitida no AutoML! Use evalml.objectives.utils.get_core_objective_names () para obter todos os nomes de objetivos permitidos em automl.
Eu verifiquei os nomes permitidos e posso ver que me lembro se está lá
Alguma sugestão?
Muito obrigado antecipadamente
Nikos
Olá @ npapan69 !
Nós desencorajamos o uso de recall como um objetivo principal na pesquisa automática porque um pipeline trivial que sempre prevê a classe positiva geralmente produzirá uma pontuação de recall perfeita. Portanto, o automl é incentivado a encontrar pipelines triviais. Veja o problema # 476. É por isso que não está em nossa lista de objetivos principais, como diz o erro:
No entanto, você ainda pode usar o recall como um objetivo automático! Basta passá-lo como uma instância em vez de uma 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()
Saída:
Obrigado @freddyaboulton !
Eu tinha mais uma sugestão: se você deseja que o automl saiba que o custo dos falsos positivos em seu problema deve ser maior do que o custo dos falsos negativos, você pode tentar usar o objetivo 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)
Obrigado por enviar o problema @ npapan69 ! Estou fechando porque @dsherry e @freddyaboulton entraram na conversa. Entre em contato se tiver mais perguntas.
Obrigado TylerNickolas Papanikolaou, Ph.D.Head of Computational Clinical Imaging GroupChampalimaud FoundationCentre for the UnknownAv. Brasília, Doca de Pedrouços1400-038 Lisboa, PortugalLine: ++ 351210480073Mobile: ++ 351969323757Em Qui, 18 Mar 2021 às 17:40, Tyler @ . * > escreveu:
Obrigado por enviar o problema @ npapan69 ! Estou fechando porque @dsherry e @freddyaboulton entraram na conversa. Entre em contato se tiver mais perguntas.
—Você está recebendo isto porque foi mencionado. Responda a este e-mail diretamente, visualize-o no GitHub ou cancele a inscrição.
[
{
@ . ":" http://schema.org ",* @ . ": "Mensagem de email",
"potencialAção": {
@ . ":" ViewAction ","target": " https://github.com/alteryx/evalml/issues/1973#issuecomment -802154198","url": " https://github.com/alteryx/evalml/issues/1973#issuecomment -802154198","name": "Ver problema"},"descrição": "Ver este problema no GitHub","editor": {. * ":" Organização ",
"nome": "GitHub",
"url": " https://github.com "
}
}
]
Comentários muito úteis
Olá @ npapan69 !
Nós desencorajamos o uso de recall como um objetivo principal na pesquisa automática porque um pipeline trivial que sempre prevê a classe positiva geralmente produzirá uma pontuação de recall perfeita. Portanto, o automl é incentivado a encontrar pipelines triviais. Veja o problema # 476. É por isso que não está em nossa lista de objetivos principais, como diz o erro:
No entanto, você ainda pode usar o recall como um objetivo automático! Basta passá-lo como uma instância em vez de uma string:
Saída: