Saltar al contenido
Volver al blog
4 min es

El desacuerdo entre clasificadores pierde contra algo mucho mas simple

Media sobre 7.822 correos reales si el desacuerdo entre cuatro clasificadores sirve para decidir que revisa antes un analista. Esperaba que si. Los datos dicen que pierde claramente contra una senal mas simple: la incertidumbre media del propio ensemble.

  • machine-learning
  • phishing
  • triaje
  • soc
  • scikit-learn
  • investigacion
El desacuerdo entre clasificadores pierde contra algo mucho mas simple

Un analista no puede revisar todo el correo que marca un clasificador. La pregunta que queria responder con datos, no con intuicion: puede el desacuerdo entre varios clasificadores decirle a ese analista cual revisar primero. La motivacion venia de dos sitios muy distintos: los modelos de verificacion del BSC para catalan, que entrenan dos copias del mismo reconocedor de voz con mitades disjuntas del corpus para que sus errores no esten correlacionados, y un estudio de 2026 sobre transcripcion medica que usa el desacuerdo entre ocho transcriptores como senal sin referencia para decidir que revisa un humano, recuperando el 93,7% de los errores revisando el 28,6% del texto. La estructura del problema en un SOC es identica: sin verdad de referencia, con revision humana cara y escasa. Parecia trasladable.

El resultado, en una linea

Sobre 7.822 correos reales (Nazario phishing corpus + SpamAssassin publico), el desacuerdo funciona para priorizar la revision (AUC 0,905 frente a 0,515 del azar), pero pierde claramente contra una senal mucho mas 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 desviacion, hacen falta el 22,62%. No hace falta ensemble para el resultado bueno: basta con mirar donde el modelo no esta seguro.

Senal de prioridadAUC de triajeCorreo a revisar para el 95% de errores
Oraculo (techo teorico)0,9911,75%
Incertidumbre media0,95914,10%
Desacuerdo: desviacion0,90522,62%
Desacuerdo: fuerza de mayoria0,90741,20%
Azar (suelo)0,51597,66%

Por que fallo la hipotesis

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 mas regresion logistica) sola llega a 98,17% de exactitud y AUC 0,998, practicamente 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 debiles se equivocan, algo que no informa sobre si el ensemble acierta. Ahi esta la diferencia con el montaje del BSC: sus dos modelos tienen tasas de error casi identicas por diseno. Esa parece ser la condicion que hace util al desacuerdo, y es una condicion que aqui no se cumple.

El control que casi invalida el experimento

Los corpus publicos de phishing arrastran un problema que casi nunca se declara: el correo legitimo y el phishing vienen de epocas distintas: el 87% del phishing es de 2004-2007, el legitimo es de 2002. Clasificar usando solo el ano da 99,74% de exactitud: el atajo existe y es casi perfecto. Restringiendo la evaluacion 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 esta usando ese atajo, aunque con la cautela de que esa franja solo tiene 31 casos de phishing: evidencia indicativa, no concluyente.

Limites, dichos sin adornos

  • No dice que el desacuerdo sea inutil. Dice que pierde contra un baseline mas simple en este montaje concreto, con vistas de fuerza desigual.
  • Solo 43 errores en la particion 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 metodo deberian aguantar; las cifras absolutas no son extrapolables a un SOC de hoy.
  • Una unica particion 70/30 con semilla fija, sin validacion cruzada.

Es el mismo problema, visto desde el otro lado, que trabajo en el clasificador de phishing en el navegador: alli la pregunta era clasificar bien sin mandar nada a un servidor; aqui, 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 metodo del BSC en vez de solo su intuicion, para comprobar si el desacuerdo remonta al equiparar fuerzas entre vistas. El codigo, los experimentos y el README completo con todos los numeros estan publicados.