最新机器学习-FPGROWTH算法_第1页
最新机器学习-FPGROWTH算法_第2页
最新机器学习-FPGROWTH算法_第3页
最新机器学习-FPGROWTH算法_第4页
最新机器学习-FPGROWTH算法_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机器学习-FP-GROWTH算法目录2Apriori算法和FP-GROWTH算法的比较FP-GROWTH算法原理FP-GROWTH代码实现(python)示例:从新闻网站点击流中挖掘新闻报道回忆Apriori算法3 项集:项的集合称为项集,即商品的组合。 k项集:k件商品的组合,不关心商品件数,仅商品的种类。 频繁项集:如果项集的相对支持度满足给定的最小支持度阈值,则该项集是频繁项集。 强关联规则:满足给定支持度和置信度阈值的关联规则 支持度:support(A-B) = P(AB) 置信度:confidence(A-B) = P(A|B) 回忆Apriori算法4回忆Apriori算法5Ap

2、riori算法的挑战6挑战 多次数据库扫描 巨大数量的候补项集 繁琐的支持度计算改善Apriori: 基本想法 减少扫描数据库的次数 减少候选项集的数量 简化候选项集的支持度计算FP-GROWTH算法优点 相比Apriori算法需要多次扫描数据库,FPGrowth只需要对数据库扫描2次。 第1次扫描事务数据库获得频繁1项集。 第2次扫描建立一颗FP-Tree树。7FP-GROWTH算法原理-实例1 要找总是一起购买的商品,比如薯片,鸡蛋就是一条频繁模式(规律)。8IDItems1牛奶,鸡蛋,面包,薯片2鸡蛋,爆米花,薯片,啤酒3牛奶,面包,啤酒4牛奶,鸡蛋,面包,爆米花,薯片,啤酒5鸡蛋,面包

3、,薯片6鸡蛋,面包,啤酒7牛奶,面包,薯片8牛奶,鸡蛋,面包,黄油,薯片9牛奶,鸡蛋,黄油,薯片FP-GROWTH算法原理-实例1-统计频次 Step1:先扫描数据库,统计所有商品的出现次数(频数),然后按照频数递减排序,删除频数小于最小支持度的商品。设最小支持度数为:minsup=4统计频数: 牛奶6,鸡蛋7,面包7,薯片7,爆米花2,啤酒4,黄油2.降序排序: 薯片7,鸡蛋7,面包7,牛奶6,啤酒4(删除小于minsup的商品)9IDItems1牛奶,鸡蛋,面包,薯片2鸡蛋,爆米花,薯片,啤酒3牛奶,面包,啤酒4牛奶,鸡蛋,面包,爆米花,薯片,啤酒5鸡蛋,面包,薯片6鸡蛋,面包,啤酒7牛奶

4、,面包,薯片8牛奶,鸡蛋,面包,黄油,薯片9牛奶,鸡蛋,黄油,薯片 频繁1项集,记为F1FP-GROWTH算法原理-实例1-重新排序10IDItems1牛奶,鸡蛋,面包,薯片2鸡蛋,爆米花,薯片,啤酒3牛奶,面包,啤酒4牛奶,鸡蛋,面包,爆米花,薯片,啤酒5鸡蛋,面包,薯片6鸡蛋,面包,啤酒7牛奶,面包,薯片8牛奶,鸡蛋,面包,黄油,薯片9牛奶,鸡蛋,黄油,薯片IDItems1薯片,鸡蛋,面包,牛奶2薯片,鸡蛋,啤酒3面包,牛奶,啤酒4薯片,鸡蛋,面包,牛奶,啤酒5薯片,鸡蛋,面包6鸡蛋,面包,啤酒7薯片,面包,牛奶8薯片,鸡蛋,面包,牛奶9薯片,鸡蛋,牛奶Step2:对每一条数据记录,按照F

5、1重新排序。FP-GROWTH算法原理-实例1-建立FP树11IDItems1薯片,鸡蛋,面包,牛奶2薯片,鸡蛋,啤酒3面包,牛奶,啤酒4薯片,鸡蛋,面包,牛奶,啤酒5薯片,鸡蛋,面包6鸡蛋,面包,啤酒7薯片,面包,牛奶8薯片,鸡蛋,面包,牛奶9薯片,鸡蛋,牛奶Step3:把第二步重新排序后的记录,插入到fp-tree中Step3.1:插入第一条(第一步有一个虚的根节点)FP-GROWTH算法原理-实例1-建立FP树12IDItems1薯片,鸡蛋,面包,牛奶2薯片,鸡蛋,啤酒3面包,牛奶,啤酒4薯片,鸡蛋,面包,牛奶,啤酒5薯片,鸡蛋,面包6鸡蛋,面包,啤酒7薯片,面包,牛奶8薯片,鸡蛋,面包

6、,牛奶9薯片,鸡蛋,牛奶Step3.2:插入第二条。根结点不管,然后插入薯片,在step3.1的基础上+1,则记为2;同理鸡蛋记为2;啤酒在step3.1的树上是没有的,那么就开一个分支。FP-GROWTH算法原理-实例1-建立FP树13IDItems1薯片,鸡蛋,面包,牛奶2薯片,鸡蛋,啤酒3面包,牛奶,啤酒4薯片,鸡蛋,面包,牛奶,啤酒5薯片,鸡蛋,面包6鸡蛋,面包,啤酒7薯片,面包,牛奶8薯片,鸡蛋,面包,牛奶9薯片,鸡蛋,牛奶Step3.3:插入第三条FP-GROWTH算法原理-实例1-建立FP树14IDItems1薯片,鸡蛋,面包,牛奶2薯片,鸡蛋,啤酒3面包,牛奶,啤酒4薯片,鸡蛋

