关联规则挖掘

经典例子###

一家大型超市对购物篮分析,发现经常有人同时购买啤酒尿布

原因:美国的妇女们经常会嘱咐她们的丈夫下班以后要为孩子买尿布。而丈夫在买完尿布之后又要顺手买回自己爱喝的啤酒。

决策:超市将啤酒和尿布摆放在一起,增加购买的机会。

什么叫做经常同时购买?####

通过支持度(support)与置信度(confidence)来衡量。

  • 支持度:support(A-->B) = |AB|/|N| 商品A和B(如啤酒和尿布) 同时出现在同一个购物清单中的数量 / 总的购物清单数

  • 置信度:confidence(A-->B) = |AB|/|A| 同时出现在同一个购物清单中的数量/A出现的数量。即规则A-->B的可信度。

可信度是对关联规则的准确度的衡量,支持度是对关联规则重要性的衡量。 支持度说明了这条规则在所有事务中有多大的代表性,显然支持度越大,关联规则越重要。

出现就行,不考虑一个购物清单中啤酒的数量。

关联挖掘###

给定一个数据集,从中找出所有支持度>最小支持度,置信度>最小置信度的关联规则(关联关系)

如果实现? 思路1: 穷举所有商品组合,看是否满足要求。 不可取

思路2: 1.找出频繁项集 2.生成规则

apriori算法###

消除一些完全不可能是频繁项的集合。

两个原则:

  • 如果一个集合是频繁项集,则它的所有子集都是频繁项集

  • 如果一个集合不是频繁项集,则它的所有超集都不是频繁项集

缺点:需要不停扫描全表数据

FP growth算法###

能不能扫描全表数据后,将需要的信息用个数据结构存储下。

稍微转换一下:

注意生成树的前,讲所有一项集按频繁度排序,排完再生成树

树生成后如何挖掘关联规则:FP-growth

参考佳文####

关联规则的常用算法 关联规则挖掘基本概念与Aprior算法 关联规则FpGrowth算法

频繁模式挖掘中Apriori、FP-Growth和Eclat算法的实现和对比(Python实现)

挖掘频繁项集——Apriori、FP-Growth、Eclat、Diffset原理

Last updated