关联规则挖掘(二)

目录

    • 三、FP-增长算法
      • (一)算法的背景
      • (二)构造FP-树
      • (三)生成频繁项集
    • 四、关联规则的评价
      • (一)支持度和置信度的不足
      • (二)相关性分析


三、FP-增长算法

(一)算法的背景

Apriori算法存在以下两方面的不足:

(1)产生大量的候选项集

  例如,当事务数据库有104个频繁1-项集时, Apriori算法就需要产生多达107个候选2-项集,即对存储空间要求会影响算法的执行效率。

(2)多次重复地扫描事务数据库

  对每个 k = 1 , 2 , ⋯ , m k=1,2,\cdots,m k=1,2,,m,为了计算候选k-项集的支持度,都需要扫描一次事务数据库,才能确定候选k-项集的支持度,其计算时间开销很大。

用 FP-增长 (Frequent-Pattern Growth,FP-Growth) 算法来发现频繁项集。算法只需扫描事务数据库两次,其计算过程主要由以下两步构成。

(1)构造FP-树

  将事务数据库压缩到一棵频繁模式树 (Frequent-Pattern Tree,简记为FP-树) 之中,并让该树保留每个项的支持数和关联信息。

(2)生成频繁项集

  由FP-树逐步生成关于项集的条件树,并根据条件树生成频繁项集。

(二)构造FP-树

  FP-树是事务数据库的一种压缩表示方法。它通过逐个读入事务,并把每个事务映射为FP-树中的一条路径,且路径中的每个结点对应该事务中的一个项。不同的事务如果有若干个相同的项,则它们在FP-树中用重叠的路径表示,用结点旁的数字标明该项的重复次数,作为项的支持数。因此,路径相互重叠越多,使用FP-树结构表示事务数据库的压缩效果就越好。如果FP-树足够小且能够在内存中存储,则可以从这个内存的树结构中直接提取频繁项集,而不必再重复地扫描存放在硬盘上的事务数据库。

  某超市经营 a , b , c , d , e a,b,c,d,e a,b,c,d,e 等5种商品,即超市的项集 I = { a , b , c , d , e } I=\{a,b,c,d,e\} I={a,b,c,d,e},而表8-8是其交易数据库 T T T

在这里插入图片描述
下面借用这个事务数据库来介绍FP-树的构造方法,这里假设最小支持数 M i n S = 2 MinS=2 MinS=2

FP-树的构造主要由以下两步构成。

(1)生成事务数据库的头表 H H H

  第一次扫描事务数据库 T T T,确定每个项的支持数,将频繁项按照支持数递减排序,并删除非频繁项,得到 T T T 的频繁-1项集 H = { i v : S p t N v ∣ i v ∈ I , S p t N v 为项目 i v 的支持数 } H=\{i_v:SptN_v | i_v\in I, SptN_v为项目i_v的支持数\} H={iv:SptNvivI,SptNv为项目iv的支持数}。现有文献都将 H H H 称为事务数据库的头表 (Head table)。

  对于表8-8的事务数据库 T T T,其头表 H = { ( a : 8 ) , ( b : 7 ) , ( c : 6 ) , ( d : 5 ) , ( e : 3 ) } H=\{(a:8),(b:7),(c:6),(d:5),(e:3)\} H={(a:8),(b:7),(c:6),(d:5),(e:3)},即 T T T 中的每个项都是频繁的。

(2)生成事务数据库的FP-树

  第二次扫描数据集 T T T,读出每个事务并构建根结点为null的FP-树。

  开始时FP-树仅有一个结点null,然后依次读入 T T T 的第 r r r 个事务 t r ( r = 1 , 2 , ⋯ , ∣ T ∣ ) t_r (r=1,2,\cdots,|T|) tr(r=1,2,,T)。设 t r t_r tr 已删除了非频繁项,且已按照头表 H H H 递减排序为 { a 1 , a 2 , ⋯ , a i r } \{a_1,a_2,\cdots,a_{i_{r}}\} {a1,a2,,air},则生成一条路径 t r = n u l l − a 1 − a 2 − , ⋯ , − a i r t_r=null-a_1-a_2-,\cdots,-a_{i_{r}} tr=nulla1a2,,air,并按以下方式之一,将其添加到FP-树中,直到所有事务处理完备。

