30丨关联规则挖掘(上):如何用Apriori发现用户购物规则?
该思维导图由 AI 生成,仅供参考
搞懂关联规则中的几个概念
- 深入了解
- 翻译
- 解释
- 总结
关联规则挖掘是一项重要的数据挖掘技术,通过发现商品之间的关联关系,可以实现商品捆绑销售和相关推荐,从而提高销售量。本文介绍了关联规则挖掘中的支持度、置信度和提升度等重要概念,以及Apriori算法的工作原理。支持度表示商品组合出现的频率,置信度表示购买了商品A后会购买商品B的概率,而提升度衡量了商品A的出现对商品B出现概率的提升程度。Apriori算法通过查找频繁项集的过程来实现关联规则挖掘,首先计算单个商品的支持度,然后逐步组合商品,筛选出频繁项集。文章还介绍了Apriori算法的改进算法FP-Growth算法,通过创建FP树和项头表,减少了频繁项集的存储以及计算时间,从而提高了关联规则挖掘的效率。文章最后提到了其他的改进算法,如CBA算法和GSP算法,以及对于新理论的提出和改进的思考。总的来说,本文通过介绍关联规则挖掘的基本概念和算法原理,为读者提供了对于关联规则挖掘技术的全面了解和学习的机会。
《数据分析实战 45 讲》,新⼈⾸单¥59
全部留言(31)
- 最新
- 精选
- third置顶我也是自己的理解,不知道是否正确,给大家参考一下 构建子树 1.假设已经完成创建项头表的工作,省略count+1 2.扫描数据集,按照项头表排列好的结果,一次创建节点 3.因为尿布出现在所有订单中,没有例外情况,所以这只有一个子节点 4.因为牛奶出现在尿布中的所有订单里,所以只有一个子节点 5.由表中数据可得,在出现牛奶的订单中,面包出现的情况,分为两种, 1)出现3次面包,出现在有牛奶的订单中 2)出现一次面包,出现在没有牛奶的订单中 故,生成两个子节点 6.后续内容属于迭代内容,自行体会 3.创建条件模式集 是一个减掉子树过程。将祖先节点的支持度,记为叶子节点之和,减少频繁项集。 简单理解,就是有几个叶子,说明最开始的节点,怀了几个孩子,怀几个生几个 理解 1.创建含有啤酒的FP树,只有订单中含有啤酒的频繁项集才存在 2.去掉啤酒节点,品酒节点为空,得到,两个频繁项集 见图可理解 作业 1.工作原理 1)K=1,计算支持度 2)筛选小于最小支持度的项集 3)判断如果项集项集为空,K-1项集为最终结果 4)判断失败,K=K+1,重复1-3 2.优化 1)利用FP树和项头表,减少频繁项集的数量存储和计算
编辑回复: 总结的不错,都可以看下。
2019-02-2016 - Sam.张朝https://www.ibm.com/developerworks/cn/analytics/library/machine-learning-hands-on2-fp-growth/index.html FP 还是这里说的清楚
作者回复: 多谢分享
2019-05-099 - 白夜Apriori 的工作原理: 0.设置一个最小支持度, 1.从K=1开始,筛选频繁项集。 2.在结果中,组合K+1项集,再次筛选 3.循环1、2步。直到找不到结果为止,K-1项集的结果就是最终结果。 FP-Growth相比Apriori的优点: 降低了计算复杂度,只要遍历两次数据集。可以直接得到指定商品的条件模式基。
编辑回复: 对的 是Apriori和FP-Growth的特点。
2019-02-214 - Ronnyz老师,想问下那置信度和提升度在Aproiri和FP-Growth算法中应用在哪了
作者回复: 可以用于筛选,比如itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)
2019-11-211 - 梁林松Apriori算法工作原理是通过计算子集的置信度来寻找频繁项集,从而确立关联。 PF-Growth算法是改进的 Apriori, 改进之处在于它是按照明确品类去计算频繁项目集的,而不是去求全部数据集的频繁项集。
作者回复: 对的
2019-02-281 - kenApriori挖掘频繁项集,那么置信度和提升度是对得出的频繁项集进行验证的是吧?如得出了啤酒的频繁项集后是对每个结果计算提升度,怎么选择最优的组合呢?是否会出现提升度大而置信度下降的情况?
编辑回复: 置信度和提升度是对频繁项集的一种验证,在筛选最优组合的时候,一般会设置最小支持度,最小置信度,这样频繁项集和关联关系都要满足这个条件。提升度 (A→B)= 置信度 (A→B)/ 支持度 (B),所以提升度是对满足前两者条件的另一种验证方式,这样避免一种情况:置信度(A->B)很高,是因为本身支持度(B)很高,实际上和A的出现关系不大。
2019-02-201 - McKee ChenApriori算法的原理: 1. 输入数据集合D,支持度阈值α 2. 扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。K=1,频繁0项集为空集 3. 扫描数据计算候选频繁K项集的支持度 4. 去除候选频繁K项集中支持度低于阈值的数据集,得到频繁K项集。如果得到的频繁K项集为空,则直接返回频繁K-1项集的集合作为算法结果,算法结束。否则继续对K项进行计算,直到没有更新的频繁项集 Apriori算法和FP-Growth算法的区别: 1. Apriori算法需要对数据集进行多次扫描,而FP-Growth只需要扫描数据集两次 2. Apriori算法可能产生大量的候选集。而FP-Growth只需要创建FP树来储存频繁项集,并在创建前对不满足最小支持度的项进行删除
作者回复: 加油 总结的不错
2021-01-19 - JustDoDT在这个基础上,我们将商品两两组合,得到 k=2 项的支持度 上面这句话下面的表,商品1,2的置信度应该为4/5,表里面列的1/5 我数了同时有商品1,2的订单有4个。 希望核实一下。
作者回复: from efficient_apriori import apriori # 设置数据集 transactions = [(1, 2, 3), (4, 2, 3, 5), (1, 3, 5, 6), (2, 1, 3, 5), (2, 1, 3, 4)] # 挖掘频繁项集和频繁规则 itemsets, rules = apriori(transactions, min_support=0.5, min_confidence=1) print("频繁项集:", itemsets) print("关联规则:", rules)
2020-04-072 - 布兰特K=3 项的商品组合 是不是少了一个 1,3,5 组合啊
作者回复: 1,3,5的支持度低于0.5的最小支持度,所以最终结果里被舍弃了
2020-04-01 - Red Cape构造FP树的过程这里看不懂,面包,啤酒为什么会拆分呢
编辑回复: FP -Growth中有一个概念叫:条件模式基。它在FP树创建的时候还用不上,创建的时候主要是通过扫描整个数据,和项头表来构造FP树。条件模式基用于挖掘频繁项的过程。通过数找到每个项(item)的条件模式基,递归挖掘频繁项集
2019-02-21