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!
P
Respostas:
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
fonte
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.
fonte
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.
fonte