假设我有下面提到的数据。
上午11点user1笔刷
上午11:05 user1准备刹车
上午11:10 user1吃早餐
上午11:15 user1洗浴
上午11:30 user1上班
12 user2笔刷
12:05 12 user2准备刹车
12:10 12 user2吃早餐
12:15 12 user2洗浴
12:30 12 user2上班
上午11点user3洗浴
上午11:05 user3准备刹车
上午11:10 user3刷子
上午11:15 user3吃早餐
上午11:30 user3上班
12 user4洗浴
12:05 12 user4准备刹车
12:10 12 user4笔刷
12:15 12 user4吃早餐
12:30 12 user4上班
这些数据告诉我不同人的日常生活。从这些数据看,user1和user2的行为类似(尽管它们执行活动的时间不同,但它们遵循相同的顺序)。出于同样的原因,User3和User4的行为相似。现在,我必须将这些用户分组到不同的组中。在本例中,group1- user1和USer2 ...其次是group2,包括user3和user4
我该如何处理这种情况。我正在尝试学习数据挖掘,这是一个我认为是数据挖掘问题的例子。我正在努力寻找解决方案的方法,但我想不出一个方法。我相信这个数据有它的模式。但我不能想出可以揭示它的方法。此外,我必须将这种方法映射到我拥有的数据集上,该数据集非常庞大,但与以下内容类似:)数据是关于一次事件发生的日志。我想找出代表相似事件序列的组。
如有任何建议,我们将不胜感激。
发布于 2011-10-01 04:43:04
它看起来像关联挖掘算法之上的聚类算法,更准确地说是Apriori算法。如下所示:
示例:
让我们将所有操作标记为字母:
A-刷子
B-准备早餐
C- East早餐
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, ...为了比较两个用户,需要一些距离度量。最简单的是cosine distance,也就是两个特征向量之间的余弦值。如果两个用户具有完全相同的操作序列,他们的相似度将等于1。如果他们没有共同点-他们的相似度将为0。
在距离度量的基础上,使用聚类算法(如k-means)对用户进行分组。
发布于 2015-04-12 06:22:09
使用其他答案中提出的像Apriori这样的项集挖掘算法并不是最好的解决方案,因为Apriori没有考虑时间或顺序排序。因此,它需要执行额外的预处理步骤来考虑排序。
更好的解决方案是直接使用序列模式挖掘算法,如PrefixSpan、SPADE或CM-SPADE。序列模式挖掘算法将直接找到一组序列中经常出现的子序列。
然后,您仍然可以对找到的顺序模式应用聚类!
https://stackoverflow.com/questions/7613863
复制相似问题