Dados Sintéticos

O que são dados sintéticos (synthetic data)?

Dados sintéticos (synthetic data) são dados que são gerados, em vez de diretamente coletados a partir de eventos do mundo real, sensores, usuários ou processos de negócio. Eles são projetados para aproximar (ou diferir intencionalmente de) dados reais de maneiras úteis para um objetivo posterior — normalmente treinar, avaliar ou testar sistemas de aprendizado de máquina (machine learning).

Dados sintéticos podem ser:

  • Totalmente sintéticos: cada registro é gerado (sem cópia direta, linha a linha, de um conjunto de dados de origem).
  • Parcialmente sintéticos (híbridos): alguns campos são gerados enquanto outros são reais, ou exemplos sintéticos são misturados em um conjunto de dados real.
  • Simulados: criados por um modelo mecanicista do mundo (motores de física, modelos de filas, simulação baseada em agentes).
  • Gerados por modelo: amostrados a partir de um modelo generativo aprendido (GANs, modelos de difusão (diffusion models), modelos de linguagem de grande porte (large language models, LLMs), geradores tabulares).

Uma motivação comum é viabilizar o compartilhamento de dados ou escalar o treinamento, reduzindo a dependência de dados reais sensíveis ou escassos — embora risco e vazamento ainda sejam possíveis e precisem ser gerenciados.

Este artigo se concentra em três pilares práticos:

  1. Geração de conjuntos de dados sintéticos
  2. Medição de utilidade (funciona para a tarefa pretendida?)
  3. Gestão de riscos e vazamento (privacidade, memorização, conformidade, uso indevido)

Conceitos relacionados aparecem ao longo de Privacidade, Governança de Dados, Segurança de Dados, Qualidade de Dados e Deriva e Documentação de Conjuntos de Dados (Datasheets).

Por que usar dados sintéticos?

Casos de uso comuns

  • Compartilhamento de dados com foco em privacidade
    • Compartilhar dados com parceiros ou contratados sem expor informações pessoalmente identificáveis (personally identifiable information, PII) brutas.
    • Publicar conjuntos de dados para pesquisa com risco reduzido de divulgação.
  • Aumentar a cobertura de eventos raros
    • Padrões de fraude, casos médicos extremos, incidentes de segurança, consultas de clientes de cauda longa.
  • Aumento de dados (data augmentation)
    • Aumentar a variedade nos dados de treinamento (imagens, texto, áudio) para melhorar a robustez.
  • Testes e garantia de qualidade (QA)
    • Criar fixtures de teste determinísticos para pipelines de dados e avaliação de modelos.
    • Simular casos “ruins”: campos ausentes, outliers, entradas corrompidas.
  • Iteração mais rápida

Quando dados sintéticos *não* são uma boa opção

  • Quando sua tarefa depende de correlações sutis do mundo real que são difíceis de modelar (por exemplo, confundidores clínicos raros).
  • Quando o processo generativo provavelmente inventará artefatos que deslocam o problema de aprendizagem.
  • Quando requisitos regulatórios exigem rastreabilidade até registros reais (em alguns cenários de auditoria).

Um modelo mental: fidelidade, utilidade e privacidade estão em tensão

Sistemas de dados sintéticos fazem trade-offs entre três propriedades:

  • Fidelidade: quão bem os dados sintéticos correspondem às distribuições e relações dos dados reais.
  • Utilidade: quão bem modelos treinados/avaliados com dados sintéticos performam em tarefas do mundo real.
  • Privacidade e resistência a vazamento: quão difícil é inferir se os dados de uma pessoa foram usados, ou recuperar detalhes sensíveis.

Aumentar a fidelidade pode aumentar o risco de vazamento (porque “realista demais” pode significar memorização). Maximizar a privacidade (por exemplo, privacidade diferencial forte) pode reduzir a utilidade. Soluções práticas buscam um ponto aceitável nessa fronteira para um caso de uso específico.

Gerando conjuntos de dados sintéticos

1) Geração baseada em regras e simuladores programáticos

