web-dev-qa-db-fra.com

Utilisation de l'extraction fréquente de jeux d'éléments pour créer des règles d'association?

Je suis nouveau dans ce domaine ainsi que la terminologie, alors n'hésitez pas à suggérer si je me trompe quelque part. J'ai deux jeux de données comme celui-ci:

Jeu de données 1:

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

J’interprète cela à un moment donné (A, B, C, E) et (A, C), (A, C, D, E), etc.

Jeu de données 2:

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

La façon dont j'interprète ceci est, à un moment donné, 5 occurrences de A, 1 occurrence de B, 5 occurrences de C et 2 occurrences de E survenues, etc.

J'essaie de trouver quels éléments se produisent ensemble et, si possible, de rechercher la cause et l'effet de ceci. Pour cela, je ne comprends pas comment utiliser les deux ensembles de données (ou s’il en existe un suffisant). Il serait bon d'avoir un bon tutoriel à ce sujet, mais ma question principale est de savoir quel jeu de données utiliser et comment procéder dans (i) la construction d'un jeu d'éléments fréquent et (ii) la création de règles d'association entre eux.

Quelqu'un peut-il m'indiquer des tutoriels/exemples pratiques (de préférence en Python) ou au moins expliquer brièvement comment aborder ce problème?

23
Legend

Quelques faits théoriques sur les règles d'association:

  • Les règles d'association sont un type d'exploration de données non dirigée qui recherche des modèles dans les données pour lesquels la cible n'est pas spécifiée à l'avance. Que les modèles aient un sens est laissé à l'interprétation humaine.
  • L'objectif des règles d'association est de détecter les relations ou les associations entre des valeurs spécifiques de variables catégorielles dans de grands ensembles.
  • Et ces règles peuvent être interprétées comme "70% des clients qui achètent du vin et du fromage achètent aussi du raisin".

Pour trouver des règles d'association, vous pouvez utiliser l'algorithme apriori. Il existe déjà de nombreuses implémentations en python, bien que la plupart ne soient pas efficaces pour une utilisation pratique:

ou utilisez la bibliothèque de data mining Orange, qui possède une bonne bibliothèque pour les règles d'association .

Exemple d'utilisation:

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

Pour en savoir plus sur les règles d'association/l'extraction fréquente d'éléments, ma sélection de livres est la suivante:

Il n'y a pas de chemin court.

25
timgluz

Si vous avez des quantités pour chaque article, vous pouvez alors envisager une «extraction minière d’articles de grande utilité». C’est le problème de l’extraction d’ensemble d’articles mais adapté au cas où les articles peuvent avoir des quantités dans chaque transaction et que chaque article peut avoir un poids.

Si vous n'utilisez que la base Apriori, vous perdrez les informations sur les quantités.

0
Phil

Il semble qu'un bon moyen de traiter ce type de problèmes consiste à utiliser un réseau bayésien . En particulier en tant que problème d'apprentissage d'une structure de réseau bayésienne. Une fois que vous avez cela, vous serez capable de répondre efficacement à des questions telles que p (A = 1 | B = 0 et C = 1), etc.

0
carlosdc