Por que a precisão não é a melhor medida para avaliar modelos de classificação?


107

Essa é uma pergunta geral que foi feita indiretamente várias vezes aqui, mas falta uma única resposta autoritativa. Seria ótimo ter uma resposta detalhada para isso para referência.

A precisão , a proporção de classificações corretas entre todas as classificações, é uma medida muito simples e muito "intuitiva", mas pode ser uma medida ruim para dados desequilibrados . Por que nossa intuição nos desorienta aqui e há outros problemas com essa medida?

Respostas:


112

A maioria das outras respostas se concentra no exemplo de classes desequilibradas. Sim, isso é importante. No entanto, argumento que a precisão é problemática, mesmo com classes equilibradas.

Frank Harrell escreveu sobre isso em seu blog: Classificação vs. Previsão e Danos Causados ​​pela Precisão da Classificação e Outras Regras Descontínuas de Pontuação de Precisão Imprópria .

Essencialmente, o argumento dele é que o componente estatístico do seu exercício termina quando você gera uma probabilidade para cada classe da sua nova amostra. Mapeamento dessas probabilidades previstas a uma classificação 0-1, pela escolha de um limiar além do qual você classificar uma nova observação como 1 vs 0 não faz parte das estatísticas mais . Faz parte do componente de decisão . E aqui, você precisa da saída probabilística do seu modelo - mas também de considerações como:(p^,1p^)

  • Quais são as consequências de decidir tratar uma nova observação como classe 1 vs. 0? Então, envio um email de marketing barato para todos os 1s? Ou aplico um tratamento invasivo contra o câncer com grandes efeitos colaterais?
  • Quais são as consequências de tratar um 0 "verdadeiro" como 1 e vice-versa? Vou marcar um cliente? Submeter alguém a tratamento médico desnecessário?
  • Minhas "aulas" são realmente discretas? Ou existe realmente um continuum (por exemplo, pressão arterial), em que os limiares clínicos são, na realidade, apenas atalhos cognitivos? Em caso afirmativo, a que ponto estou além do limite que estou "classificando" agora?
  • Ou uma probabilidade baixa mas positiva de ser da classe 1 realmente significa "obter mais dados", "executar outro teste"?

Dependendo das consequências da sua decisão, você usará um limite diferente para tomar a decisão. Se a ação for cirurgia invasiva, você precisará de uma probabilidade muito maior de classificar o paciente como sofrendo de algo do que se a ação for recomendar duas aspirinas. Ou você pode até ter três decisões diferentes, embora haja apenas duas classes (doente versus saudável): "vá para casa e não se preocupe" vs. "faça outro teste porque o que temos é inconclusivo" versus "opere imediatamente" .

A maneira correta de avaliar as probabilidades previstas não é compará-las com um limite, mapeá-las para base no limite e depois avaliar a transformação classificação. Em vez disso, deve-se usar adequadas . Essas são funções de perda que mapeiam as probabilidades previstas e os resultados observados correspondentes aos valores de perda, que são minimizados na expectativa pelas probabilidades reais . A idéia é que tomemos a média sobre a regra de pontuação avaliada em vários (melhores: muitos) resultados observados e as correspondentes probabilidades previstas de associação de classe, como uma estimativa da expectativa da regra de pontuação.(p^,1p^)( 0 , 1 ) ( 0 , 1 ) ( p , 1 - p )(0,1)(0,1)(p,1p)

Observe que "adequado" aqui tem um significado definido com precisão - existem regras de pontuação inadequadas , bem como regras de pontuação adequadas e, finalmente, regras de pontuação estritamente adequadas . As regras de pontuação são funções de perda de densidades e resultados preditivos. Regras de pontuação adequadas são regras de pontuação que são minimizadas em expectativa se a densidade preditiva for a densidade real. Regras de pontuação estritamente apropriadas são regras de pontuação que são minimizadas apenas na expectativa se a densidade preditiva for a densidade real.