① 如果FP-树与路径 t r t_r tr 没有共同的前缀路径 (prefix path),即它们没有从null开始,其余结点完全相同的一段子路径,则将 t r t_r tr 直接添加到FP-树的null结点上,形成一条新路径,且让 t r t_r tr 中的每个项对应一个结点,并用 a v : 1 a_v:1 av:1 表示。

例 8-6 假设FP-树中已有两条路径 null-a-b 和 null-c-d-e (图8-4(1))。设有事务 t = { b , c , d } t=\{b,c,d\} t={b,c,d},其对应的路径为 t = n u l l − b − c − d t=null-b-c-d t=nullbcd (事务和对应的路径采用同一个符号 t t t )。因为FP-树与 t t t 没有共同的前缀路径,即从null开始没有相同的结点,因此,将t直接添加到FP-树中(图8-4(2))。

在这里插入图片描述
② 如果FP-树中存在从根结点开始与 t r t_r tr 完全相同的路径,即FP-树中存在从null到 a 1 a_1 a1 直到的路径,则将FP-树中该路径上从 a 1 a_1 a1 到的每个结点支持数增加1即可。

例 8-7 假设FP-树中已有两条路径 null-a-b-c 和 null-b-c-d (图8-5(1))。设有事务 t = { a , b } t=\{a,b\} t={a,b},其路径为 t = n u l l − a − b t=null-a-b t=nullab,则因为FP-树从根节点 null 开始存在与 null-a-b 完全相同的路径,因此,将结点 a , b a,b a,b 的支持数分别增加1即可(图8-5(2))。

在这里插入图片描述
③ 如果FP-树与路径 t r t_r tr 有相同的前缀路径,即FP-树已有从null到 a 1 a_1 a1 直到 a j a_j aj 的路径,则将FP-树的结点 a 1 a_1 a1 a j a_j aj 的支持数增加1,并将 t r t_r tr a j + 1 a_{j+1} aj+1 开始的子路径放在 a j a_j aj 之后生成新的路径。

例 8-8 假设FP-树中已有两条路径 null-a-b 和 null-b-c-d (图8-6(1))。设有事务 t = { b , c , e } t=\{b,c,e\} t={b,c,e},其对应的路径为 t = n u l l − b − c − e t=null-b-c-e t=nullbce,则因为FP-树与 t t t 存在共同的前缀路径 null-b-c,因此,将结点 b , c b,c b,c 的支持数直接增加1,并在结点 c c c 后面增加结点 e e e (图8-6(2))。

在这里插入图片描述
例 8-9 对表8-8所示的事务数据库 T T T,假设最小支持数 M i n S = 2 MinS=2 MinS=2,试构造它的FP-树。

在这里插入图片描述

在这里插入图片描述

(三)生成频繁项集

  由于每一个事务都被映射为FP-树中的一条路径,且结点代表项和项的支持数,因此通过直接考察包含特定结点 (例如e) 的路径,就可以发现以特定结点 (比如e) 结尾的频繁项集。

  由FP-树生成频繁项集的算法以自底向上的方式搜索FP-树,并产生指定项集的条件树,再利用条件树生成频繁项集。

  对于图8-8所示的FP-树,算法从头表 H = { ( a : 8 ) , ( b : 7 ) , ( c : 6 ) , ( d : 5 ) , ( e : 3 ) } H=\{(a:8),(b:7),(c:6),(d:5),(e:3)\} H={(a:8),(b:7),(c:6),(d:5),(e:3)} 的最后,即支持数最小的项开始,依次选择一个项并构造该项的条件FP-树 (condition FP-tree),即首先生成以 e e e 结尾的前缀路径,更新其结点的支持数后获得 e e e 的条件FP-树,并由此生成频繁项集 { e } \{e\} {e}

