Estoy trabajando en un proyecto en R donde tengo aproximadamente 1200 correos electrónicos de una empresa, la mayoría de los cuales están etiquetados como clase o clase , que son los tipos de solicitudes. Aproximadamente 1000 correos electrónicos están etiquetados como clase , y 200 están etiquetados como clase Mi objetivo es utilizar el aprendizaje supervisado para construir un modelo que clasifique los nuevos correos electrónicos.
Pero, después de mucho preprocesamiento (análisis, eliminación de palabras vacías, etc.) y de probar algoritmos típicos (SVM, árboles de decisión, etc.) en una matriz de términos del documento, mi matriz de confusión contenía muchos falsos positivos y falsos negativos, pero solo unos pocos falsos negativos con SVM.
Me pregunto cómo podría mejorar mis resultados. ¿Necesito usar sobremuestreo o representación de características bi-gram? Supongo que el problema es que los temas de las dos categorías son muy cercanos.
fuente
Respuestas:
(Todos los correos electrónicos son o en francés o en inglés)
Métodos de preprocesamiento:
-> Luego, matriz de términos del documento, con TF-IDF
Las dos clases son de soporte técnico, dos categorías "complejo" y "fácil", "complejo" son temas relacionados con las finanzas (en teoría), el problema "simple" con el software (en teoría) pero en la práctica tienen muchas palabras en común. Y las otras clases no las tengo en cuenta, solo me concentro en las dos por ahora
En realidad, el tipo de algoritmo de clasificación que utilicé no es tan relevante porque probé con 5 algo y ninguno dio buenos resultados
Ejemplo (matriz de confusión) Árbol de decisión:
pred:
335 10
59 | 12
331 1
83 | 1
330 2
83 1
1 | 83
12 | 320
fuente
Como solo se trata de 2 clases, puede crear una
commonality.cloud()
de ambas clases (uso esta función en R, no sé sobre otros idiomas).Mostrará las palabras que son comunes en
class1
yclass2
. Es posible que estas palabras no ayuden al algoritmo a distinguir las clases para que pueda eliminar estas palabras y realizar algunas pruebas.fuente
Es posible que desee probar un clasificador bayesiano en lugar de SVM o árboles de decisión. Su problema es una generalización del problema del filtro de spam, es decir, clasificar los correos electrónicos en 'Spam' (clase 1) o 'No Spam' (clase 2). La mayoría de los filtros de spam utilizan la clasificación bayesiana en lugar del método de aprendizaje supervisado más común.
fuente
Podrías estudiar las características: me di cuenta de que eliminaste los números. Podría ser que hiciste eso porque no es probable que choquen, pero también podrías resolverlo introduciendo clases de palabras (@ number @ o @ big_number @, etc.).
También puede intentar usar las clases de palabras en otros grupos de palabras. Si eso funciona, podría indicar que su conjunto sufre de escasez (lo que no me sorprendería). Podría usar un selector de funciones para ese propósito, por ejemplo, clasificando sus dimensiones en la ganancia de información.
Entre las formas más avanzadas de combatir la escasez se incluyen: el algoritmo de Rocchio o word2vec.
fuente