数据挖掘情况

Posted

技术标签:

【中文标题】数据挖掘情况【英文标题】:Data Mining situation 【发布时间】:2011-11-28 15:45:09 【问题描述】:

假设我有如下所述的数据。

11AM user1 刷机

上午 11:05 用户 1 准备早餐

上午 11:10 用户 1 吃早餐

上午 11:15 用户 1 洗澡

上午 11:30 用户 1 离开办公室

12PM user2刷机

下午 12:05 用户 2 准备早餐

下午 12:10 用户 2 吃早餐

下午 12:15 用户 2 洗澡

下午 12:30 用户 2 离开办公室

11AM user3 洗澡

上午 11:05 用户 3 准备早餐

上午 11:10 用户 3 刷机

上午 11:15 用户 3 吃早餐

上午 11:30 用户 3 离开办公室

12PM user4 洗澡

下午 12:05 用户 4 准备早餐

12:10PM user4 刷机

下午 12:15 用户 4 吃早餐

下午 12:30 用户 4 离开办公室

这些数据告诉我不同​​人的日常生活。从这些数据看来,user1 和 user2 的行为相似(尽管它们执行活动的时间有所不同,但它们遵循相同的顺序)。出于同样的原因,User3 和 User4 的行为相似。 现在我必须将这些用户分组到不同的组中。在此示例中,group1- user1 和 USer2 ... 后跟 group2,包括 user3 和 user4

我应该如何处理这种情况。我正在尝试学习数据挖掘,这是一个我认为是数据挖掘问题的例子。我正在尝试找到解决方案的方法,但我想不出一个。我相信这些数据中有规律。但我无法想到可以揭示它的方法。 此外,我必须将这种方法映射到我拥有的数据集上,该数据集非常庞大但与此类似:) 数据是关于一次记录事件发生的日志。我想找到代表相似事件序列的组。

任何指针将不胜感激。

【问题讨论】:

【参考方案1】:

看起来像聚类关联挖掘之上,更准确地说是Apriori算法。像这样的:

    挖掘动作之间所有可能的关联,即序列布什 -> 准备早餐,准备早餐 -> 吃早餐,...,布什 -> 准备早餐 -> 吃早餐等。每对,三胞胎,四胞胎等。你可以在你的数据中找到。 为每个此类序列创建单独的属性。为了获得更好的性能,为对属性添加 2 的提升,为三胞胎添加 3 等等。 此时你必须有一个属性向量和相应的提升向量。您可以为每个用户计算特征向量:如果该序列存在于用户操作中,则在向量中的每个位置设置 1 * boost,否则设置为 0)。您将获得每个用户的矢量表示。 在此向量上使用更适合您需求的聚类算法。每个找到的类都是您使用的组。

示例:

让我们将所有动作标记为字母:

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 个用户有完全相同的动作序列,他们的相似度将等于 1。如果他们没有共同点 - 他们的相似度将是 0。

使用距离测量使用聚类算法(例如,k-means)来创建用户组。

【讨论】:

谢谢.. 我想我明白了你的解释。像您解释的那样进行聚类应该是一个好主意。我会努力的。非常感谢您的帮助:)【参考方案2】:

使用像其他答案中提出的 Apriori 这样的项目集挖掘算法并不是最佳解决方案,因为 Apriori 不考虑时间或顺序。因此,它需要做一个额外的预处理步骤来考虑排序。

更好的解决方案是直接使用 PrefixSpan、SPADE 或 CM-SPADE 等顺序模式挖掘算法。顺序模式挖掘算法将直接找到在一组序列中经常出现的子序列。

那么您仍然可以对找到的顺序模式应用聚类!

【讨论】:

以上是关于数据挖掘情况的主要内容,如果未能解决你的问题,请参考以下文章

会话断开数据保存情况

数据挖掘情况

解决数据库和缓存数据不一致情况:延迟双删

在不清楚数据表字段数据分布的情况下,应该创建什么类型的索引?

基于未知情况的WSS失效异常数据预测判断方法

mysql测试