在这里插入图片描述
  在 { e } \{e\} {e} 频繁的条件下,需要进一步发现以 d e 、 c e 、 b e de、ce、be decebe a e ae ae 结尾的频繁项集等子问题,直至获得以 e e e 结尾的所有频繁项集,即包括 e e e 的所有频繁项集。

  观察头表 H H H 可知,包括 e e e 的项集共有 { e } \{e\} {e}, { d , e } \{d,e\} {d,e}, { c , e } \{c,e\} {c,e}, { b , e } \{b,e\} {b,e}, { a , e } \{a,e\} {a,e}, { c , d , e } \{c,d,e\} {c,d,e}, { b , d , e } \{b,d,e\} {b,d,e}, { b , c , e } \{b,c,e\} {b,c,e}, { a , d , e } \{a,d,e\} {a,d,e}, { a , c , e } \{a,c,e\} {a,c,e}, { a , b , e } \{a,b,e\} {a,b,e}, { a , c , d , e } \{a,c,d,e\} {a,c,d,e} 等。在 e e e 的条件FP-树产生过程中,算法会不断地删除非频繁项集保留频繁项集,而不是枚举地检验以上每个项集是否为频繁的,因而提高了搜索效率。从 d e de de 的条件FP-树可得以 d e de de 结尾的频繁项集 { a , d , e } , { d , e } \{a,d,e\}, \{d,e\} {a,d,e},{d,e}

  当包括 e e e 的所有频繁项集生成以后,接下来再按照头表 H H H,并依次寻找包括 d , c , b d, c, b d,c,b a a a 的所有频繁项集,即依次构造以 d , c , b d, c, b d,c,b a a a 结尾的前缀路径和条件FP-树,并获得以它们结尾的所有频繁项集。

在这里插入图片描述
根据与前面类似的计算过程,最终可得事务数据库 T T T 的所有频繁项集 (表8-9)。

在这里插入图片描述

四、关联规则的评价

1、主观标准

  以决策者的主观知识或领域专家的先验知识等建立的评价标准,称为主观兴趣度。关联规则 {黄油} ⇒ \Rightarrow {面包} 有很高的支持度和置信度,但是它表示的联系连超市普通员工都觉得显而易见,因此不是有趣的。关联规则 {尿布} ⇒ \Rightarrow {啤酒} 确实是有趣的,因为这种联系十分出人意料,并且可能为零售商提供新的交叉销售机会。

2、客观标准

  以统计理论为依据建立的客观评价标准,称为客观兴趣度。客观兴趣度以数据本身推导出的统计量来确定规则是否是有趣的。支持度,置信度,提升度等都是客观兴趣度,也就是客观标准。

(一)支持度和置信度的不足

  为了说明支持度和置信度在关联规则检测中存在的不足,可用基于2个项集 A A A B B B(也称二元变量 A A A B B B)的相依表来计算说明 (表8-10)。

在这里插入图片描述
  表8-10中的记号 A ‾ \overline A A 表示项集 A A A 没有在事务中出现, n i j n_{ij} nij 为支持数,即 n 11 n_{11} n11 表示同时包含项集 A A A B B B 的事务个数; n 01 n_{01} n01 表示包含 B B B 但不包含 A A A 的事务个数; n 10 n_{10} n10 表示包含 A A A 但不包含 B B B 的事务个数; n 00 n_{00} n00 表示既不包含 A A A 也不包含 B B B 的事务个数; n 1 + n_{1+} n1+ 表示 A A A 的支持数, n + 1 n_{+1} n+1 表示 B B B 的支持数,而 N N N 为事务数据库的事务总数。

例 8-10 一个误导的“强”关联规则。
M i n S = 0.3 MinS=0.3 MinS=0.3 M i n C = 0.60 MinC=0.60 MinC=0.60,则 S u p p o r t ( A ⇒ B ) = 4000 / 10000 = 0.4 > M i n S Support(A\Rightarrow B)=4000/10000=0.4>MinS Support(AB)=4000/10000=0.4>MinS C o n f i d e n c e ( A ⇒ B ) = 4000 / 6000 = 0.66 > M i n S Confidence(A\Rightarrow B)=4000/6000=0.66>MinS Confidence(AB)=4000/6000=0.66>MinS 得出 A ⇒ B A\Rightarrow B AB 是一个强关联规则的结论。

