El desacuerdo entre clasificadores pierde contra algo mucho más simple
Media sobre 7.822 correos reales si el desacuerdo entre cuatro clasificadores sirve para decidir qué revisa antes un analista. Esperaba que sí. Los datos dicen que pierde claramente contra una señal más simple: la incertidumbre media del propio ensemble.
- machine-learning
- phishing
- triaje
- soc
- scikit-learn
- investigacion
Un analista no puede revisar todo el correo que marca un clasificador. La pregunta que quería responder con datos, no con intuición: puede el desacuerdo entre varios clasificadores decirle a ese analista cuál revisar primero. La motivación venía de dos sitios muy distintos: los modelos de verificación del BSC para catalán, que entrenan dos copias del mismo reconocedor de voz con mitades disjuntas del corpus para que sus errores no estén correlacionados, y un estudio de 2026 sobre transcripción médica que usa el desacuerdo entre ocho transcriptores como señal sin referencia para decidir qué revisa un humano, recuperando el 93,7% de los errores revisando el 28,6% del texto. La estructura del problema en un SOC es idéntica: sin verdad de referencia, con revisión humana cara y escasa. Parecía trasladable.
El resultado, en una línea
Sobre 7.822 correos reales (Nazario phishing corpus + SpamAssassin público), el desacuerdo funciona para priorizar la revisión (AUC 0,905 frente a 0,515 del azar), pero pierde claramente contra una señal mucho más simple: la incertidumbre media del propio ensemble, con AUC 0,959. Para capturar el 95% de los errores hace falta revisar el 14,10% del correo mirando solo la incertidumbre media. Con el desacuerdo por desviación, hacen falta el 22,62%. No hace falta ensemble para el resultado bueno: basta con mirar dónde el modelo no está seguro.
| Señal de prioridad | AUC de triaje | Correo a revisar para el 95% de errores |
|---|---|---|
| Oráculo (techo teórico) | 0,991 | 1,75% |
| Incertidumbre media | 0,959 | 14,10% |
| Desacuerdo: desviación | 0,905 | 22,62% |
| Desacuerdo: fuerza de mayoría | 0,907 | 41,20% |
| Azar (suelo) | 0,515 | 97,66% |
Por qué falló la hipótesis
El ensemble da cuatro vistas del mismo correo (remitente, URLs, estructura del HTML y texto), pero no son igual de fuertes. La vista de texto (TF-IDF más regresión logística) sola llega a 98,17% de exactitud y AUC 0,998, prácticamente igualando al ensemble completo. Cuando un miembro es muy superior al resto, el desacuerdo deja de medir duda genuina y pasa a medir que los débiles se equivocan, algo que no informa sobre si el ensemble acierta. Ahí está la diferencia con el montaje del BSC: sus dos modelos tienen tasas de error casi idénticas por diseño. Esa parece ser la condición que hace útil al desacuerdo, y es una condición que aquí no se cumple.
El control que casi inválida el experimento
Los corpus públicos de phishing arrastran un problema que casi nunca se declara: el correo legítimo y el phishing vienen de épocas distintas: el 87% del phishing es de 2004-2007, el legítimo es de 2002. Clasificar usando solo el año da 99,74% de exactitud: el atajo existe y es casi perfecto. Restringiendo la evaluación a la franja donde ambas clases se solapan (2004 o antes), el rendimiento no cae (98,31%, AUC 1,000), lo que indica que el modelo no está usando ese atajo, aunque con la cautela de que esa franja solo tiene 31 casos de phishing: evidencia indicativa, no concluyente.
Límites, dichos sin adornos
- No dice que el desacuerdo sea inútil. Dice que pierde contra un baseline más simple en este montaje concreto, con vistas de fuerza desigual.
- Solo 43 errores en la partición de prueba: las curvas de triaje son ruidosas.
- El corpus es de 2004-2007: sin HTTPS generalizado, sin acortadores, sin typosquatting moderno. Las conclusiones de método deberían aguantar; las cifras absolutas no son extrapolables a un SOC de hoy.
- Una única partición 70/30 con semilla fija, sin validación cruzada.
Es el mismo problema, visto desde el otro lado, que trabajo en el clasificador de phishing en el navegador: allí la pregunta era clasificar bien sin mandar nada a un servidor; aquí, una vez clasificado, que le hace perder menos tiempo al analista que tiene que revisarlo. El siguiente experimento que tengo en la lista: repetir esto con cuatro modelos de la misma familia entrenados sobre particiones disjuntas del corpus, replicando el método del BSC en vez de solo su intuición, para comprobar si el desacuerdo remonta al equiparar fuerzas entre vistas. El código, los experimentos y el README completo con todos los números están publicados.