Classificação Multirrótulo: Calculando Similaridades entre Rótulos - Parte 1
Olá pessoal!!!!! Estou retornando aqui na Prensa com um mais uma pequena série de artigos na área de Classificação Multirrótulo. Desta vez nós vamos estudar um pouco mais sobre as relações entre os rótulos usando especificamente medidas de similaridade já conhecidas. Digo isto pois existem outras formas de encontramos essas relações e correlações, mas nesta série focarei nas similaridades. Então, vamos começar?
Vamos falar um pouco dos conceitos envolvendo os cálculos de similaridade. Pra falar a verdade, não existe medidas de similaridade específico para classificação multirrótulo, o que fazemos é ajustar medidas existentes para o caso.
O que existe são as medidas de similaridade para dados categóricos, ou dados binários, isto é, zeros e uns. Para facilitar nosso entendimento, vamos realizar os cálculos usando um dataset de exemplo (Figura 1), que será o mesmo que eu usei na série de artigos "Classificação Multirrótulo: calculando medidas de Avaliação".
Figura1: Dataset Ilustrativo
As medidas de similaridade podem ser calculadas a partir uma Tabela de Contingência, conforme a Figura 2 mostra. Basicamente é uma tabela que conta a frequência de pares de rótulos. Como temos vários rótulos em nosso dataset, então temos que calculcar uma tabela dessa para cada combinação. Em nosso exemplo temos 5 rótulos: L1, L2, L3 e L4. Então, temos que calcular a tabela de contingência para todos os pares de rótulos possíveis desse conjunto.
Figura 2: Tabela de Contingência
Então, vamos entender o que significa cada uma dessas letrinhas que compoem a tabela.
a = ((Rótulo i == 1) E (Rótulo j == 1))
É a proporção de uns (1) que os rótulos i e j compartilham nas mesmas posições. Também podemos dizer que são os encontros positivos entre os dois rótulos em questão, pois os dois estão presentes. Exemplificando, ((L1 = 1) E (L2 = 1)) na instância x1? Não, esses dois rótulos não ocorrem juntos e, portanto é contabilizado zero para esta situação. Não se preocupem, depois vou mostrar como fazer isso em uma planilha do excel para facilitar.
b = ((Rótulo i == 0) E (Rótulo j == 1))
É a roporção de uns (1) no primeiro rótulo e zeros (0) no segundo rótulo nas mesmas posições. Aqui podemos dizer que o Rótulo i está presente e o Rótulo j ausente.
c = ((Rótulo i == 1) E (Rótulo j == 0))
É a proporção de zeros (0) no primeiro rótulo e uns (1) no segundo rótulo nas mesmas posições. Também podemos entender que o Rótulo i está ausente e o Rótulo j presente.
d = ((Rótulo i == 0) E (Rótulo j == 0))
É a proporção de zeros (0) que ambas os rótulos compartilham nas mesmas posições. Neste caso, temos que nem Rótulo i e nem Rótulo j estão presentes, portanto, são os encontros negativos.
Ainda a partir da tabela de contingência podemos calcular as probabilidades marginais:
1) Soma das Linhas
p1 = a + b: onde a representa 11 e b representa 10 na tabela
p2 = c + d: onde a representa 01 e b representa 00 na tabela
2) Soma das Colunas
p3 = a + c: onde a representa 11 e b representa 01 na tabela
p4 = b + d: onde a representa 10 e b representa 00 na tabela
3) Soma das Diagonais
p5 = a + d: onde a representa 11 e b representa 00 na tabela
p6 = b + c: onde a representa 10 e b representa 01 na tabela
Vamos fazer agora as contas no excel. Primeiro vamos verificar se os rótulos são iguais a um. Para isso podemos usar a fórmula =SE(célula=1;1;0), isto é, se a célula que tem o valor do rótulo for igual a 1, então o resultado será 1 (verdadeiro), caso contrário zero (falso).
Figura 3: Os rótulos são iguais a um?
Agora verificamos se são iguais a zero. Para isso podemos usar a fórmula =SE(célula=0;1;0), isto é, se a célula que tem o valor do rótulo for igual a 0, então o resultado será 1 (verdadeiro), caso contrário zero (falso).
Figura 4: Os rótulos são iguais a zero?
Bem, agora já sabendo isso fica mais fácil saber se o que estamos fazendo está correto. Para calcular na planilha faremos da seguinte forma:
=SE(E(rotulo_i=1;rotulo_j=1);1;0)
=SE(E(rotulo_i=0;rotulo_j=1);1;0)
=SE(E(rotulo_i=1;rotulo_j=0);1;0)
= E(E(rotulo_i=0;rotulo_j=0);1;0)
Essas fórmulas são correspondentes ao calculo de a, b, c, e d para cada instância. Onde está escrito rotulo_i você substituirá pelo valor da célula do primeiro rótulo do par que está sendo calculado, e o rotulo_j é o segundo rótulo do par. Obtemos os seguintes resultados quando calculamos a co-ocorrêncida de L1 com todos os outros rótulos do conjunto:
Figura 5: Resultado dos cálculos
Com isso temos os valores da tabela de contingência para os pares de rótulos combinados com L1, isto é, para cada instância já sabemos os valores de a, b, c e d. Podemos resumir estas quatro tabelas em uma só como a seguir:
Figura 6: Sumarizando o resultado
Também podemos visualizar o resultado da seguinte forma:
Figura 7: Visualizando as diversas tabelas de contingência
Agora podemos calcular as probabilidades:
Figura 8: Probabilidades
E assim terminamos de calcular a tabela de contingência para um rótulo do nosso conjunto de dados. Precisamos repetir o mesmo processo para todos os outros rótulos. No entanto, isto ficará para o próximo artigo. Vejo vocês lá!
Este artigo foi escrito por Elaine Cecília Gatto - Cissa e publicado originalmente em Prensa.li.