Quais são os valores corretos para precisão e recuperação quando os denominadores são iguais a 0?

15

Precisão é definida como:

p = verdadeiros positivos / (verdadeiros positivos + falsos positivos)

Qual é o valor da precisão se (verdadeiros positivos + falsos positivos) = 0? É apenas indefinido?

Mesma pergunta para recall:

r = positivos verdadeiros / (verdadeiros positivos + falsos negativos)

Nesse caso, qual é o valor de recall se (verdadeiros positivos + falsos negativos) = 0?

PS Esta pergunta é muito semelhante à pergunta Quais são os valores corretos para precisão e recall em casos extremos? .

Raffi Khatchadourian
fonte
1
Heh, é até respondido em duplicado; mas vamos chamá-lo de uma boa duplicata.

Respostas:

9

As respostas para a pergunta anterior vinculada também se aplicam aqui.

Se (verdadeiros positivos + falsos negativos) = 0, não há casos positivos nos dados de entrada; portanto, qualquer análise desse caso não possui informações e, portanto, nenhuma conclusão sobre como os casos positivos são tratados. Você deseja N / A ou algo semelhante ao resultado da relação, evitando uma divisão por erro zero

Se (positivos verdadeiros + falsos positivos) = 0, todos os casos foram previstos como negativos: este é um final da curva ROC. Novamente, você deseja reconhecer e relatar essa possibilidade, evitando uma divisão por erro zero .

Henry
fonte
Obrigado Henry pela resposta. Se bem entendi, no primeiro caso, você não deseja reconhecer e relatar o resultado, enquanto no último caso, sim . Isso está correto?
Raffi Khatchadourian 8/03/11
Sim: no caso de não entrada positiva, a precisão não tem sentido; no caso previsto não positivo, você deseja relatar que o teste foi definido como extremamente negativo.
Henry
5

Uma resposta interessante é oferecida aqui: https://github.com/dice-group/gerbil/wiki/Precision,-Recall-and-F1-measure

Os autores das notas de saída do módulo diferentes para precisão e recordação dependendo se verdadeiros positivos, falsos positivos e falsos negativos são todos 0. Se eles são, o resultado é ostensivamente uma boa.

Em alguns casos raros, o cálculo de Precisão ou Recuperação pode causar uma divisão por 0. Quanto à precisão, isso pode acontecer se não houver resultados dentro da resposta de um anotador e, portanto, os positivos positivos e os falsos positivos são 0 Para esses casos especiais, definimos que, se os verdadeiros positivos, falsos positivos e falsos negativos forem 0, a precisão, a recuperação e a medida F1 serão 1. Isso pode ocorrer nos casos em que o padrão-ouro contém um documento sem nenhum valor. anotações e o anotador (corretamente) não retorna anotações. Se os verdadeiros positivos forem 0 e um dos outros dois contadores for maior que 0, a precisão, a rechamada e a medida F1 serão 0.

Não tenho certeza se esse tipo de pontuação seria útil em outras situações fora do caso especial, mas vale a pena pensar um pouco.

shiri
fonte
1

Ao avaliar um classificador em limites altos, a precisão pode (na verdade, na verdade) não ser 1 quando o recall é 0. Geralmente é N / A! Eu acho que há algo errado sobre como as pessoas traçam a curva P / R. Evitar amostras de N / A é um viés no sentido de evitar amostras de singularidade. Eu calculei a precisão média gravada no recall médio ignorando amostras N / A e nunca obtive um classificador começando em 1 para recall 0 para uma rede neural superficial na detecção de objetos. Isso também se aplica às curvas calculadas com os números tp, fp, fn. É muito fácil verificar com papel e lápis com uma única imagem. Por exemplo: Eu tenho um classificador que gera uma única imagem: preds = [.7 .6 .5 .1 .05] truth = [nynny] Ao calcular as matrizes de confusão com os vários limites que temos: tp = [2 1 1 1 0 0], fn = [0 1 1 1 2 2], fp = [3 3 2 1 1 0]. o recall rec = [1 .5 .5 .5 0 0] e a precisão = [.4 .25 1/3 .5 0 NaN]. Não vejo como faria sentido substituir um NaN ou a precisão (@ recall == 0) por 1. 1 deve ser um limite superior, não um valor com o qual substituímos a precisão (@ recall == 0).

Jonathan Blanchette
fonte