数据挖掘——关联规则算法之FP-tree

  • 前言
  • FP-tree算法
  • FP-tree的优缺点

前言

Apriori算法需要生成大量的候选集而且需要进行多次的扫描,对于那些大数据量的数据集很耗费时间。基于此问题,FP-tree算法不用生成候选集,只进行两次数据库扫描。简单来说是尽可能少得读取数据,尽可能的对读取到的数据进行压缩,属于空间换时间的算法。

FP-tree算法

FP-tree没有候选集,直接压缩数据库成一个频繁模式,通过这棵树生成关联规则。

FP-tree的具体步骤:

步骤一、构造FP-tree:(1)扫描数据库一次,得到频繁项集1项集;(2)把项按支持度递减排序;(3)再一次扫描数据库,建立FP-tree。
步骤二、频繁模式的挖掘:根据事务数据库D和最小支持度min_sup,调用建树过程建立FP-tree;if(FP-tree为简单路径):将路径上支持度计数大于等于min_sup的节点任意组合,得到所需的频繁模式;else:初始化最大频繁模式集合为空;按照支持频率升序,以每个1频繁项为后缀,调用挖掘算法挖掘最大频繁模式集;根据最大频繁模式集合中最大频繁式,输出全部的频繁模式。

上面的过程看的云里雾里,下面来个例子来学习FP-tree:

举例

事务数据库如下:

Tid Items
1 a,b,e
2 b,d
3 b,c
4 a,b,d
5 a,c
6 b,c
7 a,b
8 a,b,c,e
9 a,b,c

那么按照上面说的步骤来处理上表的数据库:
步骤一:
1、扫描事务数据库得到频繁项集1项集F(每个项出现的次数):

a b c d e
6 7 6 2 2

2、定义min_sup = 20%,即最小支持度为2,此时每一项最少出现9∗0.2≈29 * 0.2 \approx 29∗0.2≈2次;
3、重新排列1项集F,把项按照支持度递减排序:

b a c d e
7 6 6 2 2

4、重新调整事务数据库,使每一个事务中的项按照频次递减的顺序排列:

Tid Items
1 b,a,e
2 b,d
3 b,c
4 b,a,d
5 a,c
6 b,c
7 a,b
8 b,a,c,e
9 b,a,c

这块需要注意,FP-tree算法不是先把上面的这个整张表排序好再去生成树,而是每排序好一个事务就构建一个树。下面说明怎样建立树。
5、创建根节点和频繁项目表
(1)创建根节点:

(2)加入第一个事务(b,a,e)

(3)加入第二个事务(b,d)
(4)加入第三个事务(b,c):

(5)加入第四个事务(b,a,d)

(6)按照上面的算法,直到加入第九个事务(b,a,c):

步骤二:
(1)此时按照支持度从小到大的顺序来挖掘。首先考虑e,得到条件模式基(简单理解就是以e为节点的所有路径分支), 同时把其经过的节点的个数设置为1(为什么设置为1?因为对于节点e来说,b和a对e只贡献一次作用,其他类似)

<b,a:1>、<b,a,c:1>

(2)利用上面得到的条件模式基,在此构建条件FP-tree:

(3)敲黑板了!!!这块不好理解!!!前面已经声明了最小支持度是2,然后上面由e得到的tree中c的支持度1是小于2的 ,所以和e结合起来也达不到支持度2,所以去掉:

那么剩下的b和a是满足要求的,他们与e结合起来可以有如下(两两组合)的三个频繁项集:

{b,e:2},{a,e:2},{b,a,e:2}

(4)按照递增的顺序,接下来该处理d了,其条件模式基:
<b,a:1>,<b:1>
那么构造d的FP-tree:

同样,a的支持度小于2,剔除,那么其tree如下:

得到d的频繁项集:

{b,d:2}

(5)考虑c,得到其条件模式基:
<b,a:2>,<b:2>,<a:2>

同样构造FP-tree:

注意:此树与上面的树都不同,此树不是单一路径的,因此需要递归挖掘c。
1)从a开始,考虑a,a的条件模式基<b:2>,构造a的条件FP-tree:

一定要转过来这个弯哈,因为这是递归的,该步得到的结构应该计入到5)里面,所以得c的频繁项集{b,c:4},{a,c:4},{b,a,c:2}

(6)考虑a(这不是上面递归里面的a) ,其条件模式基<b:4>

得a的频繁项集{b,a:4}。

FP-tree的优缺点

FP-tree结构的好处:
(1)完备:不会打破交易中的任何模式;包含了频繁模式挖掘所需的全部信息
(2)紧密:去除不相关信息(不包含非频繁项集);支持度降序排列,支持高的项在FP-tree中共享的机会也高;绝不会比原数据库大(如果不计算树节点的额外开销)。

优点:

  • FP-tree算法只需对事物数据库进行两次扫描;
  • 避免产生大量候选集

