我可以使用哪种算法查找事件之间的相关性?


12

我是机器学习的新手,因此我正在尝试查找一些文献,但是我什至不确定要做什么。我的数据具有以下形式:

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,两天后用户G执行动作V”。但是在这两者之间,可能会有许多其他用户执行许多其他操作,并且可能找不到关联。有些用户可能是相关的,而其他用户则是完全独立的。这是机器学习能够为我找到的东西吗?是否有特定的算法或一组算法可以帮助我?

我一直在阅读关联分析和Apriori算法,但我认为这不能满足我的需要,因为它似乎需要已知的,定界的数据集作为输入,而我似乎只有一堆看似随机的用户动作。关于看什么的任何建议将不胜感激!


1
您是否尝试将事件放在有向图,顶点表示动作类型,例如。如果某个用户在之前执行了操作则存在一个边缘。可以很容易地用完成此序列的用户数量来加权。您还可以按用户绘制图形。G=(V,E)P(i,j)ij
0x90

Answers:


1

我认为您必须先进行一些数据准备,然后再使用任何算法来查找频繁的项目集和关联规则。

请参阅本文中的交易表:市场购物篮analysys

在您的情况下,您需要设置(并微调)期望相关联的交互之间的最大时间跨度,然后您可以选择一个频繁使用的用户,并针对他进行的每笔交易(或一个示例)将其附加到单笔记录其他用户交易的2天。属性应为布尔值,例如

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

这真的很有帮助,谢谢!因此,我会为每个用户运行一次算法,询问是否有其他用户与此用户相关联,或者是否有可能仅运行一次,然后问“向我显示一组相关用户”?
马特

按照我的方法,您只能测试由几个用户+位置开始的“模式”。选择哪些用户和操作取决于您对可能的相关性的了解。
cesko80

三个建议。1.缩小查询范围。别无礼,但没有一个单一的,奇妙的综合统计程序可以告诉您数据中固有的许多有意义的关联中的所有有意义的关联。2.阅读时间序列分析。3.阅读区分因果关系和单纯相关关系的方法。不幸的是,我没有提供任何快速修复!
rolando2 '16

1

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

然后,您可以探索上一个动作是否会影响下一个动作。如果不是,则您的用户是“无状态的”。

另一个可能的简化方法是忽略用户标识,并询问每个操作的频率是否随时间相同或不同?以及是否变化是周期性的还是显示趋势的。

这些问题的答案可能表明您的数据很少。另外,他们可能会提出一些新的假设进行检验。


1

这是个有趣的问题。最好的方法是调查整个数据集并创建一个频率表。例如:用户A正在执行动作P和Y用户B正在执行动作Q和Z,用户C执行动作R和X因此,类似地,有更多用户在执行更多动作。因此,有几种方法可以处理此数据集:1)聚类算法,将不同存储桶中的相似商品分组; 2)市场购物篮分析,以识别用户与操作的对应关系和频率

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.