Welchen Algorithmus kann ich verwenden, um Korrelationen zwischen Ereignissen zu finden?

12

Ich bin neu im maschinellen Lernen, versuche also, Literatur zu finden, bin mir aber nicht einmal sicher, wofür Google zuständig ist. Meine Daten haben folgende Form:

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
...

Wobei jede Aktion bestimmte Merkmale aufweist (Datum, Uhrzeit, Kunde usw.). Es gibt ungefähr 300 Benutzer und wir haben ungefähr 20.000 Aktionen.

Frage :

Ich möchte herausfinden, ob es eine Kausalität / Korrelation zwischen Benutzeraktionen gibt. Beispiel: "Jedes Mal, wenn Benutzer E Aktion T ausführt, führt Benutzer G 2 Tage später Aktion V aus." Dazwischen könnten jedoch viele andere Benutzer viele andere Aktionen ausführen, und es ist möglich, dass keine Korrelation gefunden werden kann. Es ist auch möglich, dass einige Benutzer korreliert sind, andere jedoch völlig unabhängig. Ist dies etwas, das maschinelles Lernen für mich finden könnte? Gibt es einen bestimmten Algorithmus oder eine Reihe von Algorithmen, die mir helfen könnten?

Ich habe über die Assoziationsanalyse und den Apriori-Algorithmus gelesen, aber ich glaube nicht, dass dies mir das geben wird, was ich brauche, da es als Eingabe bekannte, gut abgegrenzte Datensätze zu erfordern scheint, während ich nur einen langen Strom scheinbar zufälliger Benutzer habe Aktionen. Anregungen, was zu sehen wäre, wäre sehr dankbar!

Matt
quelle
1
G=(V,E)P(ich,j)ichj

Antworten:

1

Ich denke, Sie müssen einige Daten vorbereiten, bevor Sie einen Algorithmus verwenden, um häufig gesetzte Elemente und Zuordnungsregeln zu finden.

Siehe die Transaktionstabelle in diesem Artikel: market basket analysys

In Ihrem Fall müssen Sie eine maximale Zeitspanne zwischen den zu erwartenden Interaktionen festlegen (und genau abstimmen), dann können Sie einen häufigen Benutzer auswählen und für jede von ihm durchgeführte Transaktion (oder eine Stichprobe) eine hinzufügen Einzeldatensatz 2 Tage einer anderen Benutzertransaktion. Attribute sollten boolesch sein wie

UserA,transactionP |UserB,transaction Z| UserB, transaction F | [...]
cesko80
quelle
Das ist sehr hilfreich, danke! Würde ich den Algorithmus einmal für jeden Benutzer ausführen und ihn fragen, ob ein anderer Benutzer mit diesem Benutzer korreliert ist, oder ist es möglich, ihn nur einmal auszuführen und zu fragen, ob mir Gruppen von Benutzern angezeigt werden sollen, die korreliert sind?
Matt
Wenn Sie meinem Ansatz folgen, können Sie nur ein "Muster" testen, das von einem Benutzerpaar mit Erfahrung gestartet wurde. Welche Benutzer und Aktionen ausgewählt werden sollen, hängt von Ihrem Wissen über mögliche Korrelationen ab.
cesko80
Drei Vorschläge. 1. Grenzen Sie Ihre Anfrage ein. Nicht um respektlos zu sein, aber es gibt kein einziges, erstaunlich umfassendes statistisches Verfahren, mit dem Sie alle sinnvollen Assoziationen aus den vielen, vielen möglichen in Ihren Daten enthaltenen Assoziationen ermitteln können. 2. Informieren Sie sich über die Zeitreihenanalyse. 3. Informieren Sie sich über Methoden zur Unterscheidung von Kausalität und bloßer Korrelation. Leider habe ich keine schnelle Lösung anzubieten!
Rolando2
1

Eine Möglichkeit zum Durchsuchen Ihrer Daten besteht darin, eine Tabelle der vorherigen Aktion x der nächsten Aktion zu erstellen. Suchen Sie also für jedes Ereignis die nächste Aktion desselben Benutzers. Sie können auch die vorherige Aktion X Verzögerung bis zur nächsten Aktion tabellieren.

Dann können Sie untersuchen, ob die vorherige Aktion die nächste beeinflusst. Wenn nicht, sind Ihre Benutzer "zustandslos".

Eine weitere mögliche Vereinfachung besteht darin, die Benutzer-IDs zu ignorieren und zu fragen, ob die Häufigkeit jeder Aktion im Zeitverlauf gleich ist oder variiert. und wenn es variiert, ob es zyklisch ist oder einen Trend zeigt.

Die Antworten auf diese Fragen zeigen möglicherweise, dass Ihre Daten wenig strukturiert sind. Alternativ könnten sie einige neue zu testende Hypothesen aufstellen.

Hugh Morris
quelle
1

Das ist eine interessante Frage. Der beste Ansatz besteht darin, den gesamten Datensatz zu untersuchen und eine Häufigkeitstabelle zu erstellen. Beispiel: Benutzer A führt Aktion P aus und Y Benutzer B führt Aktion Q und Z aus, Benutzer C führt Aktion R und X aus. In ähnlicher Weise führen mehr Benutzer mehr Aktionen aus. Es gibt also verschiedene Ansätze, um mit diesem Datensatz umzugehen. 1) Cluster-Algorithmus, um ähnliche Elemente in verschiedenen Buckets zu gruppieren

Ohne den gesamten Datensatz durchzugehen, wird nicht empfohlen, für diese Art von Fragen einen bestimmten Algorithmus vorzuschreiben.

Vishwa Dharma
quelle