6 votos

Documento de clasificación con el algoritmo de Bayes ingenuo

Quiero construir un documento clasificador en R, utilizando el Naive Bayes enfoque.

Aquí están los pasos que he hecho hasta ahora:

  • He corpus con cerca de 30 documentos de 2 autores (Clases son: objetivo "de autor" y "autor").
  • "Vocabulario" (conjunto de entrenamiento) ha sido pre-procesado (eliminado números, eliminado los signos de puntuación, palabras en minúsculas, eliminado dejar de palabras, madre de documentos, quitar los espacios en blanco), y estoy considerando sólo palabras frecuentes (superior a 700).
  • Ahora tengo la matriz que se ve así:

    enter image description here

Luego he entrenado mi clasificador utilizando Bayes el uso de algunos de los actuales R de la biblioteca, e1071.

Aquí están mis preguntas:

Quiero poner a prueba mi clasificador en otros documentos que no fueron parte del conjunto de entrenamiento.

  • Cómo preparar mi matriz de datos? Lo que si aquellos otros documentos que no contengan todas las palabras (atributos) de mi conjunto de entrenamiento? Debo poner ficticio columnas (por ejemplo, value=0)?
  • ¿La posición de las palabras (el orden de las columnas) de la materia?

He aquí un ejemplo:

La formación de los atributos:

"wild"  "wind"  "woman"

Pruebas de atributos:

"woman" "wind" "wild"  

Está bien, o debería columnas en el mismo orden como en la formación de la matriz?

1voto

Matt Hinze Puntos 9686

Usted debe construir sus características (en este caso, las palabras que usted está incluyendo como los descriptores de cada documento) basándose solamente en su conjunto de entrenamiento. Esto va a calcular la probabilidad de tener una cierta palabra, dado que pertenece a una clase particular: $P(w_i|c_k)$. En caso de que usted se está preguntando, esta probabilidad es necesaria a la hora de calcular la probabilidad de un documento perteneciente a la clase: $P(c_{k}|\text{document})$

Cuando se desea predecir la clase de un nuevo documento en el conjunto de pruebas, caso omiso de las palabras que no están incluidas en el conjunto de entrenamiento. La razón es que usted no puede usar el conjunto de pruebas para otra cosa que prueba sus predicciones. Además, el conjunto de entrenamiento debe ser representativa del conjunto de pruebas. De lo contrario, usted no conseguirá un buen clasificador. Por lo tanto, es de esperar que la mayoría de las palabras en el conjunto de pruebas también están incluidos en el conjunto de entrenamiento.

Algunas personas agregar una columna adicional para las palabras desconocidas y tratar de calcular una probabilidad de tales palabras, dada una cierta clase: $P(\text{unknown} | c_{i})$. No creo que esto sea necesario o incluso adecuado, debido a que para obtener esta probabilidad, usted necesita para echar un vistazo a la prueba de conjunto. Eso es algo que nunca se debe hacer.

1voto

Dipstick Puntos 4869

¿Por qué elegiste superior a 700 palabras? En muchos casos, mucho menos sería apropiado. Así que si el primer filtro de palabras irrelevantes y otros sin sentido de palabras frecuentes, entonces usted podría tratar de algún menor cantidad y comprobar cómo funciona. Por lo general, si usted utiliza gran cantidad de palabras que en su conjunto la mayoría de ellos son puro ruido y no dan mucha información. Hacer varios intentos y comprobar lo que la tasa es suficiente, pero con la predicción de sólo dos categorías me imagino que usted podría utilizar la menor cantidad de ellos.

Qué hacer con las palabras que faltan? No ocurren por lo que tienen la frecuencia de cero. Por otro lado, Naive Bayes utiliza productos fuertemente y si multiplicamos nada por cero obtendrá cero. Y en la mayoría de los (probablemente todas las filas que tienen algunas palabras que no ocurrió, por lo que su matriz se convertirá en una de las colecciones de ceros. Debido a que es mejor elegir arbitraria en pequeño número y agregar a todos los valores en la matriz de modo que no hay ceros (y la mayoría de los ready-made de los algoritmos de hacer esto para usted).

La posición de las palabras en la matriz no importa. Sin embargo, la posición de las palabras en el texto podría cuestión, por lo que se puede incluir esta variable en el análisis (que, sin embargo, que está más allá del alcance de simplemente usando el algoritmo Naive Bayes).

Final de la observación general: pagar mucho la atención en la limpieza y el preprocesamiento de los datos, ya que es crucial en la PNL, recuerde:" entra basura, sale basura. También decidir sobre el que las palabras a incluir en el conjunto de entrenamiento es un paso importante "superior $n$ palabras" podría no ser suficiente en muchos casos.

0voto

philip Puntos 1

orden de variables no es un problema. Supongo que usas los tokens reales como variables entonces randomforest o svm o cualquier otro modelo puede entender que la utilización de nombres de variables. El problema puede ser cuando no tienes ciertas fichas de datos de prueba, puede que necesite introducir valores

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X