Concordância entre anotadores (Inter-Annotator Agreement)
O que é concordância entre anotadores?
Concordância entre anotadores (inter-annotator agreement, IAA) mede o quão consistentemente diferentes anotadores aplicam rótulos aos mesmos itens (textos, imagens, clipes de áudio etc.). Em aprendizado supervisionado, a IAA é uma das formas mais práticas de responder a duas perguntas:
- Os rótulos são confiáveis o suficiente para treinar e avaliar modelos?
- A definição da tarefa é genuinamente clara, ou é ambígua/subespecificada?
A IAA não é apenas uma “pontuação de qualidade”. É uma ferramenta de diagnóstico para o seu desenho de tarefa e o seu processo de anotação: definições de rótulos pouco claras, casos-limite ausentes, treinamento fraco de anotadores ou conceitos inerentemente subjetivos aparecerão como discordância.
Este artigo foca em medir a consistência de rótulos e usar a discordância para diagnosticar tarefas ambíguas — intimamente relacionado a Diretrizes de Anotação e Ruído de Rótulos.
Por que a IAA importa em pipelines de ML
1) Limite superior do desempenho de modelo alcançável (às vezes)
Se humanos não concordam sobre os rótulos, um modelo treinado nesses rótulos pode enfrentar um objetivo mal formulado. Para algumas tarefas, a concordância humana se aproxima de um teto para a acurácia do modelo (especialmente quando o “ground truth” é julgamento humano, por exemplo, toxicidade ou sentimento). Para outras tarefas (por exemplo, diagnóstico médico com anotadores ruidosos), a ideia de teto é mais fraca, mas a IAA ainda indica incerteza no alvo.
2) Alerta precoce para tarefas ambíguas ou subespecificadas
Baixa concordância geralmente significa:
- rótulos não são mutuamente exclusivos,
- definições se sobrepõem,
- diretrizes omitem casos-limite comuns,
- a tarefa exige informação que os anotadores não têm,
- ou o conceito é genuinamente subjetivo.
3) Melhor governança e iteração do conjunto de dados
A IAA ajuda você a decidir se deve:
- reescrever diretrizes,
- adicionar sessões de treinamento e calibração,
- mudar o conjunto de rótulos,
- coletar mais contexto,
- adjudicar discordâncias,
- ou modelar explicitamente a confiabilidade dos anotadores.
Isso se encaixa naturalmente em processos iterativos como Ciclos de Aprendizado Ativo, onde você pode re-rotular itens incertos e refinar diretrizes.
Conceitos-chave e terminologia
Anotadores (avaliadores)
Humanos (ou às vezes sistemas) que atribuem rótulos. Anotadores podem ter diferentes níveis de expertise, vieses e taxas de erro.
Itens (unidades)
Os objetos que estão sendo rotulados: um tweet, um trecho de documento, uma imagem, um turno de conversa etc.
Espaço de rótulos
- Nominal: categorias sem ordem (por exemplo, {esportes, política, tecnologia})
- Ordinal: categorias ordenadas (por exemplo, avaliações de 1 a 5 estrelas)
- Intervalar/razão: valores contínuos (por exemplo, coordenadas de caixas delimitadoras, estimativa de idade)
- Multi-rótulo: múltiplos rótulos por item (por exemplo, tags)
Confiabilidade vs. validade
- Confiabilidade (concordância): consistência entre anotadores.
- Validade: se os rótulos medem o que você pretende (um conjunto de dados pode ser consistente, mas consistentemente errado).
A IAA mede confiabilidade, não validade — mas baixa confiabilidade costuma ser um forte sinal de baixa validade ou de desenho de tarefa pouco claro.
A medida mais simples: acordo percentual
Acordo percentual (percent agreement) é a fração de itens nos quais os anotadores escolhem o mesmo rótulo.
Exemplo (sentimento binário: positivo/negativo), 100 itens, dois anotadores concordam em 82:
- Acordo percentual = 82%
Isso é intuitivo, mas frequentemente enganoso porque não corrige para concordância ao acaso. Se uma classe domina (por exemplo, 95% “negativo”), os anotadores podem concordar com frequência apenas por sempre escolherem a classe majoritária.
Use o acordo percentual como uma verificação rápida de sanidade, mas prefira medidas corrigidas por acaso ou mais robustas para relatório.
Concordância corrigida por acaso para rótulos categóricos
Kappa de Cohen (dois anotadores, rótulos nominais)
κ de Cohen (Cohen’s kappa) ajusta a concordância pela concordância esperada ao acaso dada a distribuição de rótulos de cada anotador.
- Seja ( p_o ) = concordância observada
- Seja ( p_e ) = concordância esperada ao acaso
- ( \kappa = \frac{p_o - p_e}{1 - p_e} )
Interpretação:
- κ = 1: concordância perfeita
- κ = 0: concordância igual à expectativa ao acaso
- κ < 0: pior que o acaso (frequentemente indica discordância sistemática ou inversão de rótulos)
Exemplo prático Dois anotadores rotulam 200 mensagens de suporte ao cliente como {bug, feature_request}. Se ambos os anotadores rotulam 90% como “bug”, eles podem concordar com frequência por acaso; κ revela se a concordância é significativa.
Ressalva: o “paradoxo do kappa” Com classes altamente desbalanceadas, κ pode ser baixo mesmo quando o acordo percentual é alto (e vice-versa). Isso não é um bug — está destacando que a concordância pode ser impulsionada pela prevalência em vez de discriminação consistente das classes minoritárias.
Kappa de Fleiss (múltiplos anotadores, rótulos nominais)
κ de Fleiss (Fleiss’ kappa) generaliza o kappa para mais de dois anotadores, tipicamente assumindo:
- cada item é avaliado pelo mesmo número de anotadores, e
- cada avaliação é uma única categoria.
Muitos projetos reais de rotulagem violam essas suposições (rótulos ausentes, números variáveis de avaliações por item), então considere alternativas como o alfa de Krippendorff.
Alfa de Krippendorff (flexível, robusto, suporta dados ausentes)
α de Krippendorff (Krippendorff’s alpha) é amplamente usado porque:
- suporta qualquer número de anotadores,
- tolera avaliações ausentes,
- pode lidar com diferentes tipos de dados (nominal, ordinal, intervalar) com funções de distância apropriadas.
Conceitualmente, α compara a discordância observada com a discordância esperada sob acaso.
Como a anotação no mundo real frequentemente tem dados ausentes (nem todo anotador rotula todo item), α costuma ser um bom padrão para reportar concordância.
AC1/AC2 de Gwet (menos sensível à prevalência)
AC1 de Gwet (Gwet’s AC1) (nominal) e AC2 (ordinal/ponderado) são alternativas projetadas para serem mais estáveis sob desbalanceamento de classes, abordando alguns problemas do paradoxo do kappa.
Se seus rótulos são altamente enviesados (comum em moderação, detecção de eventos raros, triagem médica), AC1/AC2 podem ser mais interpretáveis do que κ — embora κ continue sendo mais reconhecido.
Concordância para rótulos ordinais: kappa ponderado
Para categorias ordenadas (por exemplo, severidade: nenhuma/leve/moderada/grave), discordâncias não são igualmente ruins:
- “leve” vs “moderada” é mais próximo do que “nenhuma” vs “grave”.
Kappa ponderado de Cohen (Weighted Cohen’s kappa) atribui crédito parcial com base na distância entre categorias (pesos lineares ou quadráticos são comuns).
Use medidas ponderadas para tarefas ordinais; tratar rótulos ordinais como nominais descarta estrutura útil.
Concordância para rótulos contínuos
Se os anotadores produzem valores numéricos (por exemplo, idade estimada, pontuação de toxicidade, proxies de IoU de caixas delimitadoras), use medidas adequadas a dados contínuos:
- Coeficiente de Correlação Intraclasse (Intraclass Correlation Coefficient, ICC): comum para confiabilidade de avaliações quantitativas.
- Correlação (Pearson/Spearman): mede associação, mas não necessariamente concordância (dois anotadores podem correlacionar bem, mas diferir sistematicamente por um deslocamento constante).
- Diferença absoluta média / RMSE: simples e direto; frequentemente útil junto com o ICC.
Para saídas estruturadas (por exemplo, caixas delimitadoras), a concordância costuma ser definida via similaridade específica da tarefa (por exemplo, limiares de IoU).
Anotação multi-rótulo e estruturada
Muitas tarefas não são “um item → um rótulo”:
- Tagueamento multi-rótulo: compute concordância por rótulo (trate cada rótulo como uma classificação binária) e agregue (médias macro/micro).
- Rotulagem de sequência (Sequence labeling, NER): a concordância pode ser computada no nível de token ou no nível de span. Concordância no nível de span é mais rígida e frequentemente mais significativa.
- Rótulos hierárquicos: meça concordância em diferentes profundidades (por exemplo, concordância em categoria grossa vs concordância em subtipo granular).
Ao reportar, especifique a unidade e as regras de correspondência (token vs span, correspondência exata vs sobreposição parcial).
Como calcular IAA na prática
Exemplo mínimo: kappa de Cohen em Python
from sklearn.metrics import cohen_kappa_score
ann1 = ["pos", "neg", "pos", "pos", "neg"]
ann2 = ["pos", "neg", "neg", "pos", "neg"]
kappa = cohen_kappa_score(ann1, ann2)
print(kappa)
Kappa ponderado para rótulos ordinais
from sklearn.metrics import cohen_kappa_score
ann1 = [0, 1, 2, 2, 3] # e.g., severity 0..3
ann2 = [0, 2, 2, 1, 3]
kappa_quad = cohen_kappa_score(ann1, ann2, weights="quadratic")
print(kappa_quad)
Alfa de Krippendorff (exemplo de fluxo de trabalho)
Existem pacotes Python (por exemplo, krippendorff). O ponto principal é moldar seus dados em uma matriz “anotadores × itens” permitindo valores ausentes.
import numpy as np
import krippendorff
# rows: annotators, columns: items; use np.nan for missing ratings
data = np.array([
[1, 0, 1, np.nan, 1],
[1, 0, 0, 1, 1],
[1, 0, 1, 1, np.nan],
])
alpha = krippendorff.alpha(reliability_data=data, level_of_measurement="nominal")
print(alpha)
Interpretando a concordância: o que é “bom o suficiente”?
Não existe um limiar universal. A meta certa depende de:
- ambiguidade da tarefa (subjetiva vs objetiva),
- granularidade dos rótulos (rótulos mais granulares reduzem a concordância),
- expertise dos anotadores,
- e uso pretendido (treino vs avaliação vs aplicação de políticas).
Ainda assim, algumas heurísticas informais comuns para medidas corrigidas por acaso (κ/α/AC1) às vezes são citadas (por exemplo, 0,6–0,8 “substancial”), mas podem ser enganosas. Uma abordagem melhor:
- Compare com baselines: acordo percentual, comportamento do baseline de classe majoritária.
- Inspecione concordância por classe: concordância geral pode esconder falhas em classes raras, porém importantes.
- Use intervalos de confiança: compute via bootstrap para quantificar incerteza (especialmente com amostras pequenas).
- Avalie impacto no modelo: melhorar IAA melhora o desempenho de validação a jusante e os padrões de erro?
Diagnosticando tarefas ambíguas usando discordância
A IAA é mais valiosa quando você trata discordância como dado.
1) Padrões de confusão revelam sobreposição de rótulos
Crie uma matriz de confusão anotador–anotador (para dois anotadores) ou uma matriz comparando cada anotador ao rótulo majoritário/adjudicado. Procure confusões sistemáticas:
- “neutro” vs “positivo”
- “spam” vs “promoção”
- “assédio” vs “discurso de ódio”
Isso frequentemente indica que definições de rótulo se sobrepõem ou que os limites não estão claros.
2) Agrupamentos de discordância identificam casos-limite
Itens com alta discordância são candidatos prioritários para:
- atualização de diretrizes,
- adicionar exemplos e contraexemplos,
- coletar mais contexto,
- ou redefinir a tarefa.
Em um cenário de Ciclos de Aprendizado Ativo, você pode priorizar esses itens para reanotação ou revisão por especialistas.
3) Viés específico do anotador vs. ambiguidade da tarefa
Baixa concordância pode vir de:
- uma tarefa ambígua (todo mundo discorda de todo mundo), ou
- um ou dois anotadores divergindo sistematicamente.
Para separar isso:
- compute concordância por anotador contra o grupo,
- revise as distribuições de rótulos dos anotadores,
- faça rodadas de calibração com feedback.
Se um anotador rotula 40% como “tóxico” enquanto outros rotulam 5%, isso frequentemente é um problema de treinamento/diretriz e não de ambiguidade inerente.
4) Falta de contexto se disfarça de discordância
Exemplo: rotular “esta resposta é útil?” sem ver a conversa anterior. Anotadores inferem intenções diferentes e discordam. A correção não é “métricas melhores”, mas melhor enquadramento da tarefa e fornecer o contexto necessário.
Exemplos práticos
Exemplo A: Anotação de sentimento (subjetiva, meio ordinal)
Tarefa: rotular avaliações de produtos como {negativo, neutro, positivo}.
Resultados comuns:
- o acordo percentual pode ser moderado,
- o kappa ponderado pode ser maior do que o não ponderado (porque “negativo vs neutro” é mais próximo do que “negativo vs positivo”),
- discordâncias se concentram em sentimento misto ou sarcasmo.
Melhorias acionáveis:
- definir o que “neutro” significa com exemplos concretos,
- decidir se “misto” é um rótulo separado,
- instruir anotadores sobre como tratar sarcasmo.
Exemplo B: Moderação de toxicidade (rótulos enviesados, problemas de prevalência)
Tarefa: rotular comentários como tóxico/não tóxico. Geralmente, “tóxico” é raro.
Resultados comuns:
- alto acordo percentual (a maioria dos itens é não tóxica),
- κ baixo (corrigido por acaso), porque a concordância é dominada pela classe majoritária.
Abordagem acionável:
- reportar métricas por classe (concordância em itens tóxicos),
- considerar AC1/AC2 para reduzir instabilidade por prevalência,
- fazer oversampling de itens provavelmente tóxicos no estudo de concordância para sondar melhor a fronteira de decisão (mas deixar explícito que a distribuição amostrada difere da produção).
Exemplo C: Reconhecimento de Entidades Nomeadas (Named Entity Recognition, NER) (saída estruturada)
Tarefa: identificar spans de pessoa/organização/local.
Resultados comuns:
- a concordância no nível de token pode parecer alta enquanto a concordância no nível de span é baixa.
- discordâncias de limite (por exemplo, “Bank of America” vs “America”) dominam.
Melhorias acionáveis:
- regras para limites de spans,
- convenções de normalização (incluir títulos? incluir sufixos?),
- diretrizes de adjudicação para entidades aninhadas.
Usando IAA para melhorar o processo de anotação
A IAA deve fazer parte de um ciclo iterativo, não de um relatório pontual.
Etapa 1: Estudo piloto
Antes de rotular o conjunto de dados completo:
- rotule um pequeno lote com múltiplos anotadores,
- compute a concordância,
- revise discordâncias.
Essa costuma ser a etapa de maior ROI.
Etapa 2: Melhorar diretrizes e treinamento
Atualize Diretrizes de Anotação para incluir:
- definições precisas,
- regras de decisão,
- exemplos positivos/negativos,
- tratamento de casos-limite,
- caminhos de escalonamento (“se estiver em dúvida, escolha X e sinalize”).
Etapa 3: Calibrar anotadores
Faça uma sessão de calibração:
- discutir discordâncias,
- alinhar modelos mentais,
- atualizar diretrizes e re-testar.
Etapa 4: Escolher uma estratégia de resolução
Quando anotadores discordam, você pode:
- usar voto majoritário (simples, mas pode codificar viés da maioria),
- adjudicar com um especialista (custo maior, frequentemente melhor para conjuntos ouro de avaliação),
- modelar confiabilidades dos anotadores probabilisticamente (por exemplo, métodos no estilo Dawid–Skene) quando você tem muitos itens e qualidade de anotadores variável.
Essas escolhas afetam tanto os rótulos de treino quanto os conjuntos de verdade para avaliação.
Etapa 5: Monitorar concordância continuamente
A concordância pode derivar quando:
- diretrizes mudam,
- novos anotadores entram,
- a distribuição de dados muda.
Acompanhe IAA ao longo do tempo e por fatias (por tópico, idioma, demografia, fonte etc.).
Relação com ruído de rótulos e modelagem a jusante
Discordância é uma grande fonte de Ruído de Rótulos, mas é importante distinguir:
- ruído por erros (corrigível via treinamento, QA),
- ruído por ambiguidade (corrigível via redesenho da tarefa ou alvos multi-rótulo/contínuos),
- subjetividade irredutível (pode exigir modelar distribuições de rótulos em vez de uma única “verdade”).
Estratégias práticas quando a IAA é baixa, mas a tarefa precisa prosseguir:
- Coletar mais rótulos por item e usar alvos suaves (distribuições de rótulos) em vez de rótulos rígidos.
- Treinar com perdas robustas a ruído ou técnicas projetadas para rótulos ruidosos.
- Avaliar com múltiplas referências (comum em geração em PLN e classificação subjetiva).
- Redefinir o problema (por exemplo, de “é tóxico?” para “qual a probabilidade de um usuário típico perceber toxicidade?”).
Armadilhas comuns
- Reportar apenas um número: concordância geral esconde falhas por classe.
- Usar κ sem observar prevalência: dados enviesados podem fazer κ parecer “ruim” mesmo quando a tarefa é operacionalmente útil.
- Confundir discordância com incompetência do anotador: frequentemente é um problema de desenho da tarefa.
- Ignorar dados ausentes: se nem todos os itens são rotulados por todos os anotadores, escolha métricas que lidem com isso (por exemplo, α) ou desenhe o estudo com cuidado.
- Medir concordância em uma amostra não representativa sem declarar isso (por exemplo, casos difíceis com oversampling).
Checklist de boas práticas (o que documentar)
Quando você reportar IAA, inclua:
- Definição da tarefa e conjunto de rótulos, incluindo ordinal vs nominal.
- Unidade de anotação (item, token, span; regras de correspondência exata).
- Número de anotadores e como foram treinados.
- Estratégia de amostragem para o conjunto de concordância (aleatória, estratificada, oversampling de casos difíceis).
- Métrica(s) usada(s) (acordo percentual + pelo menos uma medida robusta/corrigida por acaso).
- Concordância por classe ou padrões de confusão.
- Tratamento de rótulos ausentes e abstenções.
- Método de resolução para rótulos finais (voto majoritário, adjudicação, agregação probabilística).
- Ações de acompanhamento tomadas com base em discordâncias (mudanças de diretrizes, relabeling).
Resumo
Concordância entre anotadores é uma ferramenta central para medir consistência de rótulos e, mais importante, diagnosticar tarefas ambíguas. Escolha métricas de concordância que combinem com seu tipo de rótulo e desenho de estudo (κ para dois avaliadores, α para cenários flexíveis com múltiplos avaliadores, medidas ponderadas para rótulos ordinais, ICC para avaliações contínuas). Use a discordância para impulsionar melhorias em diretrizes, treinamento, desenho de rótulos e coleta de dados — frequentemente gerando ganhos maiores do que ajustes do lado do modelo.
Para próximos passos, veja Diretrizes de Anotação para desenhar tarefas mais claras, Ruído de Rótulos para modelar e mitigar rótulos imperfeitos e Ciclos de Aprendizado Ativo para relabeling iterativo e priorização de itens ambíguos.