Qual algoritmo posso usar para encontrar correlações entre eventos?

12

Eu sou novo no aprendizado de máquina, por isso estou tentando encontrar alguma literatura, mas nem sei ao certo para o Google. Meus dados têm o seguinte formato:

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

Onde cada ação tem certas características (data, hora, cliente, etc). Existem cerca de 300 usuários e temos cerca de 20.000 ações.

Pergunta :

Quero descobrir se há alguma causalidade / correlação entre as ações do usuário. Por exemplo, "toda vez que o Usuário E executa a Ação T, 2 dias depois, o Usuário G realiza a Ação V". Entretanto, no meio do caminho, pode haver muitos outros usuários executando muitas outras ações, e é possível que não haja correlação encontrada. Também é possível que alguns usuários estejam correlacionados, mas outros sejam completamente independentes. Isso é algo que o aprendizado de máquina seria capaz de encontrar para mim? Existe um algoritmo específico ou um conjunto de algoritmos que poderia me ajudar?

Eu tenho lido sobre análise de associação e o algoritmo Apriori, mas acho que isso não me dará o que eu preciso, pois parece exigir conjuntos de dados conhecidos e bem delimitados como entrada, enquanto eu apenas tenho um longo fluxo de usuários aparentemente aleatórios ações. Qualquer sugestão sobre o que olhar seria muito apreciada!

Matt
fonte
1
G=(V,E)P(Eu,j)Euj

Respostas:

1

Eu acho que você deve fazer uma preparação de dados antes de usar qualquer algoritmo para encontrar itens frequentes e regras de associação.

Veja a tabela de transações neste artigo: análise de cesta de mercado

No seu caso, você precisa definir (e ajustar) um intervalo máximo de tempo entre a interação que se espera correlacionar; em seguida, você pode escolher um usuário frequente e, para cada transação que ele fez (ou uma amostra), você anexa um registro único 2 dias de outra transação do usuário. Os atributos devem ser booleanos, como

UserA,transactionP |UserB,transaction Z| UserB, transaction F | [...]
cesko80
fonte
Isso é realmente útil, obrigado! Então, eu executaria o algoritmo uma vez para cada usuário, perguntando se algum outro usuário está correlacionado com esse usuário ou é possível executá-lo apenas uma vez e perguntando "mostre-me conjuntos de usuários correlacionados"?
Matt
Seguindo a minha abordagem, você só pode testar um "padrão" iniciado por uma dupla de usuários + traição. Quais usuários e ações serão escolhidos depende do seu conhecimento de uma possível correlação.
cesko80
Três sugestões 1. Limite a sua consulta. Não deve ser desrespeitoso, mas não existe um procedimento estatístico único e maravilhosamente abrangente que possa informar todas as associações significativas dentre as muitas e possíveis possíveis inerentes aos seus dados. 2. Leia a análise de séries temporais. 3. Leia os métodos para distinguir causalidade da mera correlação. Infelizmente, não tenho nenhuma solução rápida para oferecer!
Rolando2
1

Uma maneira de explorar seus dados é criar uma tabela de ação anterior x próxima ação. Portanto, para cada evento, encontre a próxima ação pelo mesmo usuário. Da mesma forma, você pode tabular a ação anterior X atrasar até a próxima ação.

Depois, você pode explorar se a ação anterior influencia a próxima. Caso contrário, seus usuários são "sem estado".

Outra possível simplificação é ignorar os IDs do usuário e perguntar se a frequência de cada ação é a mesma ao longo do tempo ou variável; e se variar se é cíclico ou mostra uma tendência.

As respostas para essas perguntas podem mostrar que seus dados têm pouca estrutura. Como alternativa, eles podem levantar novas hipóteses para testar.

Hugh Morris
fonte
1

Esta é uma pergunta interessante. A melhor abordagem é examinar todo o conjunto de dados e criar uma tabela de frequência. Por exemplo: O usuário A está executando a Ação P e Y O usuário B está executando a Ação Q e Z, o Usuário C está executando as Ações R e X Portanto, da mesma forma, há mais usuários executando mais ações. Portanto, existem várias abordagens para lidar com esse conjunto de dados 1) Algoritmo de cluster para agrupar itens semelhantes em diferentes intervalos 2) Análise de cesta de mercado para identificar os usuários versus mapeamento e frequência de ações

Sem passar por todo o conjunto de dados, não é recomendável prescrever nenhum algoritmo específico para esse tipo de pergunta.

Vishwa Dharma
fonte