频繁项集和关联规则 - Apriori 算法

Posted

技术标签:

【中文标题】频繁项集和关联规则 - Apriori 算法【英文标题】:Frequent Itemsets & Association Rules - Apriori Algorithm 【发布时间】:2012-12-20 10:39:48 【问题描述】:

我正在尝试了解用于数据挖掘的 Apriori(篮子)算法的基础知识,

我最好用一个例子来解释我遇到的复杂情况:

这是一个交易数据集:

t1: Milk, Chicken, Beer
t2: Chicken, Cheese
t3: Cheese, Boots
t4: Cheese, Chicken, Beer
t5: Chicken, Beer, Clothes, Cheese, Milk
t6: Clothes, Beer, Milk
t7: Beer, Milk, Clothes

上述的最小限制是 0.5 或 50%。

从上面来看,我的事务数显然是 7,这意味着要使一个项集“频繁”,它的计数必须是 4/7。因此,这是我的频繁项集 1:

F1:

Milk = 4
Chicken = 4
Beer = 5
Cheese = 4

然后,我为第二次改进 (C2) 创建了候选对象并将其缩小到:

F2:

Milk, Beer = 4

这是我感到困惑的地方,如果要求我显示所有频繁项集,我是写下所有F1F2 还是只写下F2F1 对我来说不是“集合”。

然后我被要求为我刚刚定义的频繁项集创建关联规则并计算它们的“置信度”数字,我得到了:

Milk -> Beer = 100% confidence
Beer -> Milk = 80% confidence

F1 的项集放在这里似乎是多余的,因为无论如何它们都会有 100% 的置信度,并且实际上不会“关联”任何东西,这就是我现在质疑 F1 是否是确实“频繁”?

【问题讨论】:

空集也是集合。并且有些集合具有 1 个元素。它们可以是常用项集,而无需提供有用的关联规则 【参考方案1】:

如果支持合适,大小为 1 的项集被认为是常见的。 在这里您必须考虑最小阈值。例如,如果您的示例中的 最小阈值2,则不会考虑 F1。但如果最小阈值1,那么你必须这样做。

您可以查看here 和here 了解更多想法和示例。

希望我有所帮助。

【讨论】:

在这种情况下没有指定最小阈值,是不是认为F1 项是频繁的?他们是否应该在“关联规则”中表示出来,甚至认为他们只与自己关联? 很遗憾,是的。但是,没有最小阈值就没有先验。因为它会导致错误的规则。最小阈值始终由数据分析师确定。【参考方案2】:

如果最小支持阈值 (minsup) 是 4 / 7,那么如果它们出现在 7 个事务中不少于 4 个事务中,则应将单个项目包含在频繁项目集中。因此,在您的示例中,您应该包含它们:

牛奶 = 4 鸡 = 4 啤酒 = 5 奶酪 = 4

对于关联规则,它们具有 X ==> Y 的形式,其中 X 和 Y 是不相交的项集,并且通常假设 X 和 Y 不是空集(这是 Apriori 假设的)。因此,您至少需要两个项目来生成关联规则。

【讨论】:

以上是关于频繁项集和关联规则 - Apriori 算法的主要内容,如果未能解决你的问题,请参考以下文章

关联规则之Apriori算法

关联规则——Apriori算法

关联规则—频繁项集Apriori算法

Apriori 算法 理论

第九章 数据关联规则分析算法——基于Apriori算法的关联项分析

python实现apriori算法的关联规则之支持度置信度提升度