Essa abordagem codifica conhecimento de domínio diretamente:

  • Tabular: amostrar de distribuições construídas manualmente; impor restrições (por exemplo, idade ≥ 0).
  • Eventos/logs: gerar sequências a partir de regras de negócio (por exemplo, pedido → envio → entrega).
  • Séries temporais: simular sazonalidade + ruído + anomalias.
  • Física/gráficos: renderizar imagens sintéticas com um motor de jogos.

Prós

  • Forte controle, interpretabilidade, fácil inserir casos raros.
  • Pode garantir satisfação de restrições.

Contras

  • Difícil corresponder correlações complexas.
  • Pode deixar de fora padrões desconhecidos presentes em dados reais.

Exemplo: gerando dados tabulares com restrições

import numpy as np
import pandas as pd

rng = np.random.default_rng(0)
n = 10_000

age = rng.integers(18, 80, size=n)
income = np.clip(rng.normal(50_000 + age * 800, 20_000, size=n), 10_000, 250_000)
has_mortgage = (income > 40_000) & (age > 25) & (rng.random(n) < 0.55)

df = pd.DataFrame({
    "age": age,
    "income": income.round(0).astype(int),
    "has_mortgage": has_mortgage.astype(int),
})

# Enforce a business constraint: retirees are less likely to have a mortgage
df.loc[df["age"] > 65, "has_mortgage"] = (rng.random((df["age"] > 65).sum()) < 0.2).astype(int)

Isso é sintético, mas seu realismo depende inteiramente das suas suposições.

2) Reamostragem e perturbação (síntese clássica “tipo anonimização”)

Técnicas comuns incluem:

  • Adicionar ruído a campos numéricos
  • Trocar valores entre linhas
  • Generalização/agrupamento em faixas (idade → faixa etária)
  • Bootstrapping com jitter

Esses métodos são fáceis de implementar, mas frequentemente fracos contra ataques modernos de reidentificação, e podem destruir a estrutura multivariada. É melhor encará-los como heurísticas de desidentificação do que como garantias robustas de privacidade (veja Privacidade).

3) Modelos gerativos estatísticos (com foco em dados tabulares)

Esses métodos ajustam um modelo probabilístico e amostram a partir dele:

  • Cópulas (por exemplo, cópula Gaussiana) para modelar dependências
  • Redes bayesianas
  • Modelos de mistura

Prós

  • Podem modelar distribuições conjuntas com mais fidelidade do que regras.
  • Muitas vezes são mais simples e estáveis do que geradores profundos em conjuntos de dados pequenos.

Contras

  • Podem ter dificuldade com dados categóricos de alta dimensionalidade e restrições complexas.

4) Modelos generativos profundos (deep generative models)

Redes adversariais generativas (Generative Adversarial Networks, GANs)

Redes adversariais generativas podem gerar amostras “nítidas”, mas podem ser instáveis de treinar. Variantes como CTGAN são populares para dados tabulares com características categóricas/numéricas mistas.

Autoencoders variacionais (Variational Autoencoders, VAEs)

Autoencoders variacionais geralmente são mais estáveis e fornecem um espaço latente (latent space), mas podem produzir amostras mais “borradas”.

Modelos de difusão

Modelos de difusão dominam a geração de imagens e estão sendo cada vez mais usados para outras modalidades.

Síntese baseada em modelos de linguagem de grande porte (texto e texto estruturado)

Modelos de linguagem de grande porte podem gerar registros de texto realistas, conversas ou entradas semiestruturadas. Isso é poderoso, mas memorização e vazamento precisam ser tratados como um risco de primeira ordem (mais sobre isso abaixo).

Nota prática: geradores profundos podem acidentalmente aprender e reproduzir exemplos raros de treinamento. Isso não é hipotético — é um comportamento conhecido quando modelos são superparametrizados ou treinados sem restrições de privacidade.

5) Abordagens híbridas (frequentemente as melhores na prática)

