频繁项集和关联规则 - 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
这是我感到困惑的地方,如果要求我显示所有频繁项集,我是写下所有F1
和F2
还是只写下F2
? F1
对我来说不是“集合”。
然后我被要求为我刚刚定义的频繁项集创建关联规则并计算它们的“置信度”数字,我得到了:
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 算法的主要内容,如果未能解决你的问题,请参考以下文章