Un clasificador de texto que explica sus decisiones.

11

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 ...

Erel Segal-Halevi
fuente
El punto del aprendizaje automático es que no te importa lo que sucede debajo del capó, solo te importa el rendimiento. El otro enfoque falló, y es por eso que todos hoy en día usan estos enfoques estadísticos opacos: son mucho mejores.
Yuval Filmus
2
@Yuval Estoy completamente en desacuerdo con que los otros enfoques fallaron. No son óptimos, pero aún así logran el objetivo de automatizar las tareas de clasificación muy por encima de lo que un humano tiene la capacidad o la paciencia para hacer. Las cajas negras opacas no son la única forma de hacer aprendizaje automático de manera efectiva, especialmente en situaciones como esta, donde el rendimiento no es la única consideración. Sea un poco más abierto con respecto a los diferentes objetivos detrás de las tareas de aprendizaje automático.
Richard D

Respuestas:

7

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.

Richard D
fuente
1
Gracias. También descubrí que los clasificadores en línea, como perceptron y winnow, son bastante buenos en esta tarea (al menos en mi escenario), y es fácil explicar la decisión observando el valor absoluto que cada característica agrega al puntaje de clasificación. Para cada muestra, clasifico las características de acuerdo con el valor absoluto de (característica * peso) y muestro las primeras.
Erel Segal-Halevi
3

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),

Emycin es un shell de sistema experto , un marco para crear programas que registran el conocimiento de los expertos en dominios y los utilizan para ayudar a los usuarios no expertos a resolver problemas. Proporciona una interfaz que ayuda a los expertos a definir tipos de datos y reglas, un algoritmo de razonamiento de cadena hacia atrás (similar a Prolog, pero con diferencias clave), un mecanismo para lidiar con la incertidumbre e instalaciones para la introspección que permiten a los usuarios aprender lo que el sistema sabe y lo que está haciendo .

Pål GD
fuente
2
Sin embargo, hay una razón por la cual los sistemas expertos ya no son muy populares, es difícil codificar todas las reglas.
adrianN