Como observa Frank Harrell , a precisão é uma regra de pontuação inadequada. (Mais precisamente, a precisão nem sequer é uma regra de pontuação : veja minha resposta para A precisão é uma regra de pontuação imprópria em uma configuração de classificação binária? ) Isso pode ser visto, por exemplo, se não temos preditores e apenas um toque uma moeda injusta com probabilidades . A precisão é maximizada se classificarmos tudo como primeira classe e ignorarmos completamente a probabilidade de 40% de qualquer resultado na segunda classe. (Aqui vemos que a precisão é problemática mesmo para classes equilibradas.) apropriadas preferem uma previsão à(0.6,0.4)( 0,6 , 0,4 ) ( 1 , 0 )(0.6,0.4)(1,0) um em expectativa. Em particular, a precisão é descontínua no limite: movê-lo um pouquinho pode fazer uma (ou várias) previsões mudar de classe e alterar toda a precisão em um valor discreto. Isso faz pouco sentido.

Mais informações podem ser encontradas nos dois posts de Frank vinculados acima, bem como no Capítulo 10 das Estratégias de modelagem de regressão de Frank Harrell .

(Isso é vergonhosamente extraído de uma resposta anterior .)


EDITAR. Minha resposta ao Exemplo, ao usar a precisão como uma medida de resultado, levará a uma conclusão errada, dando um exemplo esperançosamente ilustrativo, em que maximizar a precisão pode levar a decisões erradas, mesmo para classes equilibradas .


6
O argumento de Tim Frank (que ele discutiu em várias respostas em nosso site e em outros lugares), como eu o entendo, é que, se um algoritmo de classificação não retornar probabilidades, será um lixo e não deve ser usado. Para ser honesto, a maioria dos algoritmos comumente usados ​​retorna probabilidades.
Ameba

6
Eu diria que um algoritmo que leva observações passadas e gera apenas classificações sem levar em consideração os pontos acima (por exemplo, custos de decisões erradas) conflita o aspecto estatístico e o aspecto da decisão. É como alguém recomendando um tipo específico de carro para você sem antes perguntar se você deseja transportar um time de beisebol da liga, um monte de materiais de construção ou apenas você mesmo. Então, eu também diria que esse algoritmo seria lixo.
precisa saber é o seguinte

8
Eu ia escrever uma resposta, mas não precisava. Bravo. Discuto isso com meus alunos como uma "separação de preocupações" entre modelagem estatística e tomada de decisão. Esse tipo de conceito está profundamente enraizado na cultura de engenharia.
Matthew Drury

8
@chainD: se o seu classificador (lembre-se, é o de maior precisão ) diz que "todos os participantes são saudáveis", que médico ou analista acreditaria que há mais na história? Concordo que, no final, é um pedido do analista, mas "todo mundo está saudável" é muito menos útil para o analista do que algo que chama a atenção para a incerteza residual, como a previsão de 95% / 5%.
Stephan Kolassa

11
A resposta e os comentários de @StephanKolassa são excelentes. Alguém comentou que havia uma diferença em como isso é visto, dependendo de qual cultura você faz parte. Este não é realmente o caso; é que alguns campos se preocuparam em entender a literatura e outros não. Previsão do tempo, por exemplo, tem estado na vanguarda e tem usado regras de pontuação apropriados para avaliar a precisão meteorologista pelo menos desde 1951.
Frank Harrell

78

Quando usamos a precisão, atribuímos custo igual a falsos positivos e falsos negativos. Quando esse conjunto de dados é desequilibrado - digamos, possui 99% de instâncias em uma classe e apenas 1% na outra - existe uma ótima maneira de reduzir o custo. Preveja que cada instância pertence à classe majoritária, obtenha precisão de 99% e volte para casa mais cedo.

O problema começa quando os custos reais que atribuímos a cada erro não são iguais. Se lidarmos com uma doença rara, mas fatal, o custo de não diagnosticar a doença de uma pessoa doente é muito maior do que o custo de enviar uma pessoa saudável para mais testes.

Em geral, não existe uma melhor medida geral. A melhor medida é derivada de suas necessidades. Em certo sentido, não é uma questão de aprendizado de máquina, mas uma questão de negócios. É comum que duas pessoas usem o mesmo conjunto de dados, mas escolham métricas diferentes devido a objetivos diferentes.

