数据挖掘——关联规则算法之FP-tree
数据挖掘——关联规则算法之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相关推荐
- FP Tree算法原理
作为一个挖掘频繁项集的算法,Apriori算法需要多次扫描数据,I/O是很大的瓶颈.为了解决这个问题,FP Tree算法(也称FP Growth算法)采用了一些技巧,无论多少数据,只需要扫描两次数据集 ...
- fp算法例题_FP Tree算法原理总结
在Apriori算法原理总结中,我们对Apriori算法的原理做了总结.作为一个挖掘频繁项集的算法,Apriori算法需要多次扫描数据,I/O是很大的瓶颈.为了解决这个问题,FP Tree算法(也称F ...
- 数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用
本文简单介绍传统数据挖掘关联规则算法中的Apriori算法,以及在挖掘中医医案辨证规律中的应用.并简单分析传统算法缺点,提出简要的改进思路. 文章目录 一.关联规则简介 二.Apriori算法简介 三 ...
- 关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)
基于关联规则的推荐有三种方法:Apriori关联规则算法FP Tree关联规则算法:PrefixSpan关联规则算法: 关联规则挖掘推荐算法: 关联规则挖掘是一种在大规模交易中识别类似规则关系模式的通 ...
- 数据挖掘实验报告-关联规则算法实验
[摘要] 计算机技术和通信技术的迅猛发展将人类社会带入到了信息时代.在最近十几年里,数据库中存储的数据急剧增大.例如,NASA轨道卫星上的地球观测系统EOS每小时会向地面发回50GB的图像数据:世界上 ...
- [数据挖掘] 关联规则 Apriori算法实现到PFP(paralled frequent pattern)算法
数据挖掘--关联规则与Apriori算法 1. 关联分析(Association analysis) 理解: 2. 相关概念 3. Apriori算法查找频繁项集 3.1 Apriori算法的原理: ...
- FP Tree算法原理总结(转)
FP Tree算法原理总结 转自: https://www.cnblogs.com/zhengxingpeng/p/6679280.html 总结得太好了. FP Tree算法原理总结 在Aprior ...
- 用Spark学习FP Tree算法和PrefixSpan算法
在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法.由于scikit-l ...
- 基于.NET实现数据挖掘--关联规则分析算法
本篇继续我们的微软挖掘算法系列总结,前几篇我们分别介绍了:Microsoft决策树分析算法.Microsoft聚类分析算法.Microsoft Naive Bayes 算法.Microsoft 时序算 ...
最新文章
- 迁移学习与图神经网络“合力”模型:用DoT-GNN克服组重识别难题
- php mysql 简单聊天室_聊天室phpmysql(一)
- Python入门100题 | 第072题
- 读文件并返回其中最大最小行的shell脚本
- BZOJ.1023.[SHOI2008]cactus仙人掌图(DP)
- 微信小程序云开发入门详细教程
- winrar压缩软件弹出广告解决办法
- Cocos2d-x 3.x基础学习: 拖尾渐隐效果MotionStreak
- 7 Android的VM虚拟机是哪个,Android的VM虚拟机是哪个?
- 48搜索相关参数梳理以及bouncing results问题解决方案
- 从零点亮一个led灯
- oracle系统报表开发工具,掌握七款实用报表开发工具,定制属于自己的报表
- 【模拟电路】常用的DC-DC电源电路图
- 学习笔记:计算excel中的平均值并去除0值
- UIPATH 调用第三方接口(百度OCR文字识别举例)
- nginx+https+自签名+各种云dns解析+浏览器安全可用include相对路径和绝对路径
- 试试程序员专用字体CascadiaCode支持连字体
- java面试题,看我这篇就够了,前端后台应有尽有,包你通过面试
- Qt 垂直布局 (QVBoxLayout)
- 使用Docker部署HBase并使用Java-API连接
热门文章
- linux 7退出单用户模式,CentOS 7 进入单用户模式图文详解+++++重置密码
- 【调剂】浙江中医药大学2022年硕士研究生调剂办法
- IO多路复用机制详解
- idea使用GitHub踩过的坑——Invalid authentication data.404 Not Found-Not Found
- 河工大氮化硼材料研究中心北航集成计算材料科学中心,CEJ:打破MXenes电催化CO2还原中的线性关系以实现高效制CH4
- php token过期,前后端分离项目,token过期,重新登录和刷新token的问题
- log4j2配置说明
- 小米8探索版android版本,小米 8 透明探索版,首款 Android Face ID 手機,支援螢幕下指紋辨識...
- OPPO A59st怎么刷机 OPPO A59st的刷机教程 OPPO A59st完美解除账号锁
- unity spine 动画