Configuração de avaliações de imparcialidade para viés indireto

Sob certas condições, você pode configurar avaliações de imparcialidade para considerar a parcialidade indireta e a parcialidade direta para uma implantação de modelo.

O viés indireto ocorre quando um recurso em um conjunto de dados pode ser usado para ficar em pé para outro. Por exemplo, em um conjunto de dados onde a raça não é um recurso conhecido, um recurso como o código postal muitas vezes pode acompanhar de perto a raça. Avaliar o recurso de código postal para viés é uma forma de detectar viés indireto. Em outro exemplo, o histórico de compras do cliente pode corresponder de perto com o sexo. Assim, até mesmo um modelo preditivo que não contenha nenhum dos atributos protegidos típicos como raça, idade ou sexo pode indicar resultados tendenciosos.

O viés indireto é analisado quando as seguintes condições são atendidas:

  • Para localizar correlações, o conjunto de dados deve ser suficientemente grande (mais de 4000 registros).
  • Os dados de treinamento devem incluir os metacampos. Deve-se treinar o modelo em um subconjunto de campos de dados. Esses campos adicionais, os metacampos, destinam-se a determinar a propensão indireta. (Incluir os metacampos, mas não os utilize no treinamento de modelo.)
  • A criação de log de carga útil deve conter metacampos e ser executada antes que o monitor de imparcialidade seja configurado. Você deve usar esse método para carregar os metacampos. A criação de log de carga útil para propensão indireta requer dois tipos de recursos de entrada: 1) recursos de treinamento com valores e 2) metacampos com valores.
  • Ao configurar o monitor de imparcialidade, selecione os campos adicionais a serem monitorados.

Fluxo de trabalho típico para propensão indireta

No entanto, é possível determinar viés indireto para pré-produção e modelos de produção os modelos requerem colunas diferentes. Os dados de teste que são usados para avaliar os modelos de pré-produção e os dados de feedback que são usados para avaliar os modelos de pré-produção ou de produção diferem no uso de metacolunas. As metacolunas são necessárias para os dados de teste para pré-produção e não podem ser incluídas nos dados de feedback que são usados para modelos de pré-produção ou de produção. Um fluxo de trabalho típico pode incluir as etapas a seguir:

  1. Criar dados de treinamento que contêm as colunas de recurso e metacolunas. As metacolunas contêm dados que não são usados para treinar o modelo.
  2. Configure o monitor de equidade com as metacolunas.
  3. Durante a pré-produção, faça upload de dados de teste que contêm as colunas de recurso e as metacolunas. Esses dados de teste devem ser carregados usando a opção Importar dados de teste CSV.
  4. Durante a pré-produção, você pode se interpor em diferentes versões do modelo enquanto utiliza as medidas de viés indireto para garantir que seu modelo final seja livre de viés.
  5. Após enviar o modelo para a produção, os dados de feedback não devem ter nenhuma das metacolunas, apenas as colunas de recurso que foram usadas para treinar o modelo.

Arquivo de carga útil JSON de amostra com metacampos

O arquivo de amostra a seguir mostra uma carga útil JSON com os campos e valores que são usados para treinar o modelo. Os metacampos e valores que são usados para a análise de propensão indireta também estão incluídos. Os metacampos não são usados para treinar o modelo, em vez disso, eles são reservados para um tipo diferente de análise que tenta correlacioná-los à propensão no modelo. Embora os metacampos possam ser qualquer tipo de dado, eles geralmente são atributos protegidos, como sexo, raça ou idade.

[request_data = {
    "fields": ["AGE", "SEX", "BP", "CHOLESTEROL", "NA", "K"],
    "values": [[28, "F", "LOW", "HIGH", 0.61, 0.026]]
  }

response_data = {
    "fields": ["AGE", "SEX", "BP", "CHOLESTEROL", "NA", "K", "probability", "prediction", "DRUG"],
    "values": [[28, "F", "LOW", "HIGH", 0.61, 0.026, [0.82, 0.07, 0.0, 0.05, 0.03], 0.0, "drugY"]]
  }

request_data = <put your data here>
response_data = <put your data here>

records = [PayloadRecord(request=request_data, response=response_data, response_time=18), 
                PayloadRecord(request=request_data, response=response_data, response_time=12)]

subscription.payload_logging.store(records=records)

Os metavalores devem estar no formato de uma matriz de matrizes:

"meta": {
"fields": ["age", "race", "sex"],
"values": [
[32, "Black", "Male"]
]
}

Saiba Mais