FPtree是针对Apriori关联规则挖掘算法的改进,他的优点在于只需要扫描一遍数据库,建好了FPtree之后,基于树做关联规则挖掘就可以了,显然大大减少了数据库的扫描次数。

建FPtree前的工作

在扫描左边一条一条数据的时候,我们完成项头表,即记录了频繁1项集,不但如此,还记录这些频繁1项集谁最频繁,也就是次数,比如A出现了8次。

接下来我们将左边每一条数据进行一定的处理,这个处理包括两部分:

  1. 把非频繁1项集删去,因为频繁K项集中一定不会出现这个项,留着对我们关联规则挖掘也没有用。比如A,B,C,E,F,O变成A,B,C,E,F。
  2. 完成了1之后,我们把那个交易记录排一下序,由于C出现8次比B多,所以A,B,C,E,F变成A,C,E,B,F。这一步非常非常关键,后面即可知道

FPtree的建立

根据排序后的交易记录建树。

A,C,E,B,F

A,C,G,这里大家观察一下,节点被经历了多少次是要计数的,下图可以发现,A,C都变成了被经历了2次。

![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/09b580e2ba90a91b72a7a97edded0a67.png)

FPtree的挖掘

前面一直都是合情合理,却不知道为什么要这样的数据结构,这全都是因为这里的需要。下面我们基于上面生成的FPtree进行关联规则挖掘。

我们先从上面的F节点看起,对应唯一一条路径{A:8,C:8,E:6,B:2, F:2}。这其实给我们的直观理解就是:A,C,E,B,F在所有交易记录中出现了2次。由于我们的最小支持度是2,所以这就是频繁5项集了。不过,具体做法是,我们定义F的条件模式基为:{A:2,C:2,E:2,B:2},不写自身节点F,所以才叫基。

我们知道{A,C,E,B,F}是频繁5项集,根据Apriori算法,所有子集都是频繁项集,比如频繁2项集有:{A,F},{C,F},{E,F},{B,F}。其实显然我们知道还有{C,E},但是我们在此处不写,因为这里如果挖掘了{C,E},等到我们下次处理节点E的时候,会重复,到时候又要去重。总之,这里的频繁k项集都要带着F,再比如频繁3项集有:{A,C,F}。但是不可以{A,C,E}。

F挖掘完了,我们开始挖掘D节点。D节点比F节点复杂一些,因为它有两个叶子节点,因此首先得到的FP子树如下图左。仿照前面,直观理解,我们可以得到:{A:1, C:1,E:1 G:1,D:1},{A:1,C:1,D:1}。合并一下{A:2, C:2,D:2}。这里为什么去除E,G,想必你很容易理解。通过{A:2, C:2,D:2},我们很容易得到D的频繁2项集为{A:2,D:2},{C:2,D:2}。递归合并二项集,得到频繁三项集为{A:2,C:2,D:2}。D对应的最大的频繁项集为频繁3项集。

同样的方法可以得到B的条件模式基如下图右边,递归挖掘到B的最大频繁项集为频繁4项集{A:2, C:2, E:2,B:2}。

挖掘G的频繁项集。这里稍微注意一下,可以好好理解一下。挖掘到的G的条件模式基如下图右边,递归挖掘到G的最大频繁项集为频繁4项集{A, C, E,G}。并且这个出现4次。

E的条件模式基如下图右边,递归挖掘到E的最大频繁项集为频繁3项集{A:6, C:6, E:6}。

C的条件模式基如下图右边,递归挖掘到C的最大频繁项集为频繁2项集{A:8, C:8}。

至于A,由于它的条件模式基为空,因此可以不用去挖掘了。其实前面的很多频繁项集都包括了A,所以不用向下挖掘,是重复的

至此我们得到了所有的频繁项集。一个问题,我们注意到:我们是按项头表逆序来依次挖掘的,因为这些一般在叶子节点。比如F,D。。。的顺序依次挖掘。可否反着来的,或者乱序来呢?大家可以试一试,反着来应该是可以的,但是处理步骤更复杂。

FPtree算法归纳

    这里我们对FP Tree算法流程做一个归纳。FP Tree算法包括三步:

    1)扫描数据,得到所有频繁一项集的的计数。然后删除支持度低于阈值的项,将1项频繁集放入项头表,并按照支持度降序排列。

    2)扫描数据,将读到的原始数据剔除非频繁1项集,并按照支持度降序排列。

    3)读入排序后的数据集,插入FP树,插入时按照排序后的顺序,插入FP树中,排序靠前的节点是祖先节点,而靠后的是子孙节点。如果有共用的祖先,则对应的公用祖先节点计数加1。插入后,如果有新节点出现,则项头表对应的节点会通过节点链表链接上新节点。直到所有的数据都插入到FP树后,FP树的建立完成。

    4)从项头表的底部项依次向上找到项头表项对应的条件模式基。从条件模式基递归挖掘得到项头表项项的频繁项集。

