Capítulo 6 — Recogida y análisis de datos
Mapa de la lección
Lección 06 publicada. Mapa, ejemplo, EX033.
flowchart TD
N0["Resultados de aprendizaje"]
N1["6.1 Ejecutar el estudio principal"]
N2["6.2 Comprobaciones de la calidad de los datos"]
N3["6.3 Análisis principal"]
N4["6.4 Resultados secundarios y costes"]
N5["6.6 Actividades de práctica"]
N6["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX033"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["6.1 Ejecutar el estudio principal"]
N2["6.2 Comprobaciones de la calidad de los datos"]
N3["6.3 Análisis principal"]
N4["6.4 Resultados secundarios y costes"]
N5["6.6 Actividades de práctica"]
N6["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX033"]
[Resultados de aprendizaje]
|
v
[6.1 Ejecutar el estudio principal]
|
v
[6.2 Comprobaciones de la calidad de los datos]
|
v
[6.3 Análisis principal]
|
v
[6.4 Resultados secundarios y costes]
|
v
[6.6 Actividades de práctica]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX033]
Resultados de aprendizaje
Usted será capaz de (1) ejecutar los experimentos principales exactamente según lo planificado y registrar las desviaciones; (2) comprobar la calidad de los datos antes del análisis; (3) calcular los resultados principales con su incertidumbre (intervalos de Wilson, bootstrap, variación entre semillas); (4) analizar comparaciones emparejadas y resultados secundarios; y (5) presentar los resultados en tablas y figuras que respondan a la pregunta de investigación.
6.1 Ejecutar el estudio principal
Congele el código en un commit etiquetado, bloquee los archivos de configuración y ejecute las condiciones en un orden intercalado o aleatorio, para que los problemas dependientes del tiempo (un nodo que se ralentiza, una actualización de una biblioteca) no coincidan con una sola condición. Cada ejecución escribe un registro: condición, semilla, hash de la configuración, hora de inicio y de fin, métricas y rutas a las salidas en bruto. Mantenga un registro de desviaciones como en el piloto. Las ejecuciones de Leo se intercalaron por condición y semilla, y su registro de desviaciones recogió la ejecución ausente de la semilla 4 y su reejecución. Revise el registro antes del análisis, no después.
6.2 Comprobaciones de la calidad de los datos
Antes de calcular nada, compruebe: ¿están presentes todas las ejecuciones previstas? ¿Se superan las comprobaciones canario (el modelo sin defensa debe ser atacable; un modelo entrenado con etiquetas barajadas debería rendir al nivel del azar)? ¿Hay duplicados entre particiones? ¿Están los valores de las métricas dentro de intervalos plausibles? Estas comprobaciones detectan errores que, de otro modo, se convertirían en «hallazgos». Las comprobaciones de Leo encontraron una ejecución ausente de la semilla 4, que se reejecutó y se registró antes del análisis. Escriba las comprobaciones como un script para que se ejecuten igual cada vez, y guarde su salida junto con los resultados.
6.3 Análisis principal
Calcule el resultado principal por condición con intervalos. Para tasas, use intervalos de Wilson; para métricas promediadas sobre elementos, haga bootstrap sobre los elementos; informe aparte de la variación entre semillas. Para comparaciones emparejadas (los mismos registros o instrucciones en todas las condiciones), haga bootstrap de la diferencia. Siga el plan de análisis; etiquete cualquier análisis adicional como exploratorio. Cuando se hacen varias comparaciones, corrija por multiplicidad o preséntelas como exploratorias. El laboratorio siguiente muestra las tres herramientas. Con 3 éxitos de 20, el intervalo de Wilson va del 5 % al 36 %: una muestra tan pequeña no puede sustentar una afirmación precisa. Las tasas por semilla muestran la dispersión de una semilla a otra. El bootstrap emparejado estima la reducción que logra una defensa sobre las mismas instrucciones, con un intervalo que excluye el cero.
"""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}]")
Salida 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 Resultados secundarios y costes
Toda mejora de seguridad tiene costes: exactitud, latencia, rechazos de peticiones legítimas, cómputo, mantenibilidad. Infórmelos sobre los mismos elementos. Una defensa de la privacidad que reduce la fuga a la mitad pero hace caer el F1 macro 10 puntos es una propuesta distinta de otra que cuesta 1 punto. Represente el compromiso (por ejemplo, la TPR con una FPR del 1 % frente al F1 macro) para todas las condiciones. El resultado de Leo es del segundo tipo: la eliminación de casi duplicados redujo la TPR con una FPR del 1 % a menos de la mitad, hasta el 4,2 %, mientras el F1 macro caía menos de un punto. Informe de ambos números juntos, con intervalos, para que los lectores puedan sopesar el compromiso por sí mismos.
6.5 Ejemplo resuelto (caso sintético de Harbourline)
Resultados principales de Leo (sintéticos, cinco semillas, 20.000 registros): la TPR con una FPR del 1 % bajo el ataque calibrado fue del 9,8 % (original), 7,9 % (eliminación aleatoria), 5,1 % (eliminación de duplicados exactos) y 4,2 % (eliminación de casi duplicados). La diferencia emparejada entre la eliminación de casi duplicados y la eliminación aleatoria fue de 3,7 puntos (IC del 95 % por bootstrap: 2,6–4,9). El F1 macro cayó de 0,912 a 0,905 con la eliminación de casi duplicados. Las comprobaciones de calidad de los datos encontraron una ejecución ausente de la semilla 4, que se reejecutó y se registró. Un análisis exploratorio, etiquetado como tal, mostró que la fuga se concentraba en los registros que habían aparecido tres o más veces. El hallazgo exploratorio sobre los registros vistos tres o más veces es una hipótesis para trabajos futuros, no un resultado confirmado.
6.6 Actividades de práctica
- Redacte una lista de comprobación de la calidad de los datos para su estudio y aplíquela. 2. Elabore la tabla principal con intervalos. 3. Represente el compromiso entre seguridad y utilidad. En la lista de comprobación, incluya todas las ejecuciones previstas, las comprobaciones canario, los duplicados entre particiones y los intervalos plausibles, y aplíquela antes de cualquier análisis. En la tabla principal, dé el resultado de cada condición con un intervalo y el número de semillas. En el gráfico, enfrente la métrica de privacidad al F1 macro para cada condición, de modo que el lector vea el compromiso de un vistazo, como hace la figura de Leo.
6.7 Errores y límites
Cuatro errores se repiten, y cada uno sesga los resultados u oculta costes; revise su análisis en busca de los cuatro:
- Ejecutar todas las semillas de una condición antes que las de otra; esto permite que los problemas dependientes del tiempo, como un nodo que se ralentiza, coincidan con esa condición.
- Analizar antes de las comprobaciones de calidad; esto convierte los errores, como la ejecución ausente de la semilla 4 que encontraron las comprobaciones de Leo, en hallazgos.
- Mezclar resultados exploratorios y confirmatorios; esto exagera la certeza.
- Informar de las mejoras de seguridad sin sus costes; esto oculta compromisos, como la caída del F1 macro de 0,912 a 0,905 de la que Leo informó.
Ejercicios — capítulo 6
- EX033 — Intercalado. ¿Por qué intercalar las condiciones durante las ejecuciones? Rúbrica: 3 = evita que los problemas dependientes del tiempo se confundan con las condiciones; 2 = parcial; 1 = vago; 0 = incorrecto.
- EX034 — Comprobaciones de calidad. Enumere cuatro comprobaciones de la calidad de los datos. Rúbrica: 3 = completitud, canarios, duplicados entre particiones, intervalos plausibles; 2 = tres; 1 = una o dos; 0 = ninguna.
- EX035 — Lectura del laboratorio. ¿Cuáles son la ASR de referencia, la ASR con defensa y el intervalo de la reducción en el laboratorio de estadística? Rúbrica: 3 = 0.350, 0.190, [0.120, 0.203]; 2 = dos; 1 = uno; 0 = incorrecto.
- EX036 — Emparejado frente a no emparejado. ¿Por qué hacer bootstrap de la diferencia sobre elementos compartidos en lugar de comparar dos intervalos separados? Rúbrica: 3 = la dificultad de los elementos se cancela; inferencia más ajustada y correcta; 2 = parcial; 1 = vago; 0 = incorrecto.
- EX037 — Costes. Nombre cuatro costes que hay que informar para una defensa de seguridad. Rúbrica: 3 = exactitud/utilidad, latencia, rechazos falsos, cómputo/mantenimiento; 2 = tres; 1 = uno o dos; 0 = ninguno.
- EX038 — Exploratorio. ¿Cómo debería informar Leo del hallazgo de las «tres o más apariciones»? Rúbrica: 3 = etiquetado como exploratorio, hipótesis para trabajos futuros, no confirmatorio; 2 = parcial; 1 = presentado como resultado principal; 0 = omitido sin motivo.
Síntesis del capítulo
El análisis es donde el diseño cuidadoso da fruto: las ejecuciones intercaladas, las comprobaciones de calidad, los intervalos y las comparaciones emparejadas convierten los registros en bruto en una respuesta defendible, y los costes hacen útil la respuesta.
Siga estudiando — capítulo 06 de 08
← Capítulo 05 (borrador) · Índice de capítulos del curso · Capítulo 07 (borrador) →