在这里插入图片描述
  实际上, A ⇒ B A\Rightarrow B AB 这个强关联规则却是一个虚假的规则,如果商家使用这个规则将是一个错误,因为购买录像的概率是75%比66%高。

  此外,计算机游戏和录像机是负相关的,因为买其中一种商品实际上降低了买另一种商品的可能性。如果不能完全理解这种现象,容易根据规则 A ⇒ B A\Rightarrow B AB 做出不明智的商业决策。

(二)相关性分析

  提升度 (Lift) 是一种简单的相关性度量。对于项集 A A A B B B,如果概 P ( A ∪ B ) = P ( A ) P ( B ) P(A\cup B)=P(A)P(B) P(AB)=P(A)P(B),则 A A A B B B 是相互独立的,否则它们就存在某种依赖关系。
L i f t ( A , B ) = P ( A ∪ B ) / ( P ( A ) × P ( B ) ) = ( P ( A ∪ B ) / P ( A ) ) / P ( B ) (8-6) Lift(A,B)=P(A\cup B)/(P(A)\times P(B))= (P(A\cup B)/P(A))/P(B)\tag{8-6} Lift(A,B)=P(AB)/(P(A)×P(B))=(P(AB)/P(A))/P(B)(8-6) L i f t ( A , B ) = C o n f i d e n c e ( A ⇒ B ) / S u p p o r t ( B ) (8-7) Lift(A,B)=Confidence(A\Rightarrow B)/Support(B)\tag{8-7} Lift(A,B)=Confidence(AB)/Support(B)(8-7) 如果 L i f t ( A , B ) Lift(A,B) Lift(A,B) 的值大于1,表示二者存在正相关,而小于1表示二者存在负相关。若其值等于1,则表示二者没有任何相关性。

对于二元变量,提升度等价于被称为兴趣因子 (Interest factor) 的客观度量,其定义如下 L i f t ( A , B ) = I ( A , B ) = S u p p o r t ( A ∪ B ) / ( S u p p o r t ( A ) × S u p p o r t ( B ) ) Lift(A,B)= I(A,B)=Support(A\cup B)/(Support(A)\times Support(B)) Lift(A,B)=I(A,B)=Support(AB)/(Support(A)×Support(B)) = N × n 11 / ( n 1 + × n + 1 ) (8-8) =N\times n_{11}/(n_{1+}\times n_{+1})\tag{8-8} =N×n11/(n1+×n+1)(8-8)

例 8-11 对于表8-11所示的相依表,试计算其提升度或兴趣因子。

P ( A ∪ B ) = 4000 / 100000 = 0.4 P(A\cup B)=4000/100000=0.4 P(AB)=4000/100000=0.4 P ( A ) = 6000 / 1000 = 0.6 P(A)=6000/1000=0.6 P(A)=6000/1000=0.6 P ( B ) = 7500 / 10000 = 0.75 P(B)=7500/10000=0.75 P(B)=7500/10000=0.75

L i f t ( A , B ) = P ( A ∪ B ) / ( P ( A ) × P ( B ) ) = 0.4 / ( 0.6 × 0.75 ) = 0.4 / 0.45 = 0.89 Lift(A,B)= P(A\cup B)/(P(A)\times P(B))=0.4/(0.6\times0.75)=0.4/0.45=0.89 Lift(A,B)=P(AB)/(P(A)×P(B))=0.4/(0.6×0.75)=0.4/0.45=0.89

关联规则 A ⇒ B A\Rightarrow B AB,也就是 {计算机游戏} ⇒ \Rightarrow {录像机} 的提升度 Lift(A,B) 小于1,即前件 A A A 与后件 B B B 存在负相关关系,若推广 “计算机游戏” 不但不会提升 “录像机” 的购买人数,反而会减少。

