Capítulo 38 — Implementación del proyecto final
Mapa de la lección
Lección 38 publicada. Mapa, ejemplo, EX112.
flowchart TD
N0["Resultados de aprendizaje"]
N1["38.1 Incrementos"]
N2["38.2 Registros de decisiones"]
N3["38.3 Evaluación"]
N4["38.4 Leer la matriz de confusión"]
N5["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX112"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["38.1 Incrementos"]
N2["38.2 Registros de decisiones"]
N3["38.3 Evaluación"]
N4["38.4 Leer la matriz de confusión"]
N5["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX112"]
[Resultados de aprendizaje]
|
v
[38.1 Incrementos]
|
v
[38.2 Registros de decisiones]
|
v
[38.3 Evaluación]
|
v
[38.4 Leer la matriz de confusión]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX112]
Resultados de aprendizaje
Usted podrá (1) implementar el artefacto de un proyecto final en incrementos pequeños y probados; (2) mantener un registro de cambios y un registro de decisiones; (3) evaluar el artefacto con un conjunto etiquetado mediante una matriz de confusión; y (4) comunicar la precisión y la exhaustividad con sus denominadores.
38.1 Incrementos
Construya primero la versión completa más pequeña: leer un archivo de captura, clasificar cada escritura, imprimir las decisiones. Después añada las reglas una a una, cada una con pruebas (capítulo 8) y vectores de conformidad (capítulo 27). Una herramienta pequeña que funciona en la semana 4 vale más que una ambiciosa que nunca llega a ejecutarse. La versión de la semana 4 de Maya leía una captura sintética, clasificaba cada escritura Modbus frente a la lista de permitidos del capítulo 27 e imprimía una decisión por línea. La regla de frecuencia llegó después, con sus propias pruebas, y la regla de cambio acumulado solo después de que la evaluación mostrara que no se detectaba el ataque de deriva. Cada incremento podía ejecutarse y comprobarse frente a los ocho casos etiquetados antes de empezar el siguiente.
38.2 Registros de decisiones
Cuando elija, registre por qué: «Decisión 7: tratar las escrituras durante una ventana de mantenimiento programada como benign-maint solo si el identificador de la incidencia aparece en la lista de la ventana; alternativas consideradas: regla solo horaria (rechazada: los internos podrían sincronizar sus ataques con ella)». Los registros de decisiones permiten a los examinadores seguir el razonamiento. Las decisiones posteriores de Maya siguen el mismo formato. Tras la evaluación, un registro añade una regla de cambio acumulado para el ataque de deriva no detectado, y rechaza la alternativa de un umbral menor por escritura porque marcaba los ajustes ordinarios de los operadores. Otro registra la correlación de las escrituras del HMI con los eventos de inicio de sesión de los operadores, para abordar la escritura del punto de consigna que procedía de HMI-1, un origen permitido.
38.3 Evaluación
El laboratorio evalúa la salida de un monitor en ocho casos etiquetados del conjunto sintético de Maya.
"""Lab 38: capstone evaluation - precision/recall with denominators (synthetic results)."""
cases = [("replay", True, True), ("replay", True, True), ("setpoint", True, False), ("setpoint", True, True),
("benign-maint", False, True), ("benign", False, False), ("benign", False, False), ("drift", True, False)]
tp = sum(a and d for _, a, d in cases); fp = sum((not a) and d for _, a, d in cases)
fn = sum(a and not d for _, a, d in cases); tn = sum((not a) and not d for _, a, d in cases)
print(f"TP={tp} FP={fp} FN={fn} TN={tn}")
print(f"precision={tp}/{tp+fp}={tp/(tp+fp):.2f} recall={tp}/{tp+fn}={tp/(tp+fn):.2f}")
print("missed classes:", sorted({c for c, a, d in cases if a and not d}))
Ejecútelo con python3 lab_eval.py. Salida verificada:
TP=3 FP=1 FN=2 TN=2
precision=3/4=0.75 recall=3/5=0.60
missed classes: ['drift', 'setpoint']
Los ocho casos incluyen cinco ataques y tres escrituras benignas, entre ellas una escritura de mantenimiento. El laboratorio calcula la precisión y la exhaustividad a partir de las etiquetas del monitor e imprime la matriz de confusión. El conjunto es de juguete: su propósito es mostrar qué clases no detecta el monitor, y un noveno caso podría cambiar todas las tasas. Su valor está en que cada caso tiene una respuesta conocida escrita antes de ejecutar el monitor, así que una discrepancia siempre es un error del monitor o de la etiqueta, y Maya registra cuál.
38.4 Leer la matriz de confusión
Tres verdaderos positivos, un falso positivo (una escritura de mantenimiento marcada), dos falsos negativos (un ataque de punto de consigna y el ataque de deriva no detectados), dos verdaderos negativos. Precisión 3/4 = 0,75; exhaustividad 3/5 = 0,60. Ocho casos son demasiado pocos para obtener tasas precisas —un intervalo de Wilson para 3/5 abarca aproximadamente de 0,23 a 0,88—, así que el uso honesto de esta tabla es encontrar clases de fallo, no clasificar herramientas. El único falso positivo es la escritura de mantenimiento, que la decisión 7 trata como benigna solo cuando el identificador de su incidencia aparece en la lista de la ventana. Los dos fallos de detección apuntan a correcciones distintas, una regla de cambio acumulado para el ataque de deriva y la correlación con los inicios de sesión para la escritura desde HMI-1, y por eso Maya examina cada clase por separado en lugar de ajustar un único umbral.
Ejemplo resuelto (LDHP sintética)
Maya examina los dos fallos de detección. El ataque de deriva usó muchas escrituras pequeñas, cada una dentro del rango permitido: un monitor basado en reglas sin una regla de frecuencia o de tendencia no puede verlo. El ataque de punto de consigna no detectado procedía del propio HMI-1, que está en la lista de permitidos. Ambos llevan a nuevos registros de decisión: añadir una regla de cambio acumulado y correlacionar las escrituras del HMI con los eventos de inicio de sesión de los operadores.
Caso sintético — Lakeside District Heating Plant. Los ocho casos son un conjunto de juguete con fines ilustrativos.
Errores y límites
Las etiquetas solo son tan buenas como el autor del escenario; un ataque etiquetado como «benigno» corrompe todas las métricas. No ajuste las reglas con los casos de evaluación para después comunicar los mismos números.
Ejercicios — capítulo 38
- EX112 — Corregir el falso positivo. Proponga un cambio que evite marcar la escritura de mantenimiento sin ocultar ataques reales. Rúbrica: 3 = exigir que coincidan la incidencia/ventana y la cuenta de ingeniería, y seguir registrándola; 2 = parcial; 1 = ignorar el horario de mantenimiento; 0 = nada.
- EX113 — Exhaustividad tras una corrección. Si la regla de cambio acumulado detecta el caso de deriva y nada más cambia, ¿cuál es la nueva exhaustividad? Rúbrica: 3 = 4/5 = 0,80; 2 = número correcto sin fracción; 1 = 0,75; 0 = nada.
- EX114 — Por qué importa el intervalo. Explique por qué la exhaustividad de 0,60 no puede compararse con el 0,70 de otra herramienta en un conjunto distinto de 10 casos. Rúbrica: 3 = muestras diminutas, intervalos amplios que se solapan, distinta combinación de casos; 2 = uno; 1 = «herramientas distintas»; 0 = nada.
Síntesis del capítulo
Implemente en incrementos probados, registre las decisiones y use los conjuntos de evaluación pequeños para encontrar clases de fallo, no para afirmar tasas.
Siga estudiando — capítulo 38 de 40
← Capítulo 37 (borrador) · Índice de capítulos del curso · Capítulo 39 (borrador) →