¿Usando la minería frecuente de itemset para construir reglas de asociación?


Soy nuevo en esta área, así como en la terminología, así que siéntase libre de sugerir si me equivoco en algún lugar. Tengo dos conjuntos de datos como este:

Conjunto de datos 1:

A B C 0 E
A 0 C 0 0
A 0 C D E
A 0 C 0 E

La forma en que interpreto esto es en algún momento en el tiempo, (A,B,C,E) ocurrieron juntos y también (A,C), (A,C,D,E) etc.

Conjunto de datos 2:

5A 1B 5C  0 2E
4A  0 5C  0  0
2A  0 1C 4D 4E
3A  0 4C  0 3E

La forma en que interpreto esto es en algún momento en el tiempo, 5 ocurrencias de A, 1 ocurrencia de B, 5 ocurrencias de C y 2 ocurrencias de E sucedieron y así en.

Estoy tratando de encontrar qué elementos ocurren juntos y si es posible, también averiguar la causa y el efecto de esto. Para esto, no estoy entendiendo cómo usar ambos conjuntos de datos (o si uno es suficiente). Sería bueno tener un buen tutorial sobre esto, pero mi pregunta principal es qué conjunto de datos utilizar y cómo proceder en (i) la construcción de un conjunto de artículos frecuentes y (ii) la construcción de reglas de asociación entre ellos.

¿Puede alguien indicarme un tutorial/ejemplo práctico (preferiblemente en Python) o al menos explicar en breves palabras sobre cómo abordar este problema?

Author: Legend, 2011-08-13

3 answers

Algunos hechos teóricos sobre las reglas de asociación:

  • Las reglas de asociación son un tipo de minería de datos no dirigida que encuentra patrones en los datos donde el objetivo no se especifica de antemano. Si los patrones tienen sentido se deja a la interpretación humana.
  • El objetivo de las reglas de asociación es detectar relaciones o asociaciones entre valores específicos de variables categóricas en conjuntos grandes.
  • Y sus reglas pueden interpretarse como " el 70% de los clientes que compran vino y queso también comprar uvas".

Para encontrar reglas de asociación, puede usar el algoritmo apriori. Ya existen muchas implementaciones de python, aunque la mayoría de ellas no son eficientes para el uso práctico:

O usar naranja biblioteca de minería de datos, que tiene una buena biblioteca para reglas de asociación.

Ejemplo de uso:

'''
save first example as item.basket with format
A, B, C, E
A, C
A, C, D, E
A, C, E
open ipython same directory as saved file or use os module
>>> import os
>>> os.chdir("c:/orange")
'''
import orange

items = orange.ExampleTable("item")
#play with support argument to filter out rules
rules = orange.AssociationRulesSparseInducer(items, support = 0.1) 
for r in rules:
    print "%5.3f %5.3f %s" % (r.support, r.confidence, r)

Para obtener más información sobre las reglas de asociación / extracción frecuente de artículos, mi selección de libros son:

No hay un camino corto.

 24
Author: timgluz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-01 16:04:16

Parece que una forma ordenada de manejar este tipo de problemas es usando una red bayesiana . En particular, como un problema de aprendizaje de la estructura de red bayesiana. Una vez que tenga que usted será capaz de responder de manera eficiente preguntas como p(A=1|B=0 y C=1) y así sucesivamente.

 0
Author: carlosdc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-13 03:24:27

Si tiene cantidades para cada elemento, entonces podría considerar "high utility itemset mining". Es el problema de la minería itemset pero adaptado para el caso en que los artículos pueden tener cantidades en cada transacción y también cada artículo puede tener un peso.

Si solo usa el Apriori básico, entonces perdería la información sobre las cantidades.

 0
Author: Phil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-23 12:48:43