项集之间的相关性也可以用相关系数来度量。对于二元变量 A A A B B B,相关系数 r r r 定义为 r ( A , B ) = n 11 × n 00 − n 01 × n 10 n + 1 × n 1 + × n 0 + × n + 0 (8-9) r(A,B)=\frac{n_{11}\times n_{00}-n_{01}\times n_{10}}{\sqrt{n_{+1}\times n_{1+}\times n_{0+}\times n_{+0}}}\tag{8-9} r(A,B)=n+1×n1+×n0+×n+0 n11×n00n01×n10(8-9) 若相关系数 r r r 等于0,表示二者不相关,大于0表示正相关,小于0表示负相关。

例 8-12 对例8-10的表8-11所示的相依表,试计算相关因子。

:相关系数 r r r 的分子等于 4000 × 500 − 3500 × 2000 = 2000000 − 7000000 = − 5000000 4000×500-3500×2000=2000000-7000000=-5000000 4000×5003500×2000=20000007000000=5000000,故相关系数 r r r 小于0,故购买 “计算机游戏” 与购买 “录像机” 两个事件是负相关的。

此外,相关性还可以用余弦值来度量,即 r c o s ( A , B ) = p ( A ∪ B ) p ( A ) × p ( B ) = S u p p o r t ( A ∪ B ) S u p p o r t ( A ) × S u p p o r t ( B ) (8-10) r_{cos}(A,B)=\frac{p(A\cup B)}{\sqrt{p(A)×p(B)}}=\frac{Support(A\cup B)}{\sqrt{Support(A)×Support(B)}}\tag{8-10} rcos(A,B)=p(A)×p(B) p(AB)=Support(A)×Support(B) Support(AB)(8-10)

相关性度量可以提高关联规则的可用性,但仍然存在局限性,还需要研究,并引入其它客观度量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 发布,部署和运行应用程序

.NET应用发布 发布.Net应用有很多种方式,下面列举三种发布方式: 单文件发布跨平台发布Docker发布 单文件发布 右键工程,选择“发布”,部署模式选择“独立”,目标运行时选择自己想要部署到的系统,我这里用…

问题:react函数中的state是上一次的值

场景 有一个聊天输入框组件,输入框上面有表情包组件。 通过redux创建了store,存储一个message的状态,用于表情包和输入框共享状态。 输入框通过设置value和onClick做了一个简单双向绑定,其中value的值为store里的message。 impor…

【Java框架】Spring框架(三)——Spring整合Mybatis及Spring声明式事务

目录 回顾Mybatis和新对象思路整理 Spring和MyBatis的整合步骤1. 创建Web工程,导入Spring和MyBatis的相关依赖2. 建立开发目录结构,创建实体类3. 创建数据访问接口和SQL映射语句文件4. 使用Spring配置文件配置数据源4.1 database.properties4.2spring配置…

全国产化无风扇嵌入式车载电脑在救护车远端诊断的行业应用

救护车远端诊断的行业应用 背景介绍 更加快速的为急症病人在第一时间开始进行诊断和治疗,是提高病人救助成功率的关键。因此,先进的救护系统正在思考,如何在病人进入救护车之后,立刻能够将救护车中各种检查仪器的信息快速的传回医院&#xf…

aws云靶场和一些杂记

aws靶场 在AWS靶场中,存在三个安全问题:1) 一个S3存储桶政策配置错误,允许公共访问,通过访问特定域名可获取flag。2) SQS消息队列的政策没有限制角色,允许发送和接收消息,通过aws sqs命令行工具的receive-…

JS-42-Node.js01-Node.js介绍