Padrões comuns:

  • Usar um gerador para casos “típicos” + simulação explícita para casos extremos.
  • Gerar atributos sinteticamente, mas manter rótulos de dados reais (ou vice-versa) quando permitido.
  • Usar distribuições marginais reais, mas correlações sintéticas (ou o oposto) dependendo do que importa.

Medindo utilidade: “Esses dados sintéticos são bons o suficiente?”

Qualidade de dados sintéticos não é um único número. Você deve avaliá-la em relação ao uso pretendido: treinamento de modelos, testes de pipeline, analytics ou compartilhamento.

Duas perspectivas de avaliação

  1. Métricas de fidelidade: comparar distribuições sintéticas vs reais.
  2. Métricas de utilidade baseadas em tarefa: medir desempenho posterior em dados reais de validação.

Um conjunto de dados pode ter marginais com boa aparência e ainda assim falhar em utilidade para a tarefa se perder relações condicionais-chave.

Fidelidade: verificações de similaridade distributiva

Verificações comuns para dados tabulares:

  • Distribuições univariadas: teste KS para características contínuas, qui-quadrado para categóricas.
  • Relações pareadas: correlações, informação mútua, tabelas de contingência.
  • Estrutura de ordem superior: distinguibilidade baseada em classificador (treinar um modelo para prever real vs sintético).

Para imagens/texto, fidelidade é mais difícil:

  • Imagens: métricas do tipo FID/KID podem ser indicativas, mas não definitivas.
  • Texto: distribuição de comprimentos, vocabulário, perplexidade sob um modelo de referência, distribuição de tópicos e revisão humana.

O teste de duas amostras com classificador (Classifier Two-Sample Test, C2ST) é amplamente usado:

  • Treine um modelo para classificar se um registro é real ou sintético.
  • Se a AUC estiver próxima de 0,5, os dados sintéticos são difíceis de distinguir (boa fidelidade).
  • Mas ser indistinguível demais pode coincidir com memorização — então combine isso com testes de privacidade.

Utilidade: padrões de avaliação baseados em modelo

Uma abordagem padrão é avaliar em um conjunto real de retenção (holdout) que nunca é usado para treinar o gerador.

TSTR: Treinar em Sintético, Testar em Real

  • Treine o modelo posterior com dados sintéticos.
  • Avalie em dados reais de teste.
  • Se ficar próximo do baseline treinado em dados reais, a utilidade é boa.

TSRTr: Treinar em Real, Testar em Sintético

  • Útil para verificar se amostras sintéticas representam a fronteira de decisão real (mas pode ser enganoso se os dados sintéticos forem mais fáceis do que os reais).

Exemplo: TSTR para classificação tabular (esboço)

from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression

# X_syn, y_syn: synthetic training set
# X_real_test, y_real_test: real holdout test set

clf = LogisticRegression(max_iter=1000)
clf.fit(X_syn, y_syn)
pred = clf.predict_proba(X_real_test)[:, 1]
auc = roc_auc_score(y_real_test, pred)
print("TSTR AUC:", auc)

Interpretação: compare com um modelo treinado em dados reais de treinamento e testado no mesmo conjunto real de retenção.

Utilidade para analytics (não ML)

Se o objetivo é relatório estatístico:

  • Compare agregados: média/mediana, quantis, taxas, métricas de funil
  • Compare métricas por subgrupo (por região, tipo de dispositivo, faixa etária etc.)
  • Compare tendências ao longo do tempo e sazonalidade para séries temporais

Seja explícito sobre o que você precisa preservar; “parece realista” não é uma especificação de requisito.

Satisfação de restrições e validade semântica

Dados sintéticos devem respeitar invariantes:

  • Correção do esquema (tipos, intervalos, nulabilidade)
  • Restrições entre campos (start_date ≤ end_date)
  • Integridade referencial (chaves estrangeiras)
  • Regras de domínio (códigos CID, IDs de produto, moedas válidas)

Para testes de pipeline, validade frequentemente importa mais do que fidelidade.

Gerenciando riscos e vazamento

