Lo primero que hay que ver es si contamos o no con textos de entrenamiento.
Si no tenemos datos de entrenamiento:
No queda otra alternativa que escribir las reglas de clasificación de forma manual, por ejemplo:
- Si aparece la palabra: "Montevideo" el documento pertenece a la clase: "Uruguay". (documentos que hablan sobre el Uruguay)
- Si aparece la palabra "Santiago de Chile" entonces el documento pertenece a la clase: "Chile".
y así...
Hay que ser cuidadosos al escribir las reglas, se estima que se tarda dos días por cada clase.
Si tenemos pocos datos de entrenamiento:
En este caso Naïve Bayes es ideal, es lo que se llama un High-bias, esto significa que es un tipo de algoritmo que no sobre ajusta demasiado y por ello funciona bien en conjuntos pequeños de datos.
Sin embargo no es buena idea quedarse con pocos datos si podemos conseguir más. Siempre es buena idea tratar de ampliar nuestro conjunto de datos.
Si tenemos una buena cantidad de datos de entrenamiento:
En este caso Naïve Bayes deja de ser la mejor opción y nos conviene utilizar otro tipo de algoritmos de clasificación como por ejemplo:
- SVM
- Regularized logistic regression
- Arboles de decisión
Si tenemos una cantidad gigantesca de datos de entrenamiento:
En este caso Naïve Bayes vuelve a ser una excelente opción, en parte por su velocidad. Cuando se tienen bases de datos realmente grandes todos los algoritmos de clasificación tienden a arrojar resultados similares, como se puede ver en el siguiente gráfico:
Otras consideraciones:
Prevención del underflow
Considerando que vamos a utilizar probabilidades muy chicas, cercanas a cero, y a multiplicarlas entre sí es probable que por problemas de almacenamiento en los registros de punto flotante del procesador perdamos precisión y obtengamos cero en donde debería haber un número muy pequeño. Para evitar esta catástrofe lo recomendable es trabajar, como se mencionó en algún otro post en el espacio Logarítmico.
Si trabajamos con los logaritmos de las probabilidades, no solo obtendremos números más grandes sino que evitamos la multiplicación, ya que el logaritmo de XY es el logaritmo de X + el logaritmo de Y, log (XY) = log X + log Y.
Mejorar el rendimiento
Un último par de concejos para mejorar el rendimiento:
- Colapsar términos:
En el caso de formulas, o números por ejemplo, nos conviene reemplazarlos por un termino que los identifique de forma genérica. Es decir, cuando aparece una formula matemática cualquiera, la reemplazamos por "#FormulaMatematica", por ejemplo. - Contar términos como si aparecieran dos veces:
En algunos casos, palabras que forman parte de un título o que están resaltadas de alguna manera en un texto, conviene contarlas dos veces para mejorar la precisión.
No hay comentarios:
Publicar un comentario