Spam. ¿Cómo funcionan los filtros bayesianos?

El spam (correo basura en castellano) es uno de los grandes problemas de la red. El uso de filtros para intentar controlar el tráfico de estos correos es muy importante. Uno de los filtros más eficientes que se conocen son los filtros bayesianos. Este filtro está basado en el teorema de Bayes para determinar un correo electrónico como spam o no. El teorema probabilístico de Thomas Bayes resulta útil cuando conocemos el resultado final de un experimento, pero desconocemos alguno de los pasos intermedios en el que estamos interesados. El teorema de Bayes viene dado por el siguiente enunciado: Sea {B1, B2,… , Bn} un sistema completo de sucesos con P(Bi) > 0 para todo i. Si A es un suceso cualquiera se verifica:

  • P(Bi): probabilidades a priori

  • P(Bi/A): probabilidades a posteriori

  • P(A/Bi): verosimilitudes

El primero en hablar de filtros bayesianos fue Mehran Sahami en el año 1998. Ganó bastante atención en el año 2002 cuando Paul Graham publicó en un periódico A plan for spam, donde describe su funcionamiento (incluye algunos ejemplos).

La probabilidad de que un correo electrónico sea spam, considerando que haya ciertas palabras en él, es igual a la probabilidad de encontrar esas ciertas palabras en un correo basura por la probabilidad de que algún correo sea spam, dividido entre la probabilidad de encontrar esas palabras en algún correo. Esto matemáticamente es:

El filtro bayesiano necesita una base de datos que contenga palabras y otros criterios (direcciones IP, hosts,…), para calcular la probabilidad de que un correo determinado sea spam, sacados de un ejemplo de correo basura y de correo válido. A cada palabra se le establece un valor de probabilidad basado en la frecuencia de aparición de dicha palabra en un correo basura frente a un correo válido. Estas asignaciones se realizan a través de un proceso de análisis del correo. Por ejemplo, si la palabra viagra aparece en 600 de 2000 correos de spam y en 3 de 200 correos válidos, la probabilidad de ser spam es 0,9524. De este modo el filtro bayesiano se adapta al usuario, pues si se trata de una empresa de software tratará con mayor probabilidad de spam la palabra viagra que por ejemplo una empresa de productos farmacéuticos, que posiblemente la frecuencia de aparición de viagra en sus correo válidos sea mayor, por lo que la probabilidad de que sea spam disminuye.

Disponiendo de la base de datos el filtro podrá actuar. Cuando se recibe un nuevo correo, el análisis consiste en descomponer el texto en palabras y se seleccionan las más relevantes, las cuales el filtro bayesiano procesará calculando la probabilidad de que el correo que hemos recibido sea spam o no. Si la probabilidad supera un umbral establecido se considerará spam.

Fuentes | Bayesian spam filtering en Wikipedia Fuentes | GFI Hispana Fuentes | A plan for spam, P. Graham (2002)

Portada de Xataka Ciencia