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:
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.
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?
Quelques faits théoriques sur les règles d'association:
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.
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.
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.