一、浏览器大战 众所周知,在Netscape设计出JavaScript后的短短几个月,JavaScript事实上已经是前端开发的唯一标准。 后来,微软通过IE击败了Netscape后一统桌面,结果几年时间,浏览器毫无进步。(2001年推出…

C++面向对象程序设计-北京大学-郭炜【课程笔记(七)】

C面向对象程序设计-北京大学-郭炜【课程笔记(七)】 1、类型转换运算符2、自增、自减运算符的重载3、继承和派生的基本概念3.1、基本概念3.2、派生类对象的内存空间 4、继承关系和复合关系4.1、继承关系的使用4.2、复合关系的使用 5、派生类覆盖基类成员6…

《论文阅读》基于情感原因感知的共情对话生成模型 2023 AAAI

《论文阅读》基于情感原因感知的共情对话生成模型 2023 AAAI 前言简介模型构架情绪推理器回复生成器实验结果前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《The Empathic Dialogue Generation Model…

npm ERR! code CERT_HAS_EXPIRED (创建vue过程)

npm ERR! code CERT_HAS_EXPIRED (创建vue过程) 起因:卸载 npm uninstall -g vue-cli时候发现报这个错误。 当我们创建vue之前,使用npm更新或者安装啥的时,出现此类提示,则表明,用来验证和网络加…

java读取Excel表格数据

java读取Excel表格数据 环境说明项目结构1.controller层2.service层实现层StudentModel.java类 使用的Maven依赖效果示例一效果示例二文档截图第一页第二页 postman请求说明其他说明 环境说明 jdk1.8,springboot2.5.3 项目结构 1.controller层 package com.exam…

Taro-vue微信小程序用户隐私保护

Taro-vue微信小程序用户隐私保护 一、在 微信公众平台的【设置】- 【服务内容与声明】 ,设置用户隐私保护指引,添加项目需要的接口权限。 【用户隐私保护指引】提交之后,官方会进行审核。审核通过之后,对应的接口权限才会生效。 …

区块链安全应用----压力测试

通过Caliper进行压力测试程序 1.环境配置 第一步. 配置基本环境 部署Caliper的计算机需要有外网权限;操作系统版本需要满足以下要求:Ubuntu > 16.04、CentOS > 7或MacOS > 10.14;部署Caliper的计算机需要安装有以下软件&#xff…

【C语言回顾】函数

前言1. 函数的概念和分类2.库函数3. 自定义函数3.1 自定义函数的简单介绍3.2 自定义函数举例 4. 形参和实参4.1 形参4.2 实参4.3 形参和实参的关系4.3.1 理解4.3.2 举例代码和调试 5. 嵌套函数和链式访问5.1 嵌套函数5.2 链式访问 6. 函数的声明和定义6.1 单个文件6.2 多个文件…

ChatGPT在遥感领域中的应用

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用,人工智…

中文编程入门(Lua5.4.6中文版)第十三章 Lua 文件操作

在《Lua世界》的冒险旅途中,勇士们时常需要与神秘的文本卷轴打交道。为了更好地掌握这些知识宝藏,Lua I/O库提供了两种强大的探索模式:简单模式和完全模式,助你轻松应对各类文献挑战。 简单模式:初识卷轴 简单模式如…

C# aspose word实现模板方式打印及打印速度慢解决方法

1.引用dll nuget或者网上都有下载的方式。不过都要收费。下载地址:https://files.cnblogs.com/files/rolayblog/Tool.zip?t1713322422&downloadtrue 2.打印模板设计 新建一个doc文档,根据自己的需求画页面。 A、普通文本 在word中需要替换值的地方添…

《2024最新Java面试题及答案(带完整目录)》

获取链接:《2024最新Java面试题及答案(带完整目录)》 更多技术书籍:技术书籍分享,前端、后端、大数据、AI、人工智能... ​ ​ ​ 4.1.9.8. 可重入锁(递归锁) ...........................…

Oracle11.2.0.1,(CVE-2012-1675)漏洞解决方案

1.进入容器停止监听 docker exec -it -u 0 oracle11g bash su - oracle lsnrctl stop listener2.找到监听配置文件位置,修改监听文件 echo $ORACLE_HOMEvi network/admin/listener.ora #在文件底部添加 SECURE_REGISTER_LISTENER (IPC) #启动监听 lsnrctl start …

基于springboot+vue+Mysql的汽车租赁系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

idea运行报错:启动命令过长

JAVA项目,运行的时候报错 Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun老问题了,记录一下 解决办法: 1、Edit Configurations 2、点击Modify options设置,勾选S…