JSPAM Trabajo Práctico Teoría de la comunicación
Enviado por omarxd7 • 25 de Agosto de 2014 • Tesis • 1.068 Palabras (5 Páginas) • 292 Visitas
JSPAM
Trabajo Práctico
Teoría de la comunicación
Versión 1.0
30 de Noviembre de 2008
Índice
A quien esta dirigido este documento 3
Prerrequisitos 3
Introducción 4
Teorema de Bayes 5
Naive Bayes 5
Diseño de la aplicación 6
Implementación 8
Set de pruebas 9
Conclusiones 10
Manual de usuario 11
Autor 12
A quien esta dirigido este documento
Este documento esta dirigido a toda persona que quiera informarse sobre como esta construido jSpam. Desde aspectos de lógica de algoritmos hasta detalles de implementación.
Prerrequisitos
Se deben tener conocimientos básicos de programación orientada a objetos.
Introducción
Se conoce como spam a aquellos mensajes que son enviados en grandes cantidades a destinatarios que nunca los solicitaron. Generalmente son de índole publicitario, ya sea de un producto genuino o de alguna farsa para el consumidor.
La vía más común para recibir este tipo de mensajes es el correo electrónico. La empresa MessageLabs reporto que para Octubre de 2005, los correos de tipo spam eran el 68% del tráfico total.
Se han desarrollado a lo largo de los años, distintos métodos de clasificación que son utilizados, entre otras cosas, para detectar aquellos mails que son spam de aquellos que no lo son. Otro uso por ejemplo, es para ordenarlos en carpetas. Algunos de estos métodos son: Random Forest, Support Vector Machines, Naive Bayes y Decisión Trees.
jSpam es una aplicación que intenta detectar, dado un listado de mails, aquellos que son spam. Para esto utiliza el algoritmo de clasificación Naive Bayes. Este se basa en el teorema de probabilidad de Bayes.
Teorema de Bayes
Supongamos un suceso A y otro suceso cualquiera B.
Supongamos que sabemos como se comporta B si se dio A y queremos saber como se comportaría A si se diera primero B.
Por ejemplo sabemos que la probabilidad de que llueva (A) y luego haya accidentes de transito (B) es 0,8. Nos interesaría saber cual es la probabilidad de que haya accidentes de transito (B) y luego llueva (A).
Si nos interesa saber cual es la probabilidad de que suceda A sabiendo que paso B, utilizamos el teorema:
P(A/B) = P(B/A) P(A) / P(B)
Esto se lee como: “La probabilidad de que suceda A sabiendo que paso B es igual a la probabilidad de que suceda B sabiendo que paso A, por la probabilidad de que pase A, dividido la probabilidad de que pase B”.
Naive Bayes
En nuestro caso el clasificador utiliza el teorema de Bayes para determinar la probabilidad de que un cierto mail sea spam:
P(spam/palabras) = P(palabras/spam) P(spam) / P(palabras)
Esto se lee como: “La probabilidad de que un mail sea spam dado que tiene ciertas palabras es igual a la probabilidad de que esas palabras estén en un mail spam, por la probabilidad de que cualquier mail sea spam, divido la probabilidad de que esas palabras aparezcan en cualquier mail.
Este método requiere de entrenamiento, es decir, indicarle un set de mails ya preclasificados. De esta forma va a contar con la probabilidad de las palabras en un mail spam. Luego al clasificar un mail, cada palabra ira sumando una probabilidad que si llega a un cierto porcentaje va a determinar la clasificación del mismo.
- Ventajas
Se adapta al usuario, ya que las probabilidades son únicas para cada uno.
Evita falsos positivos, en donde se filtra como spam algo que no lo es.
- Desventajas
Susceptible al “envenenamiento bayesiano”, en donde los spammers incluyen palabras que no suelen aparecer en un spam, afectando de esta forma las probabilidades y por lo tanto al algoritmo.
Diseño de la aplicación
La aplicación tiene un diseño de programación orientada a objetos. Si bien se trato de simplificar el mismo tiene una división en capas para permitir extenderlo, cambiar la presentación y/o acceso a datos en un futuro.
Diagrama de clases:
...