tp bayes vs spam

Upload: armando-quinones

Post on 12-Oct-2015

25 views

Category:

Documents


0 download

TRANSCRIPT

  • Trabajo Prctico

    Naive Bayes contra la problemtica del SPAM

    Sistemas de Soporte de Decisiones

    Turno Viernes Noche 1er. Cuatrimestre 2011

    Alumnos:

    - Casarero, Eduardo

    - Ruiz, Santiago

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz ii

    Abstract En los ltimos aos el correo electrnico se ha vuelto una herramienta indispensable para la sociedad. Con el

    crecimiento exponencial del trfico de correo electrnico tambin aumenta un problema asociado al email, el

    SPAM o email comercial no solicitado. En el mercado existen diferentes soluciones comerciales u opensource

    para combatir el spam. Estas herramientas incluyen por defecto Naive Bayes, adems de otras herramientas. El

    presente trabajo prctico tiene por objetivo introducir al lector en las tcnicas de Naive Bayes para atacar el

    problema del SPAM.

    Introduccin El termino SPAM es utilizado generalmente para describir un email comercial no solicitado. El problema del

    SPAM puede ser cuantificado en trminos econmicos, siendo que los trabajadores desperdician horas de

    trabajo eliminando este tipo de trfico, o simplemente leyndolo para perder el tiempo.

    Aunque segn el informe anual de Cisco Systems el trafico de SPAM en 2010 aparentemente comenz a

    decrecer, ya sea por medidas implementadas por los gobiernos, o porque el auge de las redes sociales atrae

    mas las actividades ilcitas que el spam, pero aun sigue siendo un gran problema, para visualizarlo, en 2010

    Brasil envi 7 billones de spams y Estados Unidos 11 billones de spams.

    Como administradores de sistemas antispam de dominios argentinos y latinoamericanos pudimos observar que

    la mayora de las soluciones antispam (pagas o libres) estn enfocadas en su mayora a detectar el spam

    generado para pases del hemisferio norte y angloparlantes.

    La correcta implementacin de sistemas como Naive Bayes pueden contribuir con una mejora en la calidad de

    deteccin del trafico local mejorando considerablemente la cantidad de falsos negativos y positivos.

    El presente trabajo pretende ser una introduccin a esta tcnica, siendo que en base a nuestra experiencia

    profesional no existe una documentacin accesible que permita a un administrador de sistemas conocer con

    cierto detalle el funcionamiento de estos sistemas.

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz iii

    Naive Bayes Basado en una teora probabilstica el algoritmo de Bayes proporciona una forma de clasificacin de

    informacin que no utiliza reglas, ni arboles, ni otro tipo de representacin de la clasificacin. Esta tcnica se

    apoya en un Teorema del Reverendo Thomas Bayes (1702-1761), un pionero de la probabilidad y el primero en

    usar la probabilidad en una forma inductiva.

    La enunciacin del teorema

    Sea 1, 2, 3, un conjunto de sucesos mutuamente excluyentes y exhaustivos, y tales que la

    probabilidad de cada uno de ellos es distinta de cero. Sea B un suceso cualquiera del que se conocen las

    probabilidades condicionales|. Entonces, la probabilidad | viene dada por la expresin:

    |

    |

    donde:

    son las probabilidades a priori.

    | es la probabilidad de B en la hiptesis Ai.

    PAi|B son las probabilidades a posteriori.

    En sus inicios, las primeras tcnicas en la lucha contra el SPAM estaban basadas en reglas y listas no dinmicas,

    o con una velocidad de cambio lenta para combatir las nuevas y diferentes tcnicas para enviar correo no

    solicitado salteando estas protecciones. Surge entonces la idea de aplicar Naive Bayes para detectar spam,

    porque es un algoritmo poco costoso de implementar y si los datos con los que se entrena el algoritmo son

    bien seleccionados el rendimiento en la deteccin es aceptable.

    Para poder construir un clasificador probabilstico para detectar spam, se utiliza una red Bayesiana. Una red

    bayesiana es un grafo dirigido y a-cclico que representa una distribucin de probabilidad. En ese grafo, cada

    variable aleatoria Xi es seleccionada como nodo. Un arco dirigido entre dos nodos indica una influencia

    probabilstica (dependencia) desde la variable padre hacia el nodo hijo. Consecuentemente, la estructura de la

    red asume que cada nodo Xi es independiente de los nodos que no son sus hijos. Para describir una

    distribucin de probabilidad que satisfaga estos supuestos, cada nodo Xi en la red esta asociada con una tabla

    de probabilidad condiciona, que especifica la distribucin de Xi dado cualquier posible asignacin de sus

    padres.

    Un clasificador Bayesiano contiene un nodo C representando una clase de variable y un nodo Xi por cada una

    de sus opciones. Dada una instancia especifica de x , , , , la red Bayesiana nos permite calcular la

    probabilidad de | para cada posible clase . Esto es realizado mediante el teorema de Bayes

    (explicado antes).

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz iv

    | !" |#! $%#! $%

    !"

    En el contexto de la clasificacin de texto, especficamente la deteccin de correo basura, se vuelve necesaria

    la representacin del mensaje en un feature vector (vector de caractersticas).

    El proceso de tokenizado, convierte el email de su formato estndar a un formato vectorizado para que

    pueda usarse en la clasificacin bayesiana. La forma en que el mensaje se tokeniza tiene una profunda

    influencia en los resultados que va a producir el motor de clasificacin. Existen diversas formas de tokenizar un

    correo, sin embargo con el correr del tiempo y la mutacion normal del trafico, estas tcnicas tambin se van

    refinando y mejorando para adaptarse a los cambios.

    Los mensajes son separados en varios tipos de tokens, tokens de cabeceras, tokens de cuerpo y tokens

    sintetizados. Los tokens de cabeceras identifican partes de los componentes del encabezado del correo y

    permiten obviar informacin que no resulta importante para la clasificacin

    Un ejemplo de tokenizado de headers:

    Word Probability Times in ham Times in spam

    content-type:multipart/related - 0 0

    content-type:multipart/alternative 0.811987 1 8

    to:name:eduardo casarero - 0 0

    to:addr:eduardo.casarero - 0 0

    to:addr:informaticaavanzada.com.ar - 0 0

    Los tokens del cuerpo del mensaje son generados simplemente con una separacin del texto del mensaje por

    palabras, teniendo en cuenta que algunos patrones en particular se detectan, como urls, contenido html (los

    tags html se eliminan), el email de origen, etc.

    Ejemplos de tokens del cuerpo del email:

    Word Probability Times in ham Times in spam

    webinar 0.908163 0 2

    please 0.303408 3 2

    send 0.155172 1 0

    your 0.4478 3 4

    comments 0.155172 1 0

    and 0.5 3 5

    feedback 0.539526 1 2

    server 0.265886 2 1

    skip:m 10 0.38764 2 2

    attendees - 0 0

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz v

    Entrenamiento

    Algo importante en la operatoria de clasificadores bayesianos es el tipo de entramiento que se va a realizar. A

    continuacin se presentan los diferentes tipos:

    - Entrenamiento de errores: Utilizando este criterio solamente entrenamos al clasificador cuando realiza

    una categorizacin equivocada. Solo cuando el error de clasificacin es muy grosero se procede a

    enviar el email mal categorizado al clasificador con su correcta clasificacin para que se ajusten los

    valores de los tokens. Este tipo de entrenamiento puede tener como consecuencia una degradacin de

    la performance bastante significativa debido al poco feedback por lo que ser necesario reiniciar la

    base de datos con cierta periodicidad.

    - Entrenamiento de unsures: Son los emails que estn en una zona gris, en la que el clasificador no

    puede decidir. La diferencia con el caso anterior es que los mensajes que se usaran para el

    entrenamiento no fueron mal categorizados, sino que no pudieron ser clasificados. Con el tiempo este

    entrenamiento va a producir un decrecimiento de emails clasificados en esta zona gris. Si en la

    implementacin se utiliza un buen lote inicial de entrenamiento los errores de clasificacin van a ser

    pocos y por lo tanto con este tipo de entrenamiento se va a ir depurando la base de datos hasta tener

    una buena performance.

    - Entrenamiento de Errores y de unsures: Este entrenamiento es la suma de los dos anteriores y cubre

    los dos anteriores tipos. Una problema de este entrenamiento es que puede generar bayes poisoning

    que significa que la base de datos de tokens se va corrompiendo porque se ingresan emails muy

    diferentes en ambas categoras, y esta especie de envenenamiento baja extremadamente la

    performance.

    - Entrenamiento de Todo: Esta es una de las cosas mas fciles de hacer, si nuestro sistema de correo

    electrnico puede aprender de las carpetas Inbox / Junk de nuestro cliente de correo es mucho mas

    sencillo aun. El problema con esta tcnica es que debemos revisar con cierta periodicidad que los

    mensajes en Junk no tengan un falso positivo para no contaminar nuestra base de conocimiento.

    - Otras tcnicas: existen otros criterios pero solo mencionamos estos para dar una idea de las opciones

    existentes y posibles.

    Adems de Como entrenar a spam bayes hay otra pregunta importante Hasta cuando entrenar al

    clasificador? Algunos criterios son:

    - Hasta que la performance es aceptable

    - Hasta que se supera cierto umbral de cantidad mensajes entrenados

    - Hasta que se supera un periodo de tiempo.

    - Entrenar para siempre

    Finalmente algo a tener en cuenta es que ya sea que sufrimos bayes poisining (autogenerado por nosotros, o

    por ataques de terceros) es probable que cada cierto tiempo tengamos que reiniciar la base de datos y

    comenzar el entrenamiento nuevamente.

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz vi

    SpamBayes, de la teora a la practica

    Un ejemplo practico

    A los efectos de mostrar un ejemplo de clasificacin real vamos a tomar el caso de un email con 4 palabras:

    palabra1, palabra2, palabra3, palabra4. Obviamos la parte de tokenizado y determinacin de la probabilidad de

    spam y ham del token porque implica ciertas correcciones de calculo utilizando otros modelos para por

    ejemplo agrupar en un solo token las palabras (recomendar, recomendacin, por ejemplo).

    Para poder realizar el calculo de la probabilidad de spam de un email hay que asumir que la ocurrencia de las

    palabras es un evento independiente, aunque en la realidad esto no sea asi ya que si en una oracin existe un

    adjetivo tambin debera existir un sustantivo. Teniendo en cuenta esta consideracin la formula para agrupar

    las probabilidades independientes seria:

    &'( )*( * +(,-.( ,(- ,&-+ &. &. &. &0

    &. &. &. &0 1 1 2 &1 2 &1 2 &1 2 &0

    Siendo & la probabilidad de que el mensaje sea spam si contiene la palabra1.

    Caso

    1

    Caso

    2

    Caso

    3

    Caso

    4

    Prob(Email es spam si contiene 'palabra1') 0,3 0,5 0,4 0,9

    Prob(Email es spam si contiene 'palabra2') 0,2 0,6 0,5 0,9

    Prob(Email es spam si contiene 'palabra3') 0,3 0,7 0,1 0,9

    Prob(Email es spam si contiene 'palabra4') 0,1 0,3 0,9 0,1

    Prob Spam: 0,01 0,60 0,40 0,99

    En la tabla se pueden observar los 3 casos mas usuales en la clasificacin bayesiana. Los Casos 1 y 4 muestran

    una clasificacin en los extremos, siendo el caso 1 un email genuino y el caso 4 un email spam. Casos 2 y 3

    estan en una zona gris en donde generalmente el clasificador bayesiano etiqueta el correo como neutro y seria

    necesario que el usuario entrene al clasificador con estos casos para refinar la tcnica de clasificacin.

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz vii

    Descripcin de la maqueta

    Los datos utilizados en la maqueta surgen del trfico diario de la casilla de correo laboral de Eduardo Casarero.

    Adems el entrenamiento que se realizo del trafico (para determinar si es spam o ham) fue aleatorio ya que se

    intenta presentar la tcnica en general y no realizar un anlisis de su performance o tasa de error.

    Maqueta de pruebas:

    Como software para la realizacin de las pruebas y ejemplos de este trabajo practico se decidi utilizar

    SpamBayes (http://spambayes.sourceforge.net) debido a que la arquitectura aunque puede resultar

    complicada para implementar en un ambiente de produccin masivo es simple para la demostracin del

    funcionamiento del clasificador, adems de tener una interface web amigable y estar desarrollado

    ntegramente en python, cuestin que facilita la lectura del cdigo.

    La maqueta en accin

    Una vez que la maqueta esta operativa, procedemos a generar trafico para que empiece a pasar por el proxy,

    de esta forma podemos empezar a entrenarlo y a observar que calidad de deteccin obtenemos.

    Inicialmente cargamos unos 15 correos como spam y despus empezamos a mandar emails para que los

    procese internamente. Spambayes va a decidir sobre todos los emails, si son spam o ham o unsure y va a

    agregar en los headers del email los siguientes tems:

    X-Spambayes-Classification: unsure

    X-Spambayes-MailId: 1305867441

    El primer campo nos indica en que categora clasifico el mensaje, y el segundo nos indica un id para poder ir a

    la interfase web y recategorizar el mensaje si es necesario.

    Ademas, tenemos una consola administrativa en la que podemos ver una lista de todos los mensajes que se

    clasificaron pero que no se confirmaron en spambayes, de esta forma podemos ver rpidamente todos los

    mensajes nuevos y reclasificarlos.

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz viii

    En esta pantalla podemos ver el asunto del email, el remitente, la accin a tomar (se puede descartar,

    demorar, aprender como genuino, aprender como spam) y adems se pueden ver las clues y los tokens.

    Bsicamente las clues son un subconjunto (bastante acotado) de tokens del correo electrnico en el cual

    spambayes se esta basando para tomar una decisin.

    Consulta de palabras

    Algo que tambin podemos realizar desde la interface es la consulta de palabras particulares para averiguar el

    peso que tienen en la categorizacin.

    En este caso la palabra nagios tiene una probabilidad baja de ser spam, de hecho que fuera catalogada en 2

    emails como spam probablemente indique una mala categorizacin.

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz ix

    Como encaja Spam Bayes en la gran escala.

    Como paso previo a la conclusin de este trabajo practico entendimos que es necesario situar Spam Bayes en

    el flujo real del correo electrnico. El diagrama presenta una arquitectura simplificada pero bastante certera de

    cmo el es flujo de un correo electrnico desde que sale del servidor de origen hasta que llega a la bandeja de

    entrada del cliente. Basados en nuestra experiencia personal un solo administrador de sistemas puede

    mantener un servicio antispam para mas de 100.000 casillas de usuarios, ahora bien, para el administrador es

    inviable re-categorizar todo el trafico que fue falso negativo o positivo. La verdadera potencia de este tipo de

    clasificadores es que con un entrenamiento bsico los propios usuarios pueden contribuir a mejorar la

    performance de clasificacin con herramientas adecuadas de feedback.

    Conclusin Esta tcnica de deteccin de spam contribuye de forma significativa a la mejora de la calidad de los filtros de

    spam. El uso de un sistema de puntaje que provee una zona gris de clasificacin reduce la exposicin de los

    usuarios a mensajes no solicitados casi eliminando los falsos positivos. Si bien la parte terica no es simple,

    creemos que el desafo esta en la consolidacin del feedback (re-entrenamiento) de los mensajes por parte de

    los usuarios, ya que para algunas decenas de usuarios se puede implementar de forma sencilla, pero para miles

    de usuarios consolidados en un solo servicio de correo puede llegar a ser un reto importante.

  • Sistemas de Soporte de Decisiones Trabajo Prctico Cuatrimestral 03/06/2011

    135576/Casarero, 116764/Ruiz x

    Bibliografa

    SpamBayes-Development-Team, "SpamBayes: Bayesian anti-spam classifier written in Python",

    [online] 2003, http://spambayes.org (Accedido: 10 de Mayo de 2011)

    P. Graham, "A Plan for Spam", [online] 2002, http://www.paulgraham.com/spam.html (Accedido: 10

    de Mayo de 2011)

    Ian H Witten, Eibe Frank, Data Mining: Practical Machine Learning tools Morgan Kaufmann

    Publishers USA [2000]

    Zhiwei Fu, Isa Sarac. A computational Study of Nave Bayes Learning in Anti-spam Management

    Virginia International University (2004)

    G. Cornmak, Email spam filtering: A systematic review. Foundation and trends in information

    retrieval, vol 1, no. 4. Pp 335-455, 2008.