Estoy construyendo un categorizador de texto para oraciones cortas. Además de decirle al usuario "la categoría del texto que ingresó es C", quiero poder explicar por qué tomé esta decisión, de una manera breve y comprensible. Por ejemplo, no quiero decirle al usuario "Pongo tu oración en una red neuronal compleja de 3 capas y esa es la respuesta que mejor calificó"; Quiero explicaciones como "Su oración contiene las palabras U, V y W, que son características de esta categoría, debido a oraciones como X, Y y Z que aparecen en los datos de entrenamiento".
Mi pregunta es: ¿qué algoritmos de clasificación son los más adecuados para dicha aplicación?
k-vecinos más cercanos parece un buen candidato, porque puedo decirle al usuario "Su oración tiene categoría C porque es similar a las oraciones X, Y y Z que tienen la misma categoría. Pero su desempeño en problemas de categorización de texto es conocido por Sé pobre. Estoy buscando una clase que equilibre el rendimiento con la capacidad de explicación.
EDITAR: Después de pasar mucho tiempo buscando un clasificador de este tipo, comencé a construir una biblioteca de aprendizaje automático llamada limdu , que permite a los clasificadores explicar sus decisiones. Todavía está en desarrollo, pero ya me ha ayudado a explicarme a mí mismo y a mis colegas por qué nuestros clasificadores fallan tan a menudo ...
fuente
Respuestas:
Aunque funciona mal en las tareas de clasificación de texto, si desea una explicación clara del razonamiento de la clasificación, un árbol de decisión sería su mejor opción, ya que proporciona reglas claras sobre cómo se clasifica una instancia. Un rastro del árbol proporcionaría los valores determinantes y al analizar las instancias cercanas al nodo raíz, incluso podría determinar qué atributos eran más significativos en la clasificación.
Otra opción sería usar un clasificador Naive Bayes , que funciona mejor para las tareas de minería de texto y le daría un esquema de evaluación comprensible basado en las probabilidades que podría usar para generar el "por qué" que está buscando, incluso proporcionando una indicación de qué valores de atributo fueron más importantes que otros para tomar la determinación.
Las Máquinas de vectores de soporte , específicamente la Optimización mínima secuencial (SMO), parecen funcionar bien con estas tareas y también proporcionan una indicación de los valores utilizados para hacer la clasificación en forma de pesos de atributos y vectores de soporte, pero creo que puede ser más difícil haciendo explícito cómo estos pesos y vectores influyeron en la decisión general de clasificación.
¡Buena suerte con tu proyecto! Suena muy interesante.
fuente
Recuerdo vagamente que Peter Norvig tenía una implementación de MYCIN , un sistema experto en diagnóstico médico , escrito en LISP en su libro Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp , que hizo exactamente esto.
Quizás sea un buen lugar para comenzar su investigación. Encontrará el código fuente en línea, junto con una base de reglas , sin embargo, le recomiendo leer el texto y no tratar de entenderlo solo desde el código fuente.
También puede dirigirse directamente a la página de Emycin (mi énfasis),
fuente