7、,面包,牛奶,啤酒5薯片,鸡蛋,面包6鸡蛋,面包,啤酒7薯片,面包,牛奶8薯片,鸡蛋,面包,牛奶9薯片,鸡蛋,牛奶同理,剩余记录依次插入fp-tree中。FP-GROWTH算法原理-实例1-建立FP树15图中左边的一列叫做头指针表,树中相同名称的节点要链接起来,链表的第一个元素就是头指针表里的元素。虚线连接起来的表示同一个商品,各个连接的数字加起来就是该商品出现的总次数。FP-GROWTH算法原理-实例1-挖掘频繁项集Step4:从FP-Tree中找出频繁项集。遍历表头项中的每一项(以“牛奶:6”为例),从FP-Tree中找到所有的“牛奶”结点,向上遍历它的祖先结点,得到4条路径,如表所示。1

8、6FP-GROWTH算法原理-实例1-挖掘频繁项集Step4:从FP-Tree中找出频繁项集。对于每一条路径上的节点,其count都设置为牛奶的count(路径中最末尾的商品数)17FP-GROWTH算法原理-实例1-挖掘频繁项集Step4:从FP-Tree中找出频繁项集。因为每一项末尾都是牛奶,可以把牛奶去掉,得到条件模式基,此时的后缀模式是:牛奶。18FP-GROWTH算法原理-实例2 把例子简化一下,请看以下实例219TidItems1I1,I2,I52I2,I43I2,I34I1,I2,I45I1,I36I2,I37I1,I38I1,I2,I3,I59I1,I2,I3FP-GROWTH

9、算法原理-实例2-统计频次 先扫描数据库,统计所有商品的出现次数(频数) 定义min_sup=2,按照频数递减排序,删除频数小于最小支持度的商品。重新排列得到频繁1-项目集F20I1I2I3I4I567622I2I1I3I4I576622FP-GROWTH算法原理-实例2-重新排序21I27I16I36I42I52TidItems1I2, I1,I52I2,I43I2,I34I2, I1,I45I1,I36I2,I37I1,I38I2, I1,I3,I59I2, I1,I3FP-GROWTH算法原理-实例2-创建根结点和频繁项目表22Item-nameNode-headI2NullI1Null

10、I3NullI4NullI5NullNullFP-GROWTH算法原理-实例2-加入第一个事务(I2,I1,I5)23FP-GROWTH算法原理-实例2-加入第二个事务(I2,I4)24FP-GROWTH算法原理-实例2-加入第三个事务(I2,I3)25FP-GROWTH算法原理-实例2-加入第四个事务(I2,I1,I4)26FP-GROWTH算法原理-实例2-加入第五个事务(I1,I3)27FP-GROWTH算法原理-实例2-加入第六个事务(I2,I3)28FP-GROWTH算法原理-实例2-加入第七个事务(I1,I3)29FP-GROWTH算法原理-实例2-加入第八个事务(I2,I1,I3

11、,I5)30FP-GROWTH算法原理-实例2-加入第九个事务(I2,I1,I3)31FP-GROWTH算法原理-实例2-挖掘频繁项集 首先考虑I5,得到条件模式基: 、 构造条件FP-Tree32得到I5频繁项集:I2,I5,I1,I5,I2,I1,I5FP-GROWTH算法原理-实例2-挖掘频繁项集 接着考虑I4,得到条件模式基: 、 构造条件FP-Tree33得到I4频繁项集:I2,I4FP-GROWTH算法原理-实例2-挖掘频繁项集 然后考虑I3,得到条件模式基: 、 构造条件FP-Tree34由于此树不是单分支路径,因此需要递归挖掘I3FP-GROWTH算法原理-实例2-挖掘频繁项集

12、 递归考虑I3,此时得到I1条件模式基,即I1, I3的条件模式基为 构造条件FP-Tree35得到I3的频繁项目集I2,I3,I1,I3,I2,I1,I3FP-GROWTH算法原理-实例2-挖掘频繁项集 最后考虑I1,得到条件模式基: 构造条件FP-Tree36得到I1的频繁项目集:I2,I1FP-GROWTH算法实现-数据处理37项集e,m,q,s,t,y,x,zx,s,r,o,ns,u,t,w,v,y,x,zq,p,r,t,y,x,z h,r,z,p,jz格式化处理代码实现-FP树数据结构38代码实现-构造FP树步骤39代码实现-构造FP树40代码实现-构造FP树41代码实现-构造FP树

13、(updateTree函数)42代码实现-构造FP树(updateHeader函数)43代码实现-构造FP树(验证)44代码实现-挖掘频繁项集步骤 从构建好的FP树中抽取频繁项集的步骤如下:(1)从FP树中获取条件模式基;(2)利用条件模式基,构建一个条件FP树;(3)迭代重复(1)(2),直到树包含一个元素项为止。45条件模式基定义 条件模式基是以所查找元素项为结尾的路径集合所查找元素项为结尾的路径集合。每一条路径其实都是一条前缀路径前缀路径。简而言之,一条前缀路径就是介于所查找元素项与树根节点之间的所有内容。 每一个频繁项的所有前缀路径(条件模式基):46代码实现-抽取条件模式基47eg:t的第1条前缀路径prefixPath=t,s,y,x,z;代码实现-抽取条件模式基48代码实现-抽取

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论