Pular para o conteúdo

Guias

Equidade entre grupos

Um modelo pode atingir seu limiar de acurácia em todos os grupos e ainda ser mais duro com um deles: o dobro de falsos negativos, ou metade das seleções. oloproof fairness lê um arquivo de casos decididos e pergunta o quanto os grupos se distanciam. Ele responde com os mesmos quatro estados de qualquer outra regra. O método de paridade foi admitido por uma auditoria independente em 3 de novembro de 2026, nos termos que esta página declara: casos independentes, grupos declarados primeiro, cada regra sobre os casos em que seus atributos estão registrados, e paridade medida em relação aos seus rótulos.

O arquivo e a declaração

Um arquivo CSV ou JSONL com uma linha por caso: um id, o rótulo (0 ou 1), a previsão (0 ou 1, vazia quando o sistema não deu nenhuma), opcionalmente uma probabilidade, e uma coluna por atributo protegido.

fairness:
  name: loan-screen
  cases: decided.csv
  label: label
  prediction: prediction
  probability: score
  attributes:
    sex: [female, male]
    age_band: [under_30, 30_to_60, over_60]
  intersections:
    - [sex, age_band]
  min_cell: 30
  rules:
    - {id: fnr-by-sex, rate: false_negative, attribute: sex, max_group_gap: 0.05}
    - {id: fnr-crossed, rate: false_negative, attribute: [sex, age_band], max_group_gap: 0.10}
oloproof fairness fairness.yaml --policy release.yaml --json

O intervalo supõe que cada caso é uma pessoa diferente. Nomeie a coluna que identifica a pessoa com unit: person_id e um arquivo em que uma pessoa tem vários casos é recusado; sem ela, a resposta declara a suposição.

A taxa é uma de error, false_positive (sobre os casos rotulados 0), false_negative (sobre os casos rotulados 1) ou selection (previsto 1, sobre todos os casos). Nomeie os grupos antes de ler o arquivo. Cada regra lê apenas os casos cujos próprios atributos estão registrados com um valor declarado; um caso sem um atributo fica de fora das regras que o usam e é mantido pelas outras, e cada resposta conta o que deixou de fora e por quê. Quando um atributo falta com mais frequência para algumas pessoas do que para outras, a resposta trata dos casos em que ele está registrado, que são outra população: leia a contagem antes do veredito. Uma regra que deixa de fora mais de max_left_out do arquivo (10% por padrão; defina na regra) lê INSUFFICIENT_EVIDENCE, porque os casos registrados podem não representar mais o restante. O código de saída é o da pior regra: 0 PASS, 1 FAIL, 3 INSUFFICIENT_EVIDENCE, 4 MANUAL_REVIEW.

Como ele decide

A taxa de cada grupo recebe o intervalo exato que o Oloproof usa para uma taxa, com o orçamento de erro dividido pelo número de grupos declarados. Cada diferença entre dois grupos é limitada a partir desses intervalos, todas de uma vez, de modo que nenhum par precisa de sua própria correção. Uma regra max_group_gap passa quando a extremidade superior de cada diferença está no limiar ou abaixo dele, e falha quando alguma diferença está acima do limiar com o intervalo inteiro. Uma previsão ausente fica no seu grupo e é contada no seu pior caso.

Grupos pequenos e grupos cruzados

Cruzar dois atributos multiplica as células, e algumas serão pequenas. Uma célula com menos casos com previsão que min_cell (casos cuja previsão está ausente não contam para isso) é relatada como INSUFFICIENT_EVIDENCE na sua própria linha, continua contando na divisão e impede a regra de passar, porque a maior diferença pode estar ali. Colete mais casos para essa célula, ou declare um cruzamento mais grosso antes da execução.

Pisos e diferenças

Use worst_group para um piso que todo grupo deve atingir ("cada região resolve pelo menos 80 %"), e max_group_gap para um teto na distância entre grupos ("os falsos negativos diferem em no máximo cinco pontos"). Um requisito de governança de resultados sem viés é evidenciado em parte pela diferença, para a taxa que você escolheu; um requisito de que todo grupo seja bem atendido, pelo piso. Nenhum dos dois sozinho mostra que um sistema é justo. A maioria dos sistemas precisa dos dois.

Calibração por grupo

Com uma coluna de probabilidade, o erro de calibração esperado de cada grupo é relatado para cada atributo e cada cruzamento declarado, sobre calibration_bins faixas de probabilidade de mesma largura (10 por padrão). Ele nunca decide o portão: nenhum método admitido o limita, e em um grupo pequeno ele é ruidoso.

O que isto não pode dizer a você

  • Qual taxa é a justa para igualar: essa decisão é sua, e vale registrá-la junto com os atributos que você escolheu.
  • Nada sobre grupos que você não declarou, nem sobre pessoas contadas duas vezes (uma pessoa, vários casos).
  • Se a calibração difere entre grupos mais do que o acaso explica.
  • Se os próprios rótulos têm viés: a paridade é medida contra os rótulos que você traz.