A precisão é uma ótima métrica. Na verdade, a maioria das métricas é ótima e eu gosto de avaliar muitas métricas. No entanto, em algum momento, você precisará decidir entre usar o modelo A ou B. Lá, você deve usar uma única métrica que melhor se adapte às suas necessidades.

Para crédito extra, escolha essa métrica antes da análise, para que você não se distraia ao tomar a decisão.


3
Ótima resposta - propus algumas edições apenas para tornar o argumento mais claro para iniciantes no aprendizado de máquina (para quem essa pergunta é direcionada).
Nekomatic

1
Eu discordo que não é um problema de aprendizado de máquina. Mas resolvê-lo envolveria aprendizado de máquina sobre o meta problema e exigiria que a máquina tivesse acesso a algum tipo de dados além das informações básicas de classificação.
Shufflepants

3
Não o vejo como uma função apenas dos dados, pois diferentes objetivos podem gerar diferentes custos / modelos / desempenho / métricas. Concordo que, em geral, a questão do custo pode ser tratada matematicamente. No entanto, questões como o custo do tratamento de pacientes dependem de informações totalmente diferentes. Essas informações necessárias para os metadados geralmente não são adequadas para a metodologia de aprendizado de máquina; portanto, na maioria das vezes, elas são tratadas com métodos diferentes.
DaL

2
Por "diagnosticar mal uma pessoa com a doença", você quer dizer "diagnosticar mal uma pessoa que tem a doença (por não ter a doença)", certo? Porque essa frase pode ser interpretada de qualquer maneira.
quer

Você está certo, Tanner. Mudei o teste para torná-lo mais claro.
dal

20

O problema com precisão

A precisão padrão é definida como a proporção de classificações corretas para o número de classificações feitas.

accuracy:=correct classificationsnumber of classifications

Portanto, é uma medida geral de todas as classes e, como veremos em breve, não é uma boa medida diferenciar um oráculo de um teste útil real. Um oráculo é uma função de classificação que retorna uma estimativa aleatória para cada amostra. Da mesma forma, queremos poder avaliar o desempenho da classificação de nossa função de classificação. Precisão \ textit {pode} ser uma medida útil se tivermos a mesma quantidade de amostras por classe, mas se tivermos um conjunto desequilibrado de precisão, as amostras não serão úteis. Ainda mais, um teste pode ter uma alta precisão, mas na verdade tem um desempenho pior do que um teste com uma menor precisão.

Se tivermos uma distribuição de amostras de tal forma que 90 \% das amostras pertencem à classe , 5 \% pertencem a e outros 5 \% pertencem a , a seguinte função de classificação terá uma precisão de :ABC0.9