Dados sintéticos muitas vezes são posicionados como uma solução de privacidade. Esse enquadramento é incompleto: dados sintéticos podem reduzir risco, mas não fornecem automaticamente garantias de privacidade.

Principais riscos

1) Memorização e vazamento de registros

Um gerador pode reproduzir registros de treinamento literalmente ou quase literalmente, especialmente quando:

  • O conjunto de dados é pequeno
  • Registros contêm strings únicas (nomes, endereços, anotações raras)
  • O modelo é grande e treinado por tempo demais
  • A elicitação por prompts (prompting) pode extrair conteúdo raro (síntese com modelos de linguagem de grande porte)

2) Inferência de pertencimento (membership inference)

Um atacante tenta inferir se o registro de uma pessoa específica foi incluído no treinamento.

Mesmo que nenhum registro seja reproduzido exatamente, o modelo pode se comportar de forma diferente para membros vs não membros.

3) Inferência de atributos (attribute inference)

Dada informação parcial (por exemplo, idade e CEP), inferir um atributo sensível (diagnóstico, salário). Releases sintéticos podem preservar correlações que tornam essa inferência fácil.

4) Ataques de vinculação (linkage attacks) (reidentificação via dados externos)

Mesmo sem identificadores diretos, alguns quase-identificadores (CEP, data de nascimento, gênero) podem reidentificar indivíduos quando vinculados a conjuntos de dados públicos.

5) Replicação e amplificação de vieses

Dados sintéticos tendem a reproduzir vieses da fonte e podem amplificá-los se o gerador fizer sobreajuste (overfitting) em padrões majoritários e sub-representar grupos minoritários. Isso interage com práticas de equidade (fairness) e avaliação (veja Qualidade de Dados e Deriva).

6) Conteúdo sintético “envenenado” ou inseguro

Se dados sintéticos são gerados por modelos treinados em corpora amplos, eles podem incluir conteúdo tóxico, protegido por direitos autorais ou que viole políticas. Se forem usados para treinamento, esses problemas podem se propagar.

Testes de privacidade e avaliação de vazamento

Você deve executar avaliações de privacidade antes de compartilhar dados sintéticos externamente.

Técnicas comuns:

  • Detecção de duplicatas exatas e quase duplicatas
    • Hashing / busca por similaridade contra os dados de treinamento
    • Sobreposição de n-gramas para texto
    • Distância do vizinho mais próximo no espaço de embeddings (embedding space) (sinalizar amostras incomumente próximas)
  • Ataques de inferência de pertencimento
    • Treinar modelos de ataque para prever pertencimento a partir das saídas do gerador ou do comportamento do modelo posterior
  • Testes de inferência de atributos
    • Medir quão bem atributos sensíveis podem ser previstos a partir de quase-identificadores em sintético vs real
  • Testes de exposição de canário (canary)
    • Inserir strings/registros únicos “canário” no treinamento e ver se o gerador os reproduz
    • Útil para síntese com modelos de linguagem de grande porte e conjuntos de dados com muito texto

Nenhum teste isolado é suficiente; combine-os com modelagem de ameaças (threat modeling).

Privacidade diferencial (differential privacy, DP): a mitigação de propósito geral mais forte

Privacidade diferencial (differential privacy, DP) fornece uma garantia matemática que limita o quanto os dados de qualquer indivíduo podem afetar a saída de um cálculo. Em dados sintéticos, DP pode ser aplicada:

  • Durante o treinamento (por exemplo, DP-SGD para modelos neurais)
  • Durante a liberação de estatísticas usadas para ajustar um gerador
  • Por meio de mecanismos de DP em sistemas de síntese baseados em consultas

DP costuma ser o caminho mais claro para alegações de privacidade defensáveis, mas traz:

  • Custo de utilidade (especialmente para conjuntos de dados pequenos ou distribuições complexas)
  • A necessidade de gerenciar um orçamento de privacidade (privacy budget) (ε, δ)
  • Complexidade de engenharia e contabilização cuidadosa

DP não resolve automaticamente todos os problemas de governança, mas reduz materialmente o risco de vazamento em comparação com anonimização ad hoc.