缺点:

  • 要递归生成条件数据库和条件FP-tree,所需内存开销大;
  • 只能用于挖掘单维的布尔关联规则

数据挖掘——关联规则算法之FP-tree相关推荐

  1. FP Tree算法原理

    作为一个挖掘频繁项集的算法,Apriori算法需要多次扫描数据,I/O是很大的瓶颈.为了解决这个问题,FP Tree算法(也称FP Growth算法)采用了一些技巧,无论多少数据,只需要扫描两次数据集 ...

  2. fp算法例题_FP Tree算法原理总结

    在Apriori算法原理总结中,我们对Apriori算法的原理做了总结.作为一个挖掘频繁项集的算法,Apriori算法需要多次扫描数据,I/O是很大的瓶颈.为了解决这个问题,FP Tree算法(也称F ...

  3. 数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用

    本文简单介绍传统数据挖掘关联规则算法中的Apriori算法,以及在挖掘中医医案辨证规律中的应用.并简单分析传统算法缺点,提出简要的改进思路. 文章目录 一.关联规则简介 二.Apriori算法简介 三 ...

  4. 关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)

    基于关联规则的推荐有三种方法:Apriori关联规则算法FP Tree关联规则算法:PrefixSpan关联规则算法: 关联规则挖掘推荐算法: 关联规则挖掘是一种在大规模交易中识别类似规则关系模式的通 ...

  5. 数据挖掘实验报告-关联规则算法实验

    [摘要] 计算机技术和通信技术的迅猛发展将人类社会带入到了信息时代.在最近十几年里,数据库中存储的数据急剧增大.例如,NASA轨道卫星上的地球观测系统EOS每小时会向地面发回50GB的图像数据:世界上 ...

  6. [数据挖掘] 关联规则 Apriori算法实现到PFP(paralled frequent pattern)算法

    数据挖掘--关联规则与Apriori算法 1. 关联分析(Association analysis) 理解: 2. 相关概念 3. Apriori算法查找频繁项集 3.1 Apriori算法的原理: ...

  7. FP Tree算法原理总结(转)

    FP Tree算法原理总结 转自: https://www.cnblogs.com/zhengxingpeng/p/6679280.html 总结得太好了. FP Tree算法原理总结 在Aprior ...

  8. 用Spark学习FP Tree算法和PrefixSpan算法

    在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法.由于scikit-l ...

  9. 基于.NET实现数据挖掘--关联规则分析算法

    本篇继续我们的微软挖掘算法系列总结,前几篇我们分别介绍了:Microsoft决策树分析算法.Microsoft聚类分析算法.Microsoft Naive Bayes 算法.Microsoft 时序算 ...

最新文章

  1. 迁移学习与图神经网络“合力”模型:用DoT-GNN克服组重识别难题
  2. php mysql 简单聊天室_聊天室phpmysql(一)
  3. Python入门100题 | 第072题
  4. 读文件并返回其中最大最小行的shell脚本
  5. BZOJ.1023.[SHOI2008]cactus仙人掌图(DP)
  6. 微信小程序云开发入门详细教程
  7. winrar压缩软件弹出广告解决办法
  8. Cocos2d-x 3.x基础学习: 拖尾渐隐效果MotionStreak
  9. 7 Android的VM虚拟机是哪个,Android的VM虚拟机是哪个?
  10. 48搜索相关参数梳理以及bouncing results问题解决方案
  11. 从零点亮一个led灯
  12. oracle系统报表开发工具,掌握七款实用报表开发工具,定制属于自己的报表
  13. 【模拟电路】常用的DC-DC电源电路图
  14. 学习笔记:计算excel中的平均值并去除0值
  15. UIPATH 调用第三方接口(百度OCR文字识别举例)
  16. nginx+https+自签名+各种云dns解析+浏览器安全可用include相对路径和绝对路径
  17. 试试程序员专用字体CascadiaCode支持连字体
  18. java面试题,看我这篇就够了,前端后台应有尽有,包你通过面试
  19. Qt 垂直布局 (QVBoxLayout)
  20. 使用Docker部署HBase并使用Java-API连接

热门文章

  1. linux 7退出单用户模式,CentOS 7 进入单用户模式图文详解+++++重置密码
  2. 【调剂】浙江中医药大学2022年硕士研究生调剂办法
  3. IO多路复用机制详解
  4. idea使用GitHub踩过的坑——Invalid authentication data.404 Not Found-Not Found
  5. 河工大氮化硼材料研究中心北航集成计算材料科学中心,CEJ:打破MXenes电催化CO2还原中的线性关系以实现高效制CH4
  6. php token过期,前后端分离项目,token过期,重新登录和刷新token的问题
  7. log4j2配置说明
  8. 小米8探索版android版本,小米 8 透明探索版,首款 Android Face ID 手機,支援螢幕下指紋辨識...
  9. OPPO A59st怎么刷机 OPPO A59st的刷机教程 OPPO A59st完美解除账号锁
  10. unity spine 动画