classify(sample):={Aif 

No entanto, é óbvio, dado que sabemos como a funciona, que isso não pode diferenciar as classes. Da mesma forma, podemos construir uma função de classificaçãoclassify

classify(sample):=guess{Awith p =0.96Bwith p =0.02Cwith p =0.02

que tem uma precisão de e nem sempre irá prever mas ainda assim, já que sabemos como a funciona, é óbvio que não pode distinguir as classes. A precisão, neste caso, apenas nos diz quão boa é a nossa função de classificação na adivinhação. Isso significa que a precisão não é uma boa medida para diferenciar um oráculo de um teste útil.0.960.9+0.020.052=0.866Aclassify

Precisão por Classe

Podemos calcular a precisão individualmente por classe, fornecendo à nossa função de classificação apenas amostras da mesma classe, lembrar e contar o número de classificações corretas e incorretas e depois calcular a . Repetimos isso para todas as aulas. Se tivermos uma função de classificação que possa reconhecer com precisão classe mas produzirá um palpite aleatório para as outras classes, isso resultará em uma precisão de para e uma precisão deaccuracy:=correct/(correct+incorrect)A1.00A0.33para as outras classes. Isso já nos fornece uma maneira muito melhor de julgar o desempenho de nossa função de classificação. Um oráculo sempre adivinhando a mesma classe produzirá uma precisão por classe de para essa classe, mas para a outra classe. Se o nosso teste for útil, todas as precisões por classe devem ser . Caso contrário, nosso teste não é melhor que o acaso. No entanto, a precisão por classe não leva em conta os falsos positivos. Embora nossa função de classificação tenha uma precisão de 100 \% para a classe , também haverá falsos positivos para (como um classificado incorretamente como ).1.000.00>0.5AABA

Sensibilidade e especificidade

Nos exames médicos, a sensibilidade é definida como a razão entre as pessoas corretamente identificadas como portadoras da doença e a quantidade de pessoas que realmente têm a doença. Especificidade é definida como a razão entre as pessoas corretamente identificadas como saudáveis ​​e a quantidade de pessoas que são realmente saudáveis. A quantidade de pessoas que realmente têm a doença é a quantidade de resultados positivos verdadeiros mais a quantidade de resultados falsos negativos. A quantidade de pessoas realmente saudáveis ​​é a quantidade de resultados negativos reais, mais a quantidade de resultados positivos falsos.

Classificação binária

Nos problemas de classificação binária, existem duas classes e . refere-se ao número de amostras que foram corretamente identificadas como pertencentes à classe e refere-se ao número de amostras que foram falsamente identificadas como pertencentes à classe . Nesse caso, sensibilidade e especificidade são definidas da seguinte maneira:PNTnnFnn

sensitivity:=TPTP+FNspecificity:=TNTN+FP

TP sendo os verdadeiros positivos sendo os falsos negativos, sendo os verdadeiros negativos e sendo os falsos positivos . No entanto, pensar em termos de negativos e positivos é bom para exames médicos, mas, para obter uma melhor intuição, não devemos pensar em termos de negativos e positivos, mas nas classes genéricas e . Então, podemos dizer que a quantidade de amostras corretamente identificadas como pertencentes a é e a quantidade de amostras que realmente pertencem a éFNTNFPαβαTααTα+Fβ. A quantidade de amostras corretamente identificadas como não pertencentes a é e a quantidade de amostras realmente não pertencentes a é . Isso nos dá a sensibilidade e a especificidade para mas também podemos aplicar a mesma coisa à classe . A quantidade de amostras corretamente identificadas como pertencentes a é e a quantidade de amostras realmente pertencentes a é . A quantidade de amostras corretamente identificadas como não pertencentes a éαTβαTβ+FααββTββTβ+FαβTαe a quantidade de amostras realmente não pertencentes a é . Temos assim uma sensibilidade e especificidade por classe:βTα+Fβ

sensitivityα:=TαTα+Fβspecificityα:=TβTβ+Fαsensitivityβ:=TβTβ+Fαspecificityβ:=TαTα+Fβ

No entanto, observamos que a e a . Isso significa que, se tivermos apenas duas classes, não precisaremos de sensibilidade e especificidade por classe.sensitivityα=specificityβspecificityα=sensitivityβ

Classificação N-ária

A sensibilidade e a especificidade por classe não são úteis se tivermos apenas duas classes, mas podemos estendê-lo para várias classes. Sensibilidade e especificidade são definidas como:

sensitivity:=true positivestrue positives+false negativesspecificity:=true negativestrue negatives+false-positives

Os verdadeiros positivos são simplesmente , os falsos negativos são simplesmente e os falsos positivos são simplesmente . Encontrar os verdadeiros negativos é muito mais difícil, mas podemos dizer que, se classificarmos corretamente algo como pertencente a uma classe diferente de será considerado um verdadeiro negativo. Isso significa que temos pelo menos negativos verdadeiros. No entanto, isso não é tudo verdadeiros negativos. Todas as classificações erradas para uma classe diferente de também são negativas verdadeiras, porque não foram corretamente identificadas como pertencentes a . Tni(Fn,i)i(Fi,n)ni(Ti)T(n)nni(k(Fi,k))representa todas as classificações erradas. A partir disso, temos que subtrair os casos em que a classe de entrada era o que significa que devemos subtrair os falsos negativos para que é mas também precisamos subtrair os falsos positivos para porque eles são falsos positivos e não verdadeiros negativos, temos que subtrair finalmente obtendo . Como resumo, temos:nni(Fn,i)ni(Fi,n)i(Ti)T(n)+i(k(Fn,i))i(Fn,i)i(Fi,n)

true positives:=Tntrue negatives:=i(Ti)T(n)+i(k(Fn,i))i(Fn,i)i(Fi,n)false positives:=i(Fi,n)false negatives:=i(Fn,i)

sensitivity(n):=TnTn+i(Fn,i)specificity(n):=i(Ti)Tn+i(k(Fi,k))i(Fn,i)i(Fi,n)i(Ti)Tn+i(k(Fi,k))i(Fn,i)

Apresentando Confiança

Definimos uma que é uma medida da confiança que podemos ter com a resposta correta de nossa função de classificação. são todos os casos em que a função de classificação respondeu com mas apenas deles estão corretos. Definimos assimconfidenceTn+i(Fi,n)nTn

confidence(n):=TnTn+i(Fi,n)

Mas podemos também definir uma que é uma medida de quão confiantes podemos ser que, se nossa função de classificação responder com uma classe diferente de que na verdade não era um ?confidencenn

Bem, temos todos os quais estão corretos, exceto . Assim, definimosi(k(Fi,k))i(Fi,n)+i(Ti)Tni(Fn,i)

confidence(n)=i(k(Fi,k))i(Fi,n)+i(Ti)Tni(Fn,i)i(k(Fi,k))i(Fi,n)+i(Ti)Tn


Você pode fornecer qualquer exemplo de cálculo da precisão média usando a matriz de confusão.
Aadnan Farooq Um

Você pode encontrar uma descrição mais detalhada com exemplos aqui: mroman.ch/guides/sensspec.html
mroman

Ao ler novamente, há um erro na definição de confidence_false. Estou surpreso que ninguém tenha percebido isso. Eu vou consertar isso nos próximos dias.
mroman 27/09/18

8

Classes desequilibradas no seu conjunto de dados

Para ser breve: imagine, 99% de uma classe (digamos maçãs) e 1% de outra classe estão no seu conjunto de dados (digamos bananas). Meu algoritmo super duper obtém uma precisão de 99% surpreendente para esse conjunto de dados, confira:

return "it's an apple"

Ele estará certo 99% das vezes e, portanto, obtém uma precisão de 99%. Posso vender meu algoritmo?

Solução: não use uma medida absoluta (precisão), mas uma medida relativa a cada classe (há muito por aí, como ROC AUC)


Não, a AUC também não é apropriada para um conjunto de dados desequilibrado.
SiXUlm

@SiXUlm, você pode elaborar isso?
Mayou36

AUC é a área sob a curva ROC. A curva ROC é o gráfico de TPR vs FPR. Agora, no cenário bayesiano, o desequilíbrio é o ímpar da probabilidade anterior: . O TPR pode ser visto como e o FPR pode ser visto como . A probabilidade anterior não tem nada a ver com a probabilidade. P ( T | D ) P ( F | D C )P(D)/P(DC)P(T|D)P(F|DC)
SiXUlm

Uma ilustração mais clara pode ser encontrada aqui: quora.com/… . Dê uma olhada na resposta de Jerry Ma.
SiXUlm

Eu ainda não entendo o seu ponto. Não é isso (incluindo o Quora) o que estou dizendo na solução e exatamente apoiando minha resposta? O ponto é que os anteriores não devem afetar a métrica que mede o desempenho da rede. O que é apropriado depende inteiramente do seu problema, por exemplo, o melhor é otimizar para cada corte possível . Então, deixe-me saber: a) uma vez que é invariável aos anteriores, mas sensível ao desempenho, por que isso é inapropriado? b) o que mais você acha que é apropriado ou que características é necessária?
Mayou36

