假设我有如下所述的数据。
11AM user1 Brush
11:05 AM user1 Prep Brakfast
11:10 AM user1吃早餐
11:15 AM user1洗澡
11:30 AM user1离开办公室
12PM user2 Brush
12:05 PM user2 Prep Brakfast
12:10 PM user2吃早餐
12:15 PM user2洗澡
12:30 PM user2离开办公室
上午11点用户3洗澡
11:05 AM user3 Prep Brakfast
11:10 AM user3 Brush
11:15 AM user3吃早餐
11:30 AM user3离开办公室
12PM user4洗澡
12:05 PM user4 Prep Brakfast
12:10 PM user4 Brush
12:15 PM user4吃早餐
12:30 PM user4离开办公室
这些数据告诉我不同人的日常生活。从这些数据来看,似乎user1和user2的行为相似(尽管它们执行活动的时间有所不同,但它们遵循相同的顺序)。出于同样的原因,User3和User4的行为类似。 现在我必须将这些用户分组到不同的组中。在此示例中,group1- user1和USer2 ...后跟group2,包括user3和user4
我应该如何应对这种情况。我正在尝试学习数据挖掘,这是一个我认为是数据挖掘问题的例子。我试图找到解决方案的方法,但我想不出一个。我相信这些数据有其中的模式。但我无法想到可以揭示它的方法。 另外,我必须在我拥有的数据集上映射这种方法,这非常巨大,但与此类似:)数据是关于日志说明一次发生事件。我想找到代表相似事件序列的群体。
任何指针都会受到赞赏。
答案 0 :(得分:2)
在关联挖掘,更准确地说是Apriori算法之上,它看起来像聚类。像这样:
示例:
让我们将所有动作标记为字母:
a - 刷子
b - 准备早餐
c - 东早餐
d - 洗澡
......
您的属性看起来像
a1:a-> b
a2:a-> c
a3:a-> d
...
a10:b-> a
a11:b-> c
a12:b-> d
...
a30:a-> b-> c-> d
a31:a-> b-> d-> c
......
用户特征向量将是:
attributes = a1, a2, a3, a4, ..., a10, a11, a12, ..., a30, a31, ...
user1 = 1, 0, 0, 0, ..., 0, 1, 0, ..., 4, 0, ...
user2 = 1, 0, 0, 0, ..., 0, 1, 0, ..., 4, 0, ...
user3 = 0, 0, 0, 0, ..., 0, 0, 0, ..., 0, 0, ...
要比较2个用户,需要一些距离测量。最简单的是cosine distance,它只是2个特征向量之间的余弦值。如果2个用户具有完全相同的操作序列,则它们的相似性将等于1.如果它们没有共同点 - 它们的相似性将为0.
使用距离测量使用聚类算法(例如,k-means)来制作用户组。
答案 1 :(得分:0)
在其他答案中使用像Apriori这样的项集挖掘算法并不是最佳解决方案,因为Apriori不考虑时间或顺序排序。因此,它需要进行额外的预处理步骤以考虑订购。
更好的解决方案是直接使用PrefixSpan,SPADE或CM-SPADE等顺序模式挖掘算法。顺序模式挖掘算法将直接找到经常出现在一组序列中的子序列。
然后,您仍然可以对找到的序列模式应用聚类!