Classificação Multirrótulo: Calculando Medidas de Avaliação Parte 2
Recapitulando
Para quem não se lembra, este é o dataset ilustrativo que estou usando:
Nós já calculamos a matriz de confusão para o rótulo 1. No entanto, como eu quero mostrar o processo completo, nós vamos calcular a matriz de confusão para todos os 5 rótulos de uma única vez. A Figura 3 mostra os rótulos verdadeiros (L) e os preditos (^L):
O que precisamos fazer agora? Ah sim, com certeza já não nos lembramos mais, então, vou colocar aqui um resumo:
1. Verificar o número total de instâncias do conjunto de teste:
Contar o total de linhas do conjunto
2. Calcular o total de instâncias positivas para cada rótulo:
Somar todas as linhas do conjunto que correspondem ao valor 1
3. Calcular o total de instâncias negativas para cada rótulo:
Somar todas as linhas do conjunto que correspondem ao valor 0;
Ou simplesmente subtrair o total de instâncias positivas pelo número total de instâncias do conjunto.
4. Calcular TRUE_1, isto é, verificar quando em cada uma das instâncias, os rótulos verdadeiros são verdadeiros:
TRUE_1 = Se (L = 1), então L’ = 1, senão L’=0
5. Calcular TRUE_0, isto é, verificar quando em cada uma das instâncias, os rótulos verdadeiros não são verdadeiros:
TRUE_0 = Se (L = 0), então L’ = 1, senão L’=0
6. Calcular PRED_1, isto é, verificar quando em cada uma das instâncias, os rótulos preditos são verdadeiros:
PRED_1 = Se (^L = 1), então ^L’ = 1, senão ^L’=0
7. Calcular PRED_0, isto é, verificar quando em cada uma das instâncias, os rótulos preditos não são verdadeiros:
PRED_0 = Se (^L = 0), então ^L’ = 1, senão ^L’=0
8. Calcular o valor total de cada rótulo para TRUE_1, TRUE_0, PRED_1 e PRED_0
9. Calcular os verdadeiros positivos: quando o modelo previu 1 e a resposta correta é 1.
TP = se (PRED_1 e TRUE_1) então L’ = 1, caso contrário L’ = 0
10. Calcular os verdadeiros negativos: quando o modelo previu 0 e a resposta correta é 0.
TN = se (PRED_0 e TRUE_0) então L’ = 1, caso contrário L’ = 0
11. Calcular os falsos positivos: quando o modelo previu 1 e a resposta correta é 0.
FP = se (PRED_1 e TRUE_0) então ^L’ = 1, caso contrário ^L’ = 0
12. Calcular os falsos negativos: quando o modelo previu 0 e a resposta correta é 1.
FN = se (PRED_0 e TRUE_1) então ^L’ = 1, caso contrário ^L’ = 0
13. Calcular os totais para TP, TN, FP e FN.
14. Montar a matriz de confusão.
Bom, agora que relembramos os passos necessários, vamos calcular tudo isso ai. Partiu então!
Montando a matriz de confusão para vários rótulos
Resultado dos Passos 1, 2 e 3:
Resultado dos Passos 4, 5, 6, 7 e 8:
Caso você queira fazer isto no excel, você pode aplicar as seguintes funções:
TRUE_1 = Se (L = 1), então L’ = 1, senão L’=0 → =IF(L=1;1;0)
TRUE_0 = Se (L = 0), então L’ = 1, senão L’=0 → =IF(L=0;1;0)
PRED_1 = Se (^L = 1), então ^L’ = 1, senão ^L’=0 → =IF(^L=1;1;0)
PRED_0 = Se (^L = 0), então ^L’ = 1, senão ^L’=0 → =IF(^L=0;1;0)
Lembrando que onde está L você deve substituir pela célula onde está o valor dos rótulos. Ótimo, agora que temos os valores PRED e TRUE podemos calcular o TN, TP, FN e FP.
Resultado dos Passos 9, 10, 11, 12 e 13:
No Excel fazemos assim:
TP = se (PRED_1 e TRUE_1) então L’ = 1, caso contrário L’ = 0 → =IF(AND(pred_1;true_1);1;0)
TN = se (PRED_0 e TRUE_0) então L’ = 1, caso contrário L’ = 0 → =IF(AND(pred_0;true_0);1;0)
FP = se (PRED_1 e TRUE_0) então ^L’ = 1, caso contrário ^L’ = 0 → =IF(AND(pred_1;true_0);1;0)
FN = se (PRED_0 e TRUE_1) então ^L’ = 1, caso contrário ^L’ = 0 → =IF(AND(pred_0;true_1);1;0)
Pronto, agora temos tudo o que precisamos para construir a matriz de confusão final.
A Figura mostra também a porcentagem! Agora vamos fazer alguns cálculos mais básicos, como:
número de acertos = FP + FN
número de erros = TP + FN
O número de acertos para L1, L2 3 L3 foi de 60%, isto é, acertou 3 de 5, enquanto que para L4 e L5 foi de 40%, isto é, acertou apenas 2 de 3.
A gente observa que o número de erros é maior que o número de acertos para L1 e L3 (80%), enquanto que para L2 é o mesmo valor (60%), e para L4 e L5 esse valor é menor, 20% e 0%. Só por estas informações a gente já consegue ter uma noção de que o desempenho poderia ter sido um pouco melhor. É claro que também podemos calcular os totais por linhas e colunas:
Bem, e assim a gente terminou de montar a matriz de confusão para um dataset multirrótulo. Estou deixando aqui um link para a planilha onde fiz esses cálculos. Sintam-se livres para fazer uma cópia e editar depois.
Termino por aqui! No próximo artigo vamos começar a estudar as medidas de avaliação de desempenho multirrótulo propriamente ditas!!! Te vejo lá hein!
Este artigo foi escrito por Elaine Cecília Gatto - Cissa e publicado originalmente em Prensa.li.