Quel algorithme puis-je utiliser pour trouver des corrélations entre les événements?

12

Je suis nouveau dans l'apprentissage automatique, j'essaie donc de trouver de la littérature, mais je ne sais même pas pourquoi Google. Mes données sont de la forme suivante:

User A performs Action P
User B performs Action Q
User C performs Action R
...
User C performs Action X
User A performs Action Y
User B performs Action Z
...

Où chaque action a certaines caractéristiques (date, heure, client, etc.). Il y a environ 300 utilisateurs et nous avons environ 20 000 actions.

Question :

Je veux savoir s'il existe une causalité / corrélation entre les actions des utilisateurs. Par exemple, "chaque fois que l'utilisateur E exécute l'action T, 2 jours plus tard, l'utilisateur G exécute l'action V". Mais entre les deux, de nombreux autres utilisateurs peuvent effectuer de nombreuses autres actions, et il est possible qu'aucune corrélation ne soit trouvée. Il est également possible que certains utilisateurs soient corrélés, mais d'autres sont complètement indépendants. Est-ce quelque chose que le machine learning pourrait trouver pour moi? Existe-t-il un algorithme spécifique ou un ensemble d'algorithmes qui pourraient m'aider?

J'ai lu sur Association Analysis et l'algorithme Apriori, mais je ne pense pas que cela me donnera ce dont j'ai besoin, car il semble nécessiter des ensembles de données connus et bien délimités en entrée, alors que j'ai juste un long flux d'utilisateurs apparemment aléatoires Actions. Toutes les suggestions sur quoi regarder seraient les plus appréciées!

Mat
la source
1
Avez-vous essayé de mettre l'événement sur un graphe orienté , un sommet représente un type d'action par exemple . Il y a un bord si un utilisateur a fait l'action avant . il peut être facilement pondéré avec le nombre d'utilisateurs qui ont effectué une telle séquence. Vous pouvez également faire un graphique par utilisateur. ( i , j ) i jG=(V,E)P(i,j)ij
0x90

Réponses:

1

Je pense que vous devez faire une certaine préparation des données avant d'utiliser un algorithme pour trouver des règles et des règles d'association d'éléments fréquents.

Voir le tableau des transactions dans cet article: analyse du panier de marché

Dans votre cas, vous devez définir (et affiner) un intervalle de temps maximum entre l'interaction qui devrait être corrélée, puis vous pouvez choisir un utilisateur fréquent, et pour chaque transaction qu'il a effectuée (ou un échantillon), vous joindrez un enregistrement unique 2 jours d'une autre transaction utilisateur. Les attributs doivent être booléens tels que

UserA,transactionP |UserB,transaction Z| UserB, transaction F | [...]
cesko80
la source
C'est vraiment utile, merci! Alors, est-ce que j'exécuterais l'algorithme une fois pour chaque utilisateur, en lui demandant si un autre utilisateur est corrélé à cet utilisateur, ou est-il possible de l'exécuter une seule fois, et demander "montrez-moi des ensembles d'utilisateurs qui sont corrélés"?
Matt
En suivant mon approche, vous ne pouviez tester qu'un "pattern" démarré par un couple utilisateur + tradition. Les utilisateurs et les actions à choisir dépendent de votre connaissance des corrélations possibles.
cesko80
Trois suggestions. 1. Affinez votre demande. Ne soyez pas irrespectueux, mais il n'y a pas de procédure statistique unique et merveilleusement complète qui puisse vous dire toutes les associations significatives parmi les nombreuses, nombreuses associations possibles inhérentes à vos données. 2. Lisez l'analyse des séries chronologiques. 3. Renseignez-vous sur les méthodes permettant de distinguer la causalité de la simple corrélation. Malheureusement, je n'ai pas de solution miracle à proposer!
rolando2
1

Une façon d'explorer vos données est de faire un tableau de l'action précédente x action suivante. Donc pour chaque événement, trouvez la prochaine action du même utilisateur. Vous pouvez également tabuler le délai X d'action précédente jusqu'à l'action suivante.

Ensuite, vous pouvez explorer si l'action précédente influence la suivante. Sinon, vos utilisateurs sont "apatrides".

Une autre simplification possible consiste à ignorer les ID utilisateur et à se demander si la fréquence de chaque action est la même dans le temps ou varie; et s'il varie, qu'il soit cyclique ou montre une tendance.

Les réponses à ces questions peuvent montrer que vos données sont peu structurées. Alternativement, ils pourraient soulever de nouvelles hypothèses à tester.

Hugh Morris
la source
1

C'est une question intéressante. La meilleure approche consiste à examiner l'intégralité de l'ensemble de données et à créer une table de fréquences. Par exemple: l'utilisateur A exécute les actions P et Y l'utilisateur B exécute les actions Q et Z, l'utilisateur C exécute les actions R et X. De même, il y a plus d'utilisateurs effectuant plus d'actions. Il existe donc plusieurs approches pour gérer cet ensemble de données 1) Algorithme de cluster pour regrouper des éléments similaires dans différents compartiments 2) Analyse du panier de marché pour identifier les utilisateurs par rapport à la cartographie et à la fréquence des actions

Sans parcourir l'ensemble des données, il n'est pas recommandé de prescrire un algorithme particulier pour ce type de questions.

Vishwa Dharma
la source