2

A resposta da DaL é exatamente isso. Vou ilustrá-lo com um exemplo muito simples sobre ... vender ovos.

Você é dono de uma loja de ovos e cada ovo que você vende gera uma receita líquida de dólares. Cada cliente que entra na loja pode comprar um ovo ou sair sem comprar nenhum. Para alguns clientes, você pode optar por fazer um desconto e obterá apenas dólar de receita, mas o cliente sempre comprará.121

Você conecta uma webcam que analisa o comportamento do cliente com recursos como "cheira os ovos", "segura um livro com receitas de omelete" ... e os classifica em "quer comprar a dólares" (positivo) e "quer comprar apenas a dólar "(negativo) antes de ele sair.121

Se o seu classificador não se enganar, você obtém a receita máxima que pode esperar. Se não for perfeito, então:

  • para cada falso positivo, você perde dólar porque o cliente sai e você não tentou obter um desconto bem-sucedido1
  • para cada falso negativo, você perde dólar porque faz um desconto inútil1

Então, a precisão do seu classificador é exatamente o quão perto você está da receita máxima. É a medida perfeita.

Mas agora se o desconto é de dólar. Os custos são:a

  • falso positivo:a
  • falso negativo:2a

Então você precisa de uma precisão ponderada com esses números como uma medida de eficiência do classificador. Se por exemplo, a medida é totalmente diferente. Essa situação provavelmente está relacionada a dados desequilibrados: poucos clientes estão prontos para pagar , enquanto a maioria pagaria . Você não se importa em obter muitos falsos positivos para obter mais alguns positivos verdadeiros. Você pode ajustar o limite do classificador de acordo com isso.2 0,001a=0.00120.001