Controles práticos de risco (defesas em camadas)

Trate releases de dados sintéticos como um produto com requisitos de segurança:

  1. Minimize campos sensíveis
    • Se você não precisa de nomes, e-mails, notas em texto livre, remova-os antes de qualquer síntese.
  2. Use um conjunto de retenção
    • Mantenha um conjunto real de retenção para avaliação e testes de privacidade; não treine o gerador nele.
  3. Aplique treinamento com preservação de privacidade
    • Prefira DP quando viável; caso contrário, regularize, faça early stopping e ajuste para reduzir memorização.
  4. Filtragem pós-geração
    • Remova amostras muito próximas de exemplos de treinamento (limiares de distância, deduplicação).
    • Redija padrões (e-mails, números de telefone) do texto.
  5. Controle de acesso e auditoria
    • Dados sintéticos ainda podem ser sensíveis. Use os mesmos controles que dados reais quando o risco justificar (veja Segurança de Dados).
  6. Documente uso pretendido e restrições
  7. Revisão jurídica e de conformidade
    • “Sintético” não significa automaticamente “não pessoal” sob muitos regimes de privacidade se a reidentificação for plausível.

Vazamento em texto sintético gerado por modelos de linguagem de grande porte: considerações especiais

Modelos de linguagem de grande porte podem gerar registros altamente realistas (tickets de suporte, anotações médicas, transcrições de chat). Questões adicionais incluem:

  • Extração baseada em prompts: prompts adversariais podem forçar sequências memorizadas.
  • Mimetismo de estilo: mesmo sem vazamento literal, saídas podem revelar formulações específicas da organização ou fluxos de trabalho proprietários.
  • Contaminação de dados: texto gerado pode incluir inadvertidamente conteúdo protegido por direitos autorais ou sensível.

Mitigações:

  • Evite treinar ou fazer prompts com PII bruta.
  • Use templates estritos e decodificação restrita quando possível.
  • Execute testes de canário e varreduras de similaridade contra o corpus de origem.
  • Prefira DP ou outras técnicas de treinamento com preservação de privacidade para modelos expostos a usuários não confiáveis.

Projetando um fluxo de trabalho de dados sintéticos (ponta a ponta)

Um processo robusto se parece com isto:

1) Defina o objetivo e o modelo de ameaças

  • Quem usará os dados sintéticos?
  • Quais capacidades de adversário você assume?
  • Qual é o risco residual aceitável?

Isso deve se alinhar à Governança de Dados e às políticas de privacidade da sua organização.

2) Especifique o que deve ser preservado

Exemplos:

  • Para ML: relações condicionais relevantes para o rótulo
  • Para analytics: agregados por subgrupo e tempo
  • Para testes: esquema, casos extremos, integridade referencial

3) Escolha uma abordagem

  • Simulação para controle e restrições
  • Modelos estatísticos para síntese tabular estável
  • Modelos generativos profundos para distribuições complexas e dados não estruturados
  • Variantes com DP se o compartilhamento externo estiver planejado

4) Treine e gere com guardrails

  • Use divisões de treino/validação
  • Evite treinar com campos que você não quer refletidos nas saídas
  • Registre hiperparâmetros e sementes aleatórias para reprodutibilidade (veja Versionamento de Dados)

5) Avalie: utilidade + privacidade + validade

  • TSTR contra conjunto real de retenção
  • Verificações distributivas
  • Verificações de restrições
  • Testes de vazamento (duplicatas, inferência de pertencimento, canários)

6) Decida sobre release e controles

  • Apenas interno vs release externo
  • Licenciamento/termos de uso
  • Registro de acesso, limites de taxa e monitoramento se servido via uma API

7) Monitore deriva e atualize com responsabilidade

Geradores sintéticos podem sofrer deriva se forem retreinados sobre dados reais em evolução. Acompanhe mudanças como qualquer conjunto de dados (veja Qualidade de Dados e Deriva).

Exemplos práticos

