tipos redes recurrente neuronales neuronal machine learning inteligencia ejemplos definicion artificiales artificial machine-learning neural-network classification spam-prevention

machine-learning - recurrente - redes neuronales machine learning



Redes neuronales para la detección de correo no deseado. (4)

Digamos que tiene acceso a una cuenta de correo electrónico con el historial de correos electrónicos recibidos de los últimos años (~ 10k correos electrónicos) clasificados en 2 grupos

  • email genuino
  • correo no deseado

¿Cómo abordaría la tarea de crear una solución de red neuronal que podría usarse para la detección de spam? ¿Básicamente, clasifique cualquier correo electrónico como spam o no spam?

Supongamos que la recuperación de correo electrónico ya está en su lugar y debemos centrarnos solo en la parte de clasificación.

Los puntos principales que espero que se respondan serían:

  1. ¿Qué parámetros elegir como entrada para la NN y por qué?
  2. ¿Qué estructura de la NN funcionaría mejor para esa tarea?

También cualquier recomendación de recursos, o implementaciones existentes (preferiblemente en C #) son más que bienvenidas

Gracias

EDITAR

  • Estoy decidido a utilizar las redes neuronales, ya que el aspecto principal del proyecto es probar cómo funcionaría el enfoque NN para la detección de spam.
  • También es un "problema de juguete" simplemente para explorar temas en redes neuronales y spam.

  1. Básicamente, tendrá un problema completo, de alcance similar al diseño y entrenamiento de la red neuronal, de la extracción de características. Donde empezaría, si fuera usted, es cortar y cortar el texto de entrada en una gran cantidad de formas, cada una de las cuales es una entrada de función potencial a lo largo de las líneas de "esta señal de neurona 1.0 si ''precio'' y ''viagra'' ocurren dentro de 3 palabras una de la otra ", y eliminándolas según la mejor correlación absoluta con la identificación de correo no deseado.
  2. Comenzaría tomando mis mejores 50 a 200 neuronas de entrada y conectándolas a una única neurona de salida (valores entrenados para 1.0 = spam, -1.0 = no spam), es decir, un perceptrón de una sola capa. Podría probar una red de propagación múltiple de múltiples capas si eso funcionara mal, pero no estaría conteniendo la respiración para obtener excelentes resultados.

En general, mi experiencia me ha llevado a creer que las redes neuronales mostrarán un rendimiento mediocre en esta tarea, y definitivamente recomendaría algo bayesiano como sugiere Chad Birch, si esto es algo más que un problema de juguete para explorar redes neuronales.


¿Estás listo para hacerlo con una red neuronal? Parece que está configurado bastante bien para usar la clasificación bayesiana , que se describe bien en un par de ensayos de Paul Graham:

El historial clasificado al que tiene acceso haría que los corpus muy sólidos se alimentaran de un algoritmo bayesiano, probablemente terminaría con un resultado bastante efectivo.


Chad, las respuestas que has recibido hasta ahora son razonables, pero responderé a tu actualización que:

Estoy decidido a utilizar las redes neuronales, ya que el aspecto principal del proyecto es probar cómo funcionaría el enfoque NN para la detección de spam.

Bueno, entonces tienes un problema: una prueba empírica como esta no puede resultar inadecuada.

Probablemente sea mejor que aprendas un poco sobre lo que NN realmente hace y no hace, para ver por qué no son una buena idea para este tipo de problema de clasificación. Probablemente una manera útil de pensar en ellos es como aproximadores de funciones universales. Pero para tener una idea de cómo encaja todo esto en el área de clasificación (que es el problema del filtro de correo no deseado), puede resultar útil examinar un texto de introducción como la clasificación de patrones .

Si falla si no puede ver cómo se ejecuta, simplemente use cualquier biblioteca NN general para la red en sí. La mayor parte de su problema será cómo representar los datos de entrada de todos modos. La "mejor" estructura no es obvia, y probablemente no importa mucho. Las entradas tendrán que ser un número de medidas (normalizadas) (características) en el propio corpus. Algunos son obvios (recuentos de palabras ''spam'', etc.), otros mucho menos. Esta es la parte con la que realmente puedes jugar, pero deberías esperar que te vaya mal en comparación con los filtros Bayesianos (que tienen sus propios problemas aquí) debido a la naturaleza del problema.


Si insistes en NNs ... calcularía algunas características para cada correo electrónico

Ambas características basadas en caracteres, basadas en palabras y vocabulario (alrededor de 97 como las cuento):

  1. Número total de caracteres (C)
  2. Nº total de caracteres alfa / C Relación de caracteres alfa
  3. Número total de caracteres en dígitos / C
  4. Número total de caracteres en blanco / C
  5. Frecuencia de cada letra / C (36 letras del teclado - AZ, 0-9)
  6. Frecuencia de caracteres especiales (10 caracteres: *, _, +, =,%, $, @, ـ, /, /)
  7. Número total de palabras (M)
  8. Número total de palabras cortas / M Dos letras o menos
  9. Número total de caracteres en palabras / C
  10. Longitud de palabra promedio
  11. Avg. longitud de la oración en caracteres
  12. Avg. longitud de la oración en palabras
  13. Frecuencia de palabras. distribución / M Relación de palabras de longitud n, n entre 1 y 15
  14. Tipo Token Ratio No. De palabras únicas / M
  15. Hapax Legomena Freq. de palabras que ocurren una vez
  16. Hapax Dislegomena Freq. de palabras que aparecen dos veces
  17. Medida de K de Yule
  18. Medida D de Simpson
  19. S medida de Sichel
  20. Medida W de Brunet
  21. Medida R de Honore
  22. Frecuencia de puntuación 18 caracteres de puntuación:. ،; ? ! : () - "« »<> [] {}

También puede agregar algunas funciones más basadas en el formato: colores, fuentes, tamaños, ... utilizados.

La mayoría de estas medidas se pueden encontrar en línea, en documentos o incluso en Wikipedia (todos son cálculos simples, probablemente basados ​​en otras características).

Entonces, con aproximadamente 100 funciones, necesita 100 entradas, un número de nodos en una capa oculta y un nodo de salida.

Las entradas deberían normalizarse de acuerdo con su corpus preclasificado actual.

Lo dividí en dos grupos, uso uno como grupo de entrenamiento y el otro como grupo de prueba, sin mezclarlos. Tal vez en una proporción de 50/50 de grupos de tren / prueba con relaciones de spam / no spam similares.