Se o classificador for sobre a localização de documentos relevantes em um banco de dados, por exemplo, você poderá comparar "quanto" a perda de tempo lendo um documento irrelevante é comparada à localização de um documento relevante.


1

A precisão da classificação é o número de previsões corretas dividido pelo número total de previsões.

A precisão pode ser enganosa. Por exemplo, em um problema em que há um grande desequilíbrio de classe, um modelo pode prever o valor da classe majoritária para todas as previsões e obter uma alta precisão de classificação. Portanto, são necessárias medidas de desempenho adicionais, como a pontuação F1 e a pontuação Brier.


-3

Você pode ver a precisão como o da classificação: uma métrica inicialmente atraente com a qual comparar modelos, que fica aquém de um exame detalhado.R2

Nos dois casos, o excesso de ajuste pode ser um grande problema. Assim como no caso de um alto, pode significar que você está modelando o ruído em vez do sinal, uma alta precisão pode ser uma bandeira vermelha aplicada pelo seu modelo com muita rigidez ao conjunto de dados de teste e não tem aplicabilidade geral. Isso é especialmente problemático quando você tem categorias de classificação altamente desequilibradas. O modelo mais preciso pode ser trivial, classificando todos os dados como uma categoria (com precisão igual à proporção da categoria mais frequente), mas essa precisão cairá de maneira espetacular se você precisar classificar um conjunto de dados com uma distribuição verdadeira diferente de categorias .R2

Como outros observaram, outro problema de precisão é uma indiferença implícita ao preço do fracasso - ou seja, uma suposição de que todas as classificações incorretas são iguais. Na prática, eles não são, e os custos para obter a classificação errada dependem muito do assunto e você pode preferir minimizar um tipo específico de erro do que maximizar a precisão.


2
Cantarolar. (1) Eu suporia que avaliar a precisão ou qualquer outra métrica fora da amostra seria entendido; portanto, não vejo realmente como a precisão tem mais um problema específico de super adaptação . (2) se você aplicar um modelo treinado na população A a uma população diferente B, estará comparando maçãs com laranjas e, novamente, não vejo como esse é um problema específico de precisão .
amigos estão dizendo sobre stephen kassassa

(1) No entanto, é um problema de precisão, e a pergunta é sobre o uso da precisão como padrão-ouro. (2) O objetivo de construir um classificador é usá-lo nas laranjas, não apenas nas maçãs. Deve ser geral o suficiente para capturar os sinais essenciais nos dados (de maneira que eles existam), em vez de ser um catecismo para os dados de treinamento.
James
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.