Exemplo A: dados tabulares sintéticos para analytics de parceiros

Um hospital quer compartilhar analytics de fluxo de pacientes com um parceiro de pesquisa.

  • Objetivo: preservar taxas de chegada, distribuições de tempo de permanência e correlações com demografia grosseira.
  • Abordagem: gerar episódios sintéticos usando um modelo estatístico ou um mecanismo baseado em DP.
  • Testes de utilidade: comparar agregados por subgrupo e sazonalidade de séries temporais.
  • Testes de privacidade: inferência de pertencimento; similaridade por vizinho mais próximo; remover diagnósticos raros ou torná-los mais agregados.
  • Governança: incluir um datasheet descrevendo campos, uso pretendido e tentativas proibidas de reidentificação.

Exemplo B: imagens sintéticas para detecção de defeitos raros

Um fabricante precisa de mais exemplos de defeitos raros.

  • Objetivo: melhorar o recall em classes de defeitos raros sem coletar milhares de novas imagens.
  • Abordagem: simulação/renderização com parâmetros de defeito controlados, ou aumento baseado em modelos de difusão.
  • Testes de utilidade: treinar com real+sintético, validar em conjunto real de retenção; medir recall por classe e calibração.
  • Riscos: características “atalho” do renderizador (iluminação/fundo) causam baixa generalização no mundo real.
  • Mitigação: randomização de domínio, composição com fundos reais e avaliação cuidadosa em dados reais.

Exemplo C: tickets sintéticos de suporte ao cliente para testes de pipeline

Uma equipe quer dados de teste reproduzíveis para ETL e ingestão.

  • Objetivo: registros de texto válidos no esquema, com comprimentos representativos e casos extremos (campos ausentes, unicode, mensagens longas).
  • Abordagem: geração por templates + paráfrase por modelos de linguagem de grande porte com filtros de regex estritos.
  • Utilidade: não é sobre treinamento de modelo; medir correção e desempenho do pipeline.
  • Privacidade: garantir que nenhum texto real de ticket seja usado; bloquear e-mails/telefones; manter controles de acesso mesmo assim.

Armadilhas comuns e anti-padrões

  • Assumir que dados sintéticos são automaticamente anônimos
    • Eles ainda podem vazar pertencimento ou atributos.
  • Otimizar apenas métricas de realismo
    • Um gerador que corresponde perfeitamente aos dados reais pode ser mais perigoso.
  • Avaliar em conjuntos de teste sintéticos
    • Sempre avalie utilidade em um conjunto real de retenção para afirmações sobre o mundo real.
  • Ignorar grupos minoritários
    • Dados sintéticos podem sub-representar ou distorcer subpopulações pequenas; avalie utilidade por subgrupo explicitamente.
  • Sem documentação
    • Sem um datasheet, usuários vão confiar demais e fazer mau uso de dados sintéticos.

Checklist de melhores práticas

  • Defina o uso pretendido e as propriedades exigidas (alvos de utilidade, restrições).
  • Mantenha um conjunto real de retenção apenas para avaliação.
  • Meça utilidade com TSTR (e métricas relevantes para a tarefa).
  • Valide restrições (esquema, invariantes, integridade referencial).
  • Execute testes de vazamento (duplicatas, busca por similaridade, inferência de pertencimento, canários para texto).
  • Prefira DP para releases externos quando viável, e acompanhe o orçamento de privacidade.
  • Filtre e redija pós-geração, especialmente para texto livre.
  • Aplique controles de governança e segurança apropriados ao risco residual.
  • Documente proveniência, método de geração, resultados de avaliação e limitações em um datasheet.

Como dados sintéticos se encaixam em um programa de dados mais amplo

Dados sintéticos não substituem boas práticas de dados; são uma ferramenta que interage com elas:

Quando bem usados, dados sintéticos podem desbloquear colaboração, acelerar desenvolvimento e melhorar a robustez de modelos — ao mesmo tempo em que reduzem (não eliminam) os riscos associados ao manuseio de dados reais sensíveis ou escassos.