Jakiego algorytmu mogę użyć do znalezienia korelacji między zdarzeniami?


12

Jestem nowy w uczeniu maszynowym, więc próbuję znaleźć literaturę, ale nie jestem nawet pewien, po co Google. Moje dane mają następującą 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
...

Gdzie każda akcja ma określone cechy (data, godzina, klient itp.). Jest około 300 użytkowników, a my mamy około 20 000 działań.

Pytanie :

Chcę dowiedzieć się, czy istnieje jakaś przyczynowość / korelacja między działaniami użytkownika. Na przykład „za każdym razem, gdy użytkownik E wykonuje akcję T, 2 dni później użytkownik G wykonuje akcję V.”. Ale pomiędzy nimi może być wielu innych użytkowników wykonujących wiele innych działań i możliwe, że nie będzie żadnej korelacji. Możliwe jest również, że niektórzy użytkownicy są skorelowani, ale inni są całkowicie niezależni. Czy jest to coś, co może znaleźć dla mnie uczenie maszynowe? Czy istnieje jakiś algorytm lub zestaw algorytmów, który mógłby mi pomóc?

Czytałem o analizie asocjacji i algorytmie Apriori, ale nie sądzę, że da mi to, czego potrzebuję, ponieważ wydaje się, że wymaga to znanych, dobrze odgraniczonych zestawów danych jako danych wejściowych, podczas gdy mam po prostu długi strumień pozornie losowego użytkownika działania. Wszelkie sugestie dotyczące tego, na co spojrzeć, będą mile widziane!


1
Czy próbowałeś umieścić zdarzenie na ukierunkowanym wykresie , wierzchołek reprezentuje typ akcji np . Istnieje krawędź jeśli jakiś użytkownik wykonał akcję przed . można go łatwo zważyć za pomocą liczby użytkowników, którzy wykonali taką sekwencję. Możesz także wykonać wykres dla użytkownika. ( i , j ) i jG=(V,E)P(i,j)ij
0x90

Odpowiedzi:


1

Myślę, że musisz przygotować dane przed użyciem dowolnego algorytmu w celu znalezienia często ustawianych elementów i reguł asocjacji.

Zobacz tabelę transakcji w tym artykule: analiza koszyka rynkowego

W twoim przypadku musisz ustawić (i dostroić) maksymalny okres czasu między interakcją, która ma być skorelowana, a następnie możesz wybrać częstego użytkownika, a do każdej transakcji, którą wykonał (lub próbkę), załączysz pojedynczy rekord 2 dni innej transakcji użytkownika. Atrybuty powinny być logiczne, takie jak

UserA,transactionP |UserB,transaction Z| UserB, transaction F | [...]

To bardzo pomocne, dzięki! Czy powinienem więc uruchomić algorytm raz dla każdego użytkownika, pytając go, czy jakiś inny użytkownik jest skorelowany z tym użytkownikiem, czy też można go uruchomić tylko raz i zapytać „pokaż mi zestawy użytkowników, które są skorelowane”?
Matt

Postępując zgodnie z moim podejściem, mogłeś przetestować „wzorzec” rozpoczęty przez kilku użytkowników + trajektorię. Wybór użytkowników i działań zależy od Twojej wiedzy na temat możliwej korelacji.
cesko80,

Trzy sugestie. 1. Zawęź kryteria wyszukiwania. Nie należy lekceważyć, ale nie ma jednej, zadziwiająco kompleksowej procedury statystycznej, która mogłaby wskazać wszystkie znaczące skojarzenia spośród wielu, wielu możliwych, nieodłącznych dla twoich danych. 2. Przeczytaj o analizie szeregów czasowych. 3. Przeczytaj o metodach odróżniania związku przyczynowego od zwykłej korelacji. Niestety nie mam szybkiej poprawki do zaoferowania!
rolando2

1

Jednym ze sposobów eksploracji danych jest utworzenie tabeli poprzedniej akcji x następnej akcji. Tak więc dla każdego zdarzenia znajdź kolejną akcję tego samego użytkownika. Możesz podobnie tabelarycznie opóźnić poprzednią akcję X do następnej akcji.

Następnie możesz sprawdzić, czy poprzednia akcja wpływa na następną. Jeśli nie, to Twoi użytkownicy są „bezpaństwowcy”.

Innym możliwym uproszczeniem jest zignorowanie identyfikatorów użytkowników i zapytanie, czy częstotliwość każdego działania jest taka sama w czasie czy zmienna; i jeśli zmienia się, czy jest cykliczny czy wykazuje trend.

Odpowiedzi na te pytania mogą wskazywać, że Twoje dane mają niewielką strukturę. Alternatywnie mogą podnieść kilka nowych hipotez do przetestowania.


1

To interesujące pytanie. Najlepszym podejściem jest sprawdzenie całego zestawu danych i utworzenie tabeli częstotliwości. Na przykład: Użytkownik A wykonuje akcję P i Y Użytkownik B wykonuje akcję Q i Z, użytkownik C wykonuje akcję R i X Podobnie jest więcej użytkowników wykonujących więcej akcji. Tak więc istnieje kilka podejść do radzenia sobie z tym zestawem danych 1) Algorytm klastra do grupowania podobnych pozycji w różnych segmentach 2) Analiza koszyka rynkowego w celu identyfikacji użytkowników i mapowania działań i częstotliwości

Bez przeglądania całego zestawu danych nie zaleca się przepisywania żadnego konkretnego algorytmu dla tego rodzaju pytań.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.