我可以使用什么算法来查找事件之间的相关性?

机器算法验证 机器学习 互相关
2022-02-28 10:50:24

我是机器学习的新手,所以我想找一些文献,但我什至不确定谷歌是为了什么。我的数据格式如下:

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

每个动作都有特定的特征(日期、时间、客户等)。大约有 300 个用户,我们有大约 20,000 个操作。

问题

我想知道用户操作之间是否存在任何因果关系/相关性。例如,“每次用户 E 执行动作 T,2 天后用户 G 执行动作 V”。但在这两者之间,可能有许多其他用户执行许多其他操作,并且可能找不到相关性。也有可能一些用户是相关的,但其他用户是完全独立的。这是机器学习能为我找到的东西吗?是否有特定的算法或一组算法可以帮助我?

我一直在阅读关联分析和 Apriori 算法,但我认为这不会给我我需要的东西,因为它似乎需要已知的、分隔良好的数据集作为输入,而我只有一长串看似随机的用户行动。任何关于看什么的建议将不胜感激!

3个回答

我认为在使用任何算法查找频繁项集和关联规则之前,您必须做一些数据准备。

请参阅本文中的交易表:市场篮子分析

在您的情况下,您需要设置(并微调)预期相关的交互之间的最大时间跨度,然后您可以选择一个频繁的用户,并且对于他所做的每笔交易(或样本),您将附加一个单次记录2天其他用户交易。属性应该是布尔值,例如

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

探索数据的一种方法是制作一个包含上一个动作 x 下一个动作的表格。因此,对于每个事件,查找同一用户的下一个操作。您可以类似地将上一个动作 X 延迟到下一个动作制成表格。

然后你可以探索上一个动作是否会影响下一个动作。如果不是,那么您的用户是“无国籍”的。

另一种可能的简化是忽略用户标识,并询问每个动作的频率是否随时间相同或变化;如果变化是周期性的还是显示趋势。

这些问题的答案可能表明您的数据几乎没有结构。或者,他们可能会提出一些新的假设进行测试。

这是个有趣的问题。最好的方法是查看整个数据集并创建一个频率表。例如:用户 A 执行动作 P 和 Y 用户 B 执行动作 Q 和 Z,用户 C 执行动作 R 和 X 同样,有更多用户执行更多动作。因此,有几种方法可以处理此数据集 1) 聚类算法将相似项目分组到不同的桶中 2) 购物篮分析以识别用户与操作映射和频率

如果不查看整个数据集,不建议为此类问题规定任何特定算法。