¿Cómo aprender la detección de correo no deseado?

8

Quiero aprender cómo se hace un detector de correo electrónico no deseado. No estoy tratando de construir un producto comercial, será un ejercicio de aprendizaje serio para mí. Por lo tanto, estoy buscando recursos, como proyectos existentes, código fuente, artículos, documentos, etc. que pueda seguir. Quiero aprender con ejemplos, no creo que sea lo suficientemente bueno como para hacerlo desde cero. Idealmente, me gustaría ensuciarme la mano en bayesiano.

¿Hay algo así por el estilo? El lenguaje de programación no es un problema para mí.

Hola Mundo
fuente

Respuestas:

6

Antes que nada, verifique esto cuidadosamente. Encontrará un conjunto de datos simple y algunos documentos para revisar.

PERO, como desea comenzar un proyecto de aprendizaje simple, le recomiendo que no revise los documentos (que obviamente no son básicos ) sino que intente construir su propio alumno bayesiano, lo que no es tan difícil.

Yo personalmente sugiero las diapositivas de la conferencia de Andrew Moore sobre Modelos Gráficos Probabilísticos que están disponibles gratuitamente y usted puede aprender de ellos de manera simple y paso a paso.

Si necesita ayuda más detallada, simplemente comente esta respuesta y con gusto lo ayudaré :)

¡Disfruta del aprendizaje baysiano!

Kasra Manshaei
fuente
2

Hay una introducción básica al método bayesiano para la detección de spam en el libro "Doing Data Science - Straight Talk from the Frontline" de Cathy O'Neil, Rachel Schutt.

El capítulo es bueno, porque explica por qué otros modelos comunes de ciencia de datos no funcionan para los clasificadores de spam. Todo el libro usa R, así que solo recógelo si estás interesado en trabajar con R.

Utiliza el conjunto de correos electrónicos de Enron como datos de entrenamiento, ya que tiene correos electrónicos divididos en spam / no spam ya.

Sheldonkreger
fuente
2

Este es realmente un problema realmente profundo en el que muchas personas y empresas han trabajado. Aquí hay algunos conceptos básicos:

Primero, necesitamos representar bien los datos. Esto implica representar de alguna manera cada documento como un vector en el espacio -dimensional. Idealmente, en este espacio, queremos que las muestras que tienen la misma etiqueta estén cerca en la distancia euclidiana, y las muestras que son etiquetas diferentes estén lejos en la distancia euclidiana. Este paso puede ser realmente difícil, pero una representación probada y verdadera se llama Frecuencia de documento inversa de frecuencia de término (tf-idf). Aquí, cada dimensión en el espacio representa una palabra en particular, y el valor en esa dimensión para una muestra particular representa básicamente el número normalizado de veces que esa palabra aparece en el documento. Podrías leer más sobre eso aquí . Hay una muy buena implementación scikit-learn de esta representación si quieres probarla.d

Ahora los datos están en un espacio útil, pero en un espacio de dimensiones realmente altas. Recomiendo reducir esta dimensionalidad de alguna manera, pero ese es un tema completo para otro hilo.

Finalmente, podría entrenar algún algoritmo para clasificar las muestras (de eso se tratan las otras respuestas). Hay muchas opciones excelentes: las redes neuronales, Adaboost, SVM, Naive Bayes y los modelos de clasificación gráfica le darán buenos resultados. Muchos de estos también tienen implementaciones en scikit-learn.

Pero los mejores algoritmos aprovechan el hecho de que este problema es en realidad uno de transferencia de aprendizaje. Es decir, las distribuciones de las que provienen los datos de capacitación y pruebas pueden no ser exactamente las mismas, porque el tipo de cosas que una persona cree que son spam puede ser diferente del tipo de cosas que otra persona piensa que son spam.

Jordan A
fuente
¿Puedes dar más detalles sobre tu último párrafo ("aprendizaje de transferencia")? ¿Podría proporcionar algún enlace o nombre?
Valentas 01 de
1
En el aprendizaje automático convencional, tenemos algunos datos que provienen de una distribución de probabilidad particular. Luego aprendemos algún tipo de modelo sobre esos datos, con la esperanza de que el modelo se generalice a ejemplos no vistos durante el entrenamiento. Esto solo funcionará si estas muestras invisibles provienen de la misma distribución de probabilidad, por lo que suponemos que este es el caso. En el aprendizaje por transferencia, no hacemos esa suposición. Aquí hay una encuesta en el campo.
Jordan A
¿Y cómo se te ocurre la dvariable? ¿Es un número fijo elegido por un científico?
Martin Vseticka
Un enfoque común es tener palabras, y cada uno de los elementos en el vector representa la frecuencia con que esa palabra aparece en el texto. Solo se usan tantas palabras únicas en todas las muestras que está considerando, por lo que hay un límite superior definido en . Los investigadores por lo general también eliminan ciertos tipos de palabras que no se considere de utilidad para la clasificación, así como "la", "y", "ella", etc.ddd
Jordan Una