Algoritmo para generar reglas de clasificación

11

Por lo tanto, tenemos el potencial para una aplicación de aprendizaje automático que se adapte bastante bien al dominio del problema tradicional resuelto por los clasificadores, es decir, tenemos un conjunto de atributos que describen un elemento y un "cubo" en el que terminan. Sin embargo, en lugar de crear modelos de probabilidades como en Naive Bayes o clasificadores similares, queremos que nuestra salida sea un conjunto de reglas más o menos legibles para el ser humano que pueda ser revisado y modificado por un usuario final.

El aprendizaje de reglas de asociación se parece a la familia de algoritmos que resuelve este tipo de problema, pero estos algoritmos parecen centrarse en identificar combinaciones comunes de características y no incluyen el concepto de un depósito final al que esas características podrían apuntar. Por ejemplo, nuestro conjunto de datos se parece a esto:

Item A { 4-door, small, steel } => { sedan }
Item B { 2-door, big,   steel } => { truck }
Item C { 2-door, small, steel } => { coupe }

Solo quiero las reglas que dicen "si es grande y es de 2 puertas, es un camión", no las reglas que dicen "si es de 4 puertas también es pequeño".

Una solución alternativa que se me ocurre es simplemente usar algoritmos de aprendizaje de reglas de asociación e ignorar las reglas que no involucran un segmento final, pero eso parece un poco extraño. ¿Me he perdido alguna familia de algoritmos? ¿O tal vez estoy abordando el problema incorrectamente para empezar?

super_seabass
fuente

Respuestas:

9

C45 hecho por Quinlan es capaz de producir una regla para la predicción. Consulta esta página de Wikipedia . Sé que en Weka se llama J48. No tengo idea de cuáles son las implementaciones en R o Python. De todos modos, desde este tipo de árbol de decisión deberías poder inferir reglas para la predicción.

Editar más tarde

También es posible que le interesen los algoritmos para inferir directamente las reglas de clasificación. RIPPER es uno, que nuevamente en Weka recibió un nombre diferente JRip. Vea el documento original para RIPPER: Inducción rápida y efectiva de reglas, WW Cohen 1995

rapaio
fuente
Había experimentado con C45 / J48 en un proyecto anterior. No me di cuenta de que había reglas que podía recuperar de él. También revisaré RIPPER. ¡Gracias!
super_seabass
Consulte también el paquete C50 en R.
nfmcclure
Quería proporcionar una actualización para esta pregunta / respuesta: hemos estado usando JRip con cierto éxito, pero nuestro nuevo contendiente principal es FURIA ( cs.uni-paderborn.de/fileadmin/Informatik/eim-i-is/PDFs/… ) Está generando las mejores reglas para la revisión / uso humano porque trata de generar un conjunto de reglas exhaustivo. JRip hace buenas reglas, pero tiene una regla "predeterminada" para la clasificación cuando no se aplican otras reglas. Los depósitos predeterminados no funcionan bien en el contexto comercial de nuestro proyecto, necesitamos reglas exhaustivas.
super_seabass
7

En realidad, es incluso más simple que eso, por lo que describe --- solo está buscando un algoritmo de árbol de clasificación básico (por lo que no necesita variantes ligeramente más complejas como C4.5 que están optimizadas para la precisión de la predicción). El texto canónico es:

http://www.amazon.com/Classification-Regression-Wadsworth-Statistics-Probability/dp/0412048418

Esto se implementa fácilmente en R:

http://cran.r-project.org/web/packages/tree/tree.pdf

y Python:

http://scikit-learn.org/stable/modules/tree.html

Therriault
fuente
No estoy de acuerdo con que los árboles sean de ayuda aquí. Es una cuestión de reglas de filtrado, y eso se puede lograr con el paquete arules en R.
adesantos
1

Debería probar el paquete arules en R. Le permite crear no solo las reglas de asociación sino también especificar la longitud de cada regla, la importancia de cada regla y también puede filtrarlas, que es lo que está buscando (pruebe el comando rhs () de este paquete).

adesantos
fuente