数据挖掘关联规则挖掘FPtree的思想相关推荐

  1. 数据挖掘——关联规则挖掘

    <数据挖掘>国防科技大学 <数据挖掘>青岛大学 数据挖掘之关联规则挖掘 关联规则挖掘(Association Rule Mining)最早是由Agrawal等人提出.最初的动机 ...

  2. 数据挖掘关联规则挖掘改进算法DHP

    前言: Apriori算法是关联规则挖掘经典算法,但不适合在大型数据库中挖掘关联规则,时间太慢,许多学者提出了改进的算法.比如DHP算法. DHP 1. 减少候选集数量 背景:这个操作是基于Ck来做的 ...

  3. python 数据挖掘 关联规则挖掘 实践 Apriori FP-Tree mlxtend

    1 引言 关联规则分析也成为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系.例如一个超市的经理想要更多地了解顾客的购物习惯,比如"哪组商品可能会在一次购物中同时购买?&q ...

  4. 数据挖掘-关联规则挖掘之Apriori算法

    目录 一.定义 二.Apriori定律 Apriori定律1): Apriori定律2): 三.Apriori算法工作原理: 四.Apriori算法特点: 一.定义 Apriori是由a priori ...

  5. 数据挖掘算法之-关联规则挖掘(Association Rule)(购物篮分析)

    在各种数据挖掘算法中,关联规则挖掘算是比较重要的一种,尤其是受购物篮分析的影响,关联规则被应用到很多实际业务中,本文对关联规则挖掘做一个小的总结. 首先,和聚类算法一样,关联规则挖掘属于无监督学习方法 ...

  6. 数据挖掘算法之-关联规则挖掘(Association Rule)

    在数据挖掘的知识模式中,关联规则模式是比较重要的一种.关联规则的概念由Agrawal.Imielinski.Swami 提出,是数据中一种简单但很实用的规则.关联规则模式属于描述型模式,发现关联规则的 ...

  7. 数据挖掘2.4——关联规则挖掘 知识点整理

    数据挖掘2.4--关联规则挖掘 1.基本概念 1.1定义 2.频繁项挖掘算法 2.1降低产生频繁顷集计算复杂度的算法 2.2 Apriori 2.3 FPGrowth 2.4 产生关联规则 3.关联分 ...

  8. 2018-3-12论文(非结构化网络中有价值信息数据挖掘研究)笔记一总体思路以及三种目前进行价值信息挖掘的研究思想

    文章主要的内容: 提出了基于关联规则的非结构化网路中有价值信息数据挖掘的方法 总体的思想: (1)利用特征提取的方法进行初步的分类与识别,提取出不同文本类型的特征, (2)利用关联规则方法计算各个类型 ...

  9. 数据挖掘算法之关联规则挖掘(一)apriori算法

    关联规则挖掘算法在生活中的应用处处可见,几乎在各个电子商务网站上都可以看到其应用 举个简单的例子 如当当网,在你浏览一本书的时候,可以在页面中看到一些套餐推荐,本书+有关系的书1+有关系的书2+... ...

最新文章

  1. 技术大牛养成指南,一篇不鸡汤的成功学实践
  2. BIEE多层表头报表的制作方法
  3. 精通机器学习的5本免费电子书(5 free e-books for machine learning mastery)
  4. 大部分人都会忽略的Python易错点总结
  5. [css] box-sizing常用的属性有哪些?分别有什么作用?
  6. 当你抛弃windows使用linux,当我们厌倦了Windows系统还能考虑什么样的桌面操作系统?...
  7. java开发有日志存表的吗_Java日志信息存库(logback篇)
  8. 2.JVM和DVM之间的区别
  9. log4j不输出日志的解决方案
  10. 学python能做什么类型的工作-最适合学Python的几类人,有你吗?
  11. 推荐算法和机器学习入门
  12. UCI数据集(论文常用数据集)
  13. cppcheck的安装与使用
  14. 阅读芯片手册与STC16F40K128芯片手册阅读
  15. AOP之基于Schema配置总结与案例
  16. w ndows7调亮度快捷键,Windows7电脑亮度怎么调?
  17. 【人工智能算法从图解入手】
  18. 基于飞浆ERNIE3.0百亿级大模型实现中文短文本分类任务
  19. java实现beamsearch_Beam Search(集束搜索/束搜索)
  20. ijkplayer源码---音频播放

热门文章

  1. 三周写出高性能的Python代码,这些小技巧你值得一试。
  2. 瑞雪时晴,不亦快哉 ——图灵十一月月刊
  3. 《Generative Face Completion》论文笔记
  4. TensorFlow练习25: 使用深度学习做阅读理解+完形填空
  5. 如何用 TensorFlow 实现生成式对抗网络(GAN)
  6. “十四五”大数据产业发展锚定3万亿目标
  7. 斯坦福2021版图机器学习课程完结,视频、PPT全放送,大神主讲
  8. 独家 | 基于癌症生存数据建立神经网络(附链接)
  9. 用人工智能打击人工智能
  10. 斯坦福全球AI报告:清华AI课程人数增16倍,人才需求暴增 35 倍