版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python数据挖掘实战关联规则第五章分析前言
正如一位冒险家需要一把可靠的指南针一样,我们在数据的海洋中也需要一种强大的工具来帮助我们发现项集之间的关联关系,关联规则分析,作为数据挖掘的重要技术之一,正是为此而生。
关联规则分析是一项非常重要的数据挖掘技术,它能够帮助我们揭示数据中的关联关系和隐含规律。通过分析数据集中的项之间的相关性,我们可以获得有价值的信息,为决策和预测提供支持。目录概述Apriori算法FP-growth算法01概述"啤酒+尿布"——经典关联规则分析与应用案例
20世纪80年代,美国一家大型零售商在对顾客购买行为数据进行分析时发现,很多顾客在购买尿布时会同时购买啤酒。
经研究发现,这种购买行为主要发生在年轻的父亲身上;这些年轻父亲通常在下班后会顺便去超市购买尿布,但他们又不愿意只购买尿布就回家,因此他们会顺便购买一些啤酒作为奖励或放松。
基于以上研究,零售商将尿布和啤酒放在了相邻位置,还提供了针对购买尿布顾客的啤酒优惠券或推广活动,以进一步提高销售额。
关联规则分析又称关联挖掘,即在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构,从而捕捉那些看起来不相关事物之间的关联,以便更深刻地认识事物之间的关联。
5.1.1.概念1993年Apriori算法2000年FP-growth算法事务与事务集5.1.1.概念事务:在数据集中的一个事件或记录事务集:数据集中的所有事务的集合项与项集项:事务中的一个元素或特征项集:在一个事务中同时出现的项的集合频繁项集频繁:某一项集在事务数据集中出现的次数达到了一个预先设定的最小阈值频繁项集:出现频率较高的项的集合关联规则关联规则是一种“如果...那么...”形式的规则,描述了数据集中的项之间的关系基本概念例5-1假设有一个小型咖啡馆的5条购买记录,记录了每位顾客的购买情况5.1.1.概念1.事务与事务集订单中,每一行数据代表一个顾客的购物篮,比如顾客1的订单包含了咖啡和橙汁,这就是一个事务。所有这些订单的集合就构成了事务集。2.项与项集在每个订单中,商品就是项。比如,顾客1的订单中的项是咖啡和橙汁。而项集则是在同一个订单中同时出现的项的集合。比如,顾客3的订单中同时出现了咖啡、橙汁和面包,这就是一个三项集。3.频繁项集如果我们设定一个最小阈值,比如出现次数超过2次,那么{咖啡}、{橙汁}、{面包}都可以被称为频繁项集,因为它们在订单中的出现次数都超过了2次。4.关联规则基于频繁项集可以找到关联规则,比如{咖啡,橙汁}=>{面包}规则,这意味着如果顾客购买了咖啡和橙汁,那么他们也有可能购买面包。支持度(support)5.1.1.概念支持度指一个事务数据集中包含某个项集的事务数与总事务数之间的比例。支持度越高,说明该项集出现的频率越高置信度(confidence)置信度指在一个项集出现的事务中,另一个项集也出现的概率。置信度越高,说明两个项集之间的关联性越强衡量指标提升度(lift)提升度用于衡量两个项集之间的关联程度。提升度的值越大,表示两个项集之间的关联性越强关联规则分析的核心是寻找数据集中项之间存在的频繁项集和关联规则。5.1.2.原理步骤包含n项的总项集
如何判断挖掘到的子项集或者规则是否意义5.1.2.原理步骤1.从数据集中寻找频繁项集1)遍历对象之间所有可能的组合,每种组合构成一个候选项集2)对于每一个项集A,计算A的支持度3)返回所有支持度大于指定阈值的项集,作为频繁项集,其余项集删除剪枝4)通过迭代的方式生成更大的候选项集和频繁项集,直到没有更大的候选项集可以生成为止2.从频繁项集中生成关联规则1)对于每个频繁项集,根据其包含的项数,生成关联规则2)对于每个频繁项集的子集,计算置信度并与最小置信度阈值进行比较3)返回置信度大于等于最小置信度阈值的强关联规则关联规则分析的应用领域非常广泛,涵盖了市场营销、推荐系统、医疗、交通、社交网络等多个领域。5.1.3.应用领域02Apriori算法为了解决挖掘大规模频繁项集时项集组合爆炸这一问题,Apriori算法提出了两个基本原理:5.2.1.基本原理1.先验原理:如果某个项集是频繁的,那么它的所有子集也是频繁的2.支持度反单调性:如果某个项集不是频繁项集,那么它的超集(即包含它的所有项集)也一定不是频繁项集Apriori算法流程包括频繁项集的生成和剪枝,以及关联规则的生成和过滤。5.2.2.算法流程频繁项集的生成和剪枝:1)扫描数据集,从数据集中生成候选k项集;2)计算每个项集的支持度,删除低于阈值的项集(剪枝),构成频繁项集;3)将频繁项集中的元素进行组合,生成候选k+1项集;4)重复步骤2)、3),直到满足以下两个条件之一时,算法结束。(1)频繁项集无法组合生成候选k+1项集;(2)所有候选k项集支持度都低于指定的最小支持度,无法生成频繁k项集。Apriori算法流程包括频繁项集的生成和剪枝,以及关联规则的生成和过滤。5.2.2.算法流程关联规则的生成和过滤:当产生频繁项集后,将每个频繁项集拆分成两个非空子集,使用这两个子集来构成关联规则。
针对每一个关联规则,分别计算其置信度,仅保留大于等于最小置信度的关联规则,得到强关联规则。
5.2.2.算法流程
例5-3有5条购物商品订单记录,每条记录表示一个顾客的购物篮内容。假设最小支持度为0.5,最小置信度为0.7,通过5条记录,生成频繁项集和关联规则。5.2.2.算法流程1.准备工作例5-3有5条购物商品订单记录,每条记录表示一个顾客的购物篮内容。假设最小支持度为0.5,最小置信度为0.7,通过5条记录,生成频繁项集和关联规则。5.2.2.算法流程2.频繁项集的生成和剪枝例5-3有5条购物商品订单记录,每条记录表示一个顾客的购物篮内容。假设最小支持度为0.5,最小置信度为0.7,通过5条记录,生成频繁项集和关联规则。5.2.2.算法流程2.频繁项集的生成和剪枝例5-3有5条购物商品订单记录,每条记录表示一个顾客的购物篮内容。假设最小支持度为0.5,最小置信度为0.7,通过5条记录,生成频繁项集和关联规则。5.2.2.算法流程2.频繁项集的生成和剪枝例5-3有5条购物商品订单记录,每条记录表示一个顾客的购物篮内容。假设最小支持度为0.5,最小置信度为0.7,通过5条记录,生成频繁项集和关联规则。5.2.2.算法流程3.关联规则的生成和过滤例5-3有5条购物商品订单记录,每条记录表示一个顾客的购物篮内容。假设最小支持度为0.5,最小置信度为0.7,通过5条记录,生成频繁项集和关联规则。5.2.2.算法流程3.关联规则的生成和过滤5.2.3.实战准备三个实用的工具包:efficient_apriori、mlxtend、apyori使用“pipinstall工具包名”命令下载安装5.2.3.实战准备算法优点缺点efficient_apriori算法效率高,适用于大规模数据集的频繁项集和关联规则挖掘;提供了较为简洁的API,易于使用和理解;支持自定义的数据格式,灵活性较高。功能相对比较简单,仅支持关联规则挖掘。mlxtend功能丰富,除了Apriori算法,还提供了其他常用的数据挖掘算法和工具;集成了pandas数据结构,方便数据预处理和结果分析;提供了可视化工具,便于结果展示和解释。算法效率较低,处理大规模数据集时速度较慢;对于一些数据类型(如文本数据)的处理能力相对较弱。apyori简洁轻量,代码量少,易于理解和修改;不依赖于其他第三方库,安装和使用简单。功能相对较少,仅支持Apriori算法进行关联规则挖掘。5.2.3.实战准备1.efficient_apriori主要函数:apriori常用参数:transactions:数据集,必须是一个列表,其中每个元素是一个集合(表示一条交易记录)min_support:最小支持度阈值,用于筛选频繁项集,默认为0.5min_confidence:最小置信度阈值,用于筛选关联规则,默认为0.5max_length:频繁项集的最大长度,默认为None,表示不限制最大长度verbosity:输出信息的详细程度,默认为1,可选值为0(不输出)和1(输出)target:关联规则的目标类型,默认为"rules",可以选择"associations"或"items"fromefficient_aprioriimportaprioriitemsets,rules=apriori(transactions,min_support=0.5,min_confidence=0.2)5.2.3.实战准备2.MLxtend主要函数:1)apriori函数常用参数:df:需要进行关联规则挖掘的数据集,这是必须提供的参数,没有默认值。min_support(默认为0.5):最小支持度,用于筛选频繁项集。use_colnames(默认为False):是否将列名用作项名。若为True,则项名将是列名的字符串,否则将是列名的整数索引。max_len(默认为None):频繁项集的最大长度。如果为None,则不限制长度。verbose(默认为0):用于控制输出的详细程度。0表示不输出任何信息,大于0的数表示输出频繁项集的数量。frommlxtend.frequent_patternsimportapriorifrequent_itemsets=apriori(df,min_support=0.5,use_colnames=True)5.2.3.实战准备2.MLxtend主要函数:2)association_rules函数常用参数:df:需要生成关联规则的频繁项集,这是必须提供的参数,没有默认值。metric(默认为"confidence"):用于评估关联规则的度量。可以选择"support"、"confidence"、"lift"、"leverage"和"conviction"。min_threshold(默认为0.8):度量的最小阈值,用于筛选关联规则。frommlxtend.frequent_patternsimportassociation_rulesrules=association_rules(frequent_itemsets,metric="confidence",min_threshold=0.8)5.2.3.实战准备3.apyori主要函数:apriori函数常用参数:transactions:一个包含交易数据的可迭代对象,如列表或集合。这是唯一一个必须提供的参数min_support(默认为0.1):最小支持度,用于筛选频繁项集。支持度是项集在所有交易中出现的频率min_confidence(默认为0.0):最小置信度,用于筛选关联规则。置信度是一条规则的前项和后项同时出现的概率min_lift(默认为0.0):最小提升度,用于筛选关联规则。提升度是一条规则的置信度除以其后项的支持度max_length(默认为None):频繁项集的最大长度。如果为None,则不限制长度。fromapyoriimportapriorirules=apriori(transactions,min_support=0.5,min_confidence=0.2,min_lift=1.0,max_length=2)03FP-growth算法FP:频繁模式(FrequentPattern)growth:通过树的生长来实现频繁模式的挖掘条件模式基:条件模式基是指从某个项的节点到根节点的路径上的所有事务集合。5.3.1.基本原理FP-growth算法基本原理:通过构建FP树来压缩事务数据集递归处理FP树的每个节点,通过连接该节点的条件模式基,构建新的FP树,然后继续挖掘频繁模式构建FP树方法:把事务数据表中的各个事务数据项按照支持度排序把每个事务中的数据项按降序依次插入到一棵以NULL为根结点的树中在每个结点处记录该结点出现的支持度5.3.1.基本原理FP-growth算法引入了一些数据结构来临时存储数据,该数据结构包括三部分:项头表、FP树、节点链5.3.1.基本原理5.3.2.算法流程1.项头表的建立建立项头表需要经历两次扫描数据集。1)第一次扫描数据,得到所有频繁一项集的的计数2)删除支持度低于阈值的项,将1项频繁集放入项头表,并按照支持度降序排列3)第二次扫描数据时,对于每条数据剔除非频繁1项集,并按照支持度降序排列2.FPTree的建立1)遍历读取排序后的数据集,插入FP树,插入时按照排序后的顺序2)如果有共用的祖先,则对应的公用祖先节点计数加13)如果有新节点出现,则项头表对应的节点会通过节点链表链接上新节点4)直到所有的数据都插入到FP树后,FP树的建立完成5.3.2.算法流程1.项头表的建立第一次扫描数据,对1项集计数,其中可以发现A、B、C、D、E、F分别出现4、3、3、2、2、1次,根据设定的支持度阈值30%,过滤掉F,那么剩下的A、C、E、B、D按照支持度的大小降序排列,组成项头表。通过两次扫描,项头表建立完毕,并得到排序后的数据集。例5-6假设有一数据集包含5条数据,如图所示,假设最小支持度为30%,对其进行FPTree的建立。5.3.2.算法流程例5-6假设有一数据集包含5条数据,如图所示,假设最小支持度为30%,对其进行FPTree的建立2.FPTree的建立插入第1条数据ACEBF,此时FP树没有节点,因此ACEBD是一个独立的路径,所有节点计数为1,项头表通过节点链表链接上对应的新增节点插入第2条数据ACE,由于ACE和现有的FP树可以有共有的祖先节点序列ACE,因此A、C、E的计数加1成为2。5.3.2.算法流程例5-6假设有一数据集包含5条数据,如图所示,假设最小支持度为30%,对其进行FPTree的建立2.FPTree的建立参考以上步骤更新后面3条数据,得到最终的FP-Tree5.3.2.算法流程3.频繁项集的挖掘基于FP树、项头表以及节点链表来挖掘频繁项集,首先要从项头表的底部项依次向上挖掘。项头表对应于FP树的每一项,要找到它的条件模式基,即要挖掘叶子节点所对应的FP子树,将子树中每个节点的的计数设置为叶子节点的计数,并删除计数低于支持度的节点。基于该条件模式基,可以递归挖掘得到频繁项集。找到一个项对应的所有条件模式基之后,可以利用条件模式基的集合创建条件FP-Tree迭代收集频繁项集。5.3.2.算法流程例5-7以例5-6数据集的5条数据为例,假设最小支持度为30%,对其进行条件模式基和频繁项集的挖掘。D的频繁2项集为{A:2,D:1},{C:1,D:1},{E:1,D:1},{B:1,D:1}。频繁3项集为{A:2,C:1,D:1},{A:2,E:1,D:1},……最大的频繁项集为频繁5项集,为{A:2,C:1,E:1,B:1,D:1}。5.3.2.算法流程例5-7以例5-6数据集的5条数据为例,假设最小支持度为30%,对其进行条件模式基和频繁项集的挖掘。B的频繁2项集为{A:2,B:2},{C:2,B:2}。B对应的最大的频繁项集为频繁3项集,频繁3项集为{A:2,C:2,B:2}。5.3.2.算法流程例5-7以例5-6数据集的5条数据为例,假设最小支持度为30%,对其进行条件模式基和频繁项集的挖掘。5.3.3.实战准备1.Mlxtend主要函数:mlxtend.frequent_patterns.fpgrowth常用参数:df:一个pandasDataFrame,其中每一列代表一个项,每一行代表一个交易。项的值应为布尔值或二进制值min_support(默认为0.5):最小支持度,用于筛选频繁项集use_colnames(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026内蒙古赤峰松山区民政局公办敬老院招聘工作人员2人备考题库附答案详解(夺分金卷)
- 2026新疆塔城地区检察机关面向社会考试招聘聘用制书记员13人备考题库带答案详解(完整版)
- 2026中国科学院生态环境研究中心“海外优青”招聘备考题库(北京)及参考答案详解1套
- 2026中军五零五国际疗养康复中心招聘备考题库含答案详解(综合卷)
- 2026江西上饶婺源县蚺城街道办事处综合行政执法队编外辅助人员招聘4人备考题库附参考答案详解(轻巧夺冠)
- 雨课堂学堂在线学堂云《生命关怀与心理健康(华侨)》单元测试考核答案
- 2026安徽省社会科学院招聘高层次人才16人备考题库附参考答案详解(典型题)
- 2026云南楚雄州永仁县发展和改革局政府购买服务人员招聘5人备考题库带答案详解(达标题)
- 2026洞头海霞青年营度假酒店招聘5人备考题库(浙江)附答案详解
- 2026广东广州市越秀区华乐街道办事处招聘合同制人员1人备考题库及参考答案详解(a卷)
- 第一单元《1.多彩的亚洲美术》课件-浙人美版初中美术七年级下册
- 无人机保险相关知识培训课件
- 课件:深入学习习近平总书记关于教育的重要论述
- 医院 全员安全生产责任制
- 超声内镜在胰腺疾病诊疗中的应用
- 供应链协同对农村电商发展的机制分析
- CIP、SIP工艺流程操作说明书
- 桩基施工安全措施方案
- 盘活利用闲置低效厂区厂房实施方案
- 高空安全培训试题及答案
- 2024年1月20日河北省委办公厅公开选调工作人员笔试真题及解析(综合文字岗)
评论
0/150
提交评论