OpenCyber Academy
Mestrado · Capítulo 6 · Português
Código do curso: OCA-181Capítulo 06: OCA-181-C006

Capítulo 6 — Coleta e análise de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Mapa da aula

Aula 06 publicada. Mapa, exemplo, EX033.

flowchart TD
  N0["6.1 Execução do estudo principal"]
  N1["6.2 Verificações de qualidade dos dados"]
  N2["6.3 Análise primária"]
  N3["6.4 Desfechos secundários e custos"]
  N4["6.6 Atividades práticas"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX033"]

Desenho lógico

flowchart LR
  N0["6.1 Execução do estudo principal"]
  N1["6.2 Verificações de qualidade dos dados"]
  N2["6.3 Análise primária"]
  N3["6.4 Desfechos secundários e custos"]
  N4["6.6 Atividades práticas"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX033"]
[6.1 Execução do estudo principal]
    |
    v
[6.2 Verificações de qualidade dos dados]
    |
    v
[6.3 Análise primária]
    |
    v
[6.4 Desfechos secundários e custos]
    |
    v
[6.6 Atividades práticas]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX033]

Objetivos de aprendizagem

Você vai (1) executar os experimentos principais exatamente como planejado e registrar os desvios; (2) verificar a qualidade dos dados antes da análise; (3) calcular os desfechos primários com incerteza (intervalos de Wilson, bootstrap, variação entre sementes); (4) analisar comparações pareadas e desfechos secundários; e (5) apresentar os resultados em tabelas e figuras que respondam à pergunta de pesquisa.

6.1 Execução do estudo principal

Congele o código num commit marcado com tag, trave os arquivos de configuração e execute as condições em ordem intercalada ou aleatorizada, para que problemas dependentes do tempo (um nó ficando lento, uma atualização de biblioteca) não coincidam com uma única condição. Cada execução grava um registro: condição, semente, hash da configuração, horários de início e fim, métricas e caminhos para as saídas brutas. Mantenha um registro de desvios, como no piloto. As execuções de Leo foram intercaladas por condição e semente, e o seu registro de desvios anotou a execução ausente da semente 4 e a sua reexecução. Confira o registro antes da análise, não depois.

6.2 Verificações de qualidade dos dados

Antes de calcular qualquer coisa, verifique: todas as execuções esperadas estão presentes? As verificações-canário passam (o modelo sem defesa precisa ser atacável; um modelo treinado com rótulos embaralhados deve ter desempenho de acaso)? Há duplicatas entre as partições? Os valores das métricas estão em faixas plausíveis? Essas verificações pegam defeitos que, de outro modo, virariam "achados". As verificações de Leo encontraram uma execução ausente da semente 4, que foi reexecutada e registrada antes da análise. Escreva as verificações como um script, para que rodem sempre da mesma forma, e guarde a saída delas junto com os resultados.

6.3 Análise primária

Calcule o desfecho primário por condição, com intervalos. Para taxas, use intervalos de Wilson; para métricas calculadas como média sobre itens, faça bootstrap sobre os itens; relate a variação entre sementes separadamente. Para comparações pareadas (os mesmos registros ou prompts em todas as condições), faça bootstrap da diferença. Siga o plano de análise; rotule qualquer análise extra como exploratória. Quando fizer várias comparações, corrija para a multiplicidade ou apresente-as como exploratórias. O laboratório abaixo demonstra as três ferramentas. Com 3 sucessos em 20, o intervalo de Wilson vai de 5% a 36%: uma amostra tão pequena não sustenta uma alegação precisa. As taxas por semente mostram a dispersão de uma semente para outra. O bootstrap pareado estima a redução proporcionada por uma defesa sobre os mesmos prompts, com um intervalo que exclui o zero.

"""Lab S: reporting attack-success rates honestly: Wilson intervals,
seed variation and a paired bootstrap. Synthetic trial outcomes only."""
import math, random
def wilson(k, n, z=1.96):
    p = k/n; d = 1 + z*z/n
    c = (p + z*z/(2*n))/d; h = z*math.sqrt(p*(1-p)/n + z*z/(4*n*n))/d
    return c - h, c + h
for k, n in ((3, 20), (30, 200), (300, 2000)):
    lo, hi = wilson(k, n); print(f"successes={k}/{n} rate={k/n:.3f} wilson95=[{lo:.3f}, {hi:.3f}]")
# five seeds of a synthetic defence evaluation: per-seed attack success rate
rates = []
for seed in range(5):
    r = random.Random(seed); rates.append(sum(r.random() < 0.12 for _ in range(200))/200)
m = sum(rates)/5; sd = math.sqrt(sum((x-m)**2 for x in rates)/4)
print("per-seed rates:", " ".join(f"{x:.3f}" for x in rates), f"mean={m:.3f} sd={sd:.3f}")
# paired bootstrap: baseline vs defence on the same 300 synthetic prompts
r = random.Random(42)
base = [r.random() < 0.30 for _ in range(300)]
defn = [b and r.random() < 0.6 for b in base]   # defence blocks ~40% of successes
diffs = []
for _ in range(2000):
    idx = [r.randrange(300) for _ in range(300)]
    diffs.append(sum(base[i] for i in idx)/300 - sum(defn[i] for i in idx)/300)
diffs.sort()
print(f"baseline_asr={sum(base)/300:.3f} defended_asr={sum(defn)/300:.3f} "
      f"reduction_ci95=[{diffs[50]:.3f}, {diffs[1949]:.3f}]")

Saída esperada:

successes=3/20 rate=0.150 wilson95=[0.052, 0.360]
successes=30/200 rate=0.150 wilson95=[0.107, 0.206]
successes=300/2000 rate=0.150 wilson95=[0.135, 0.166]
per-seed rates: 0.110 0.130 0.135 0.105 0.145 mean=0.125 sd=0.017
baseline_asr=0.350 defended_asr=0.190 reduction_ci95=[0.120, 0.203]

6.4 Desfechos secundários e custos

Toda melhoria de segurança tem custos: acurácia, latência, recusas de pedidos legítimos, computação, manutenibilidade. Relate-os sobre os mesmos itens. Uma defesa de privacidade que reduz o vazamento pela metade, mas derruba o macro-F1 em 10 pontos, é uma proposta diferente de uma que custa 1 ponto. Faça o gráfico do compromisso (por exemplo, TPR com FPR de 1% versus macro-F1) para todas as condições. O resultado de Leo é do segundo tipo: a dedup aproximada reduziu a TPR com FPR de 1% a menos da metade, para 4,2%, enquanto o macro-F1 caiu menos de um ponto. Relate os dois números juntos, com intervalos, para que os leitores possam pesar o compromisso por si mesmos.

6.5 Exemplo resolvido (caso sintético da Harbourline)

Os resultados principais de Leo (sintéticos, cinco sementes, 20.000 registros): a TPR com FPR de 1% sob o ataque calibrado foi de 9,8% (original), 7,9% (remoção aleatória), 5,1% (dedup exata) e 4,2% (dedup aproximada). A diferença pareada entre a dedup aproximada e a remoção aleatória foi de 3,7 pontos (IC de 95% por bootstrap: 2,6–4,9). O macro-F1 caiu de 0,912 para 0,905 com a dedup aproximada. As verificações de qualidade dos dados encontraram uma execução ausente da semente 4, reexecutada e registrada. Uma análise exploratória, rotulada como tal, mostrou o vazamento concentrado em registros que tinham aparecido três ou mais vezes. O achado exploratório sobre registros vistos três ou mais vezes é uma hipótese para trabalhos futuros, não um resultado confirmado.

6.6 Atividades práticas

  1. Escreva uma lista de verificação de qualidade dos dados para o seu estudo e execute-a. 2. Produza a tabela primária com intervalos. 3. Faça o gráfico do compromisso entre segurança e utilidade. Na lista de verificação, inclua todas as execuções esperadas, verificações-canário, duplicatas entre partições e faixas plausíveis, e execute-a antes de qualquer análise. Na tabela primária, dê o desfecho de cada condição com um intervalo e o número de sementes. No gráfico, coloque a métrica de privacidade contra o macro-F1 para cada condição, para que um leitor veja o compromisso de relance, como faz a figura de Leo.

6.7 Erros e limites

Quatro erros se repetem, e cada um enviesa os resultados ou esconde custos; confira a sua análise quanto aos quatro:

Exercícios

Síntese

A análise é onde o desenho cuidadoso compensa: execuções intercaladas, verificações de qualidade, intervalos e comparações pareadas transformam registros brutos numa resposta defensável, e os custos tornam a resposta útil.

Continue estudando — capítulo 06 de 08

← Capítulo 05 (rascunho) · Índice de capítulos do curso · Capítulo 07 (rascunho) →

Respostas comentadas

EX033. Se as condições rodam em blocos, uma mudança dependente do tempo (hardware, biblioteca, carga) pode se disfarçar de efeito do tratamento; a intercalação espalha esses problemas por todas as condições.

EX034. Todas as execuções presentes; canários passam (modelo sem defesa atacável, modelo com rótulos embaralhados no nível do acaso); nenhuma duplicata entre partições; valores de métricas plausíveis.

EX035. ASR de base 0.350; com defesa 0.190; IC de 95% da redução [0.120, 0.203].

EX036. Os itens variam em dificuldade; o pareamento cancela essa variação compartilhada, dando um intervalo mais estreito e correto para a diferença. Comparar intervalos separados que se sobrepõem é conservador e pode enganar.

EX037. Utilidade/acurácia; latência; recusas indevidas ou falsos positivos; custo de computação e de manutenção.

EX038. Como resultado exploratório, numa subseção rotulada, apresentado como hipótese para trabalho confirmatório futuro.