关联规则挖掘(一)

目录

    • 一、关联规则的概念
      • (一)基本概念
      • (二)项集的性质
    • 二、关联规则的Apriori算法
      • (一)发现频繁项集
      • (二)产生关联规则


一、关联规则的概念

(一)基本概念

  事务数据库(Transaction Database) T = { t 1 , t 2 , … , t n } T=\{t_1,t_2,…,t_n\} T={t1,t2,,tn},也称为交易数据库中的关联规则挖掘问题可描述如下:

  设 I = { i 1 , i 2 , … , i m } I=\{i_1,i_2,…,i_m\} I={i1,i2,,im} 为一个项目集合 (Set of Items, 项集),其中 i 1 , i 2 , … , i m i_1,i_2,…,i_m i1,i2,,im 称为项目 (item, 项)。在超市的交易数据仓库中,每个项ik代表一种商品的编号或名称,为计算方便假设 I I I 中的项已按字典序排序。

   T T T 中的每个事务 t j t_j tj 都是I的一个子集,即 t j ⊆ I ( j = 1 , 2 , … , n ) t_j \subseteq I (j=1,2,…,n) tjI(j=1,2,,n)。 在超市等交易数据仓库中, t j t_j tj 就代表某个顾客一次购买的所有商品编号或商品名称。

例 8-1 对表8-1所示的交易数据库记录,请给出项集和其中的事务。

在这里插入图片描述
:交易数据库涉及 a , b , c , d a,b,c,d a,b,c,d 等4个项,即项集 I = { a , b , c , d } I=\{a,b,c,d\} I={a,b,c,d} 且其中的项已经按字典序排序。每一个项就代表一种商品,比如 a a a 可表示面包, b b b 表示牛奶等。交易数据库可表示为 T = { t 1 , t 2 , t 3 } T=\{t_1, t_2, t_3\} T={t1,t2,t3},其中 t 1 = { a , b } t_1=\{a, b\} t1={a,b} t 2 = { b , c , d } t_2=\{b, c, d\} t2={b,c,d} t 3 = { b , d } t_3=\{b, d\} t3={b,d},且它们都是项集 I I I 的子集,且按照字典序排序。

定义 8-1 X ⊆ I X\subseteq I XI k = ∣ X ∣ k=|X| k=X,则称 X X X 为 k-项集,将包含 X X X 的事务数 S p t N ( X ) = ∣ t ∣ X ⊆ t ∈ T ∣ SptN(X)=|{ t | X\subseteq t\in T}| SptN(X)=tXtT 称为 X X X 在事务数据库 T T T 上的支持数,并将 S p t N ( X ) SptN(X) SptN(X) ∣ T ∣ |T| T 的比值称为 X X X T T T 上的支持度 (Support),记作 S u p p o r t ( X ) = ∣ { t ∣ X ⊆ t ∈ T } ∣ / ∣ T ∣ (8-1) Support(X)=|\{ t | X\subseteq t\in T\}| / | T | \tag{8-1} Support(X)={tXtT}∣/∣T(8-1) 显然,一个 k-项集 X X X 的支持度 S u p p o r t ( X ) ∈ [ 0 , 1 ] Support (X)\in [0,1] Support(X)[0,1]

对于例8-1所示的交易数据库 T T T,设有项集 X = { b , d } X=\{b,d\} X={b,d},则 S p t N ( X ) = 2 SptN(X)=2 SptN(X)=2 S u p p o r t ( X ) = 2 / 3 Support (X)=2/3 Support(X)=2/3

定义 8-2 若指定 M i n S ∈ ( 0 , 1 ) MinS\in(0,1) MinS(0,1) 作为刻画支持度是否符合用户期望的阈值,则 M i n S MinS MinS 称为最小支持度,并将 M i n S p t N = M i n S × ∣ T ∣ MinSptN=MinS\times|T| MinSptN=MinS×T 称为最小支持数,即 M i n S p t N MinSptN MinSptN 是最小支持度 M i n S MinS MinS 与事务数据库记录数的乘积。

定义 8-3 X ⊆ I X\subseteq I XI Y ⊆ I Y\subseteq I YI X ∩ Y = ϕ X\cap Y=\phi XY=ϕ,称形如 X ⇒ Y X\Rightarrow Y XY 的蕴涵式为关联规则 (Association Rule),其中 X X X Y Y Y 分别称为关联规则的先导 (Antecedent) 和后继 (Consequent)。

定义 8-4 X ⊆ I X\subseteq I XI Y ⊆ I Y\subseteq I YI X ∩ Y = ϕ X\cap Y=\phi XY=ϕ,令 Z = X ∪ Y Z=X\cup Y Z=XY,则称 S u p p o r t ( Z ) Support(Z) Support(Z) 为关联规则 X ⇒ Y X\Rightarrow Y XY 的支持度,记作 S u p p o r t ( X ⇒ Y ) Support (X\Rightarrow Y) Support(XY)

  从定义8-1和8-4可知,关联规则 X ⇒ Y X\Rightarrow Y XY 在事务数据库 T T T 上的支持度,就是 T T T 中同时包含 X X X Y Y Y 的事务在 T T T 中所占的百分比,即: S u p p o r t ( X ⇒ Y ) = 包含 X ∩ Y 的事务数 / ∣ T ∣ (8-2) Support (X\Rightarrow Y)=包含X\cap Y的事务数/ |T|\tag{8-2} Support(XY)=包含XY的事务数/∣T(8-2) 对于例8-1的交易数据库 T T T,若令 X = { b , c } , Y = { d } X=\{b,c\},Y=\{d\} X={b,c},Y={d},则
S u p p o r t ( X ⇒ Y ) = S u p p o r t ( { b , c } ⇒ { d } ) = S u p p o r t ( b , c , d ) = 1 / 3 Support (X\Rightarrow Y)= Support (\{b,c\} \Rightarrow \{d\})=Support (b,c,d)=1/3 Support(XY)=Support({b,c}{d})=Support(b,c,d)=1/3 由此可知,在购物篮分析中, X ⇒ Y X\Rightarrow Y XY 的支持度也可以表示为 S u p p o r t ( X ⇒ Y ) = 同时购买商品 X 和 Y 的交易数 总交易数 (8-3) Support (X\Rightarrow Y)=\frac{同时购买商品X和Y的交易数}{总交易数}\tag{8-3} Support(XY)=总交易数同时购买商品XY的交易数(8-3)

定义 8-5 X ⊆ I X\subseteq I XI 和给定的最小支持度 M i n S MinS MinS,若 S u p p o r t ( X ) ≥ M i n S Support(X)\geq MinS Support(X)MinS,则称 X X X 为频繁项集 (Frequent Item Sets)。若 k = ∣ X ∣ k=|X| k=X,则称 X X X 为频繁 k-项集。

对例8-1交易数据库 T T T,若最小支持度 M i n S = 0.6 MinS=0.6 MinS=0.6,对项集 X = { b , d } X=\{b,d\} X={b,d},因为 S u p p o r t ( X ) = 2 / 3 ≥ 0.6 Support (X)=2/3\geq 0.6 Support(X)=2/30.6, 即 X = { b , d } X=\{b, d\} X={b,d} 是个频繁项集,且是频繁2-项集。

定义 8-6 X 1 , X 2 , ⋯ , X r X_1,X_2,\cdots,X_r X1,X2,,Xr T T T 上关于最小支持度 M i n S MinS MinS 的所有频繁项集,称 X q X_q Xq 为一个最大频繁项目集,若对任意 p ( p = 1 , 2 , ⋯ , r ; p ≠ q ) p(p=1,2,\cdots,r;p\neq q) p(p=1,2,,rp=q) 都有 X q ⊄ X p X_q\not\subset X_p XqXp

因此, X q X_q Xq 为最大频繁项集的充分必要条件是, X q X_q Xq 不是其它任何频繁项集的子集。显然, T T T 上的最大频繁项集通常不唯一。

定义 8-7 关联规则 X ⇒ Y X\Rightarrow Y XY T T T 上的置信度 (Confidence),定义为 C o n f i d e n c e ( X ⇒ Y ) = S u p p o r t ( X ∪ Y ) / S u p p o r t ( X ) = S p t N ( X ∪ Y ) / S p t N ( X ) Confidence(X\Rightarrow Y) = Support (X\cup Y )/ Support (X)=SptN (X\cup Y )/ SptN(X) Confidence(XY)=Support(XY)/Support(X)=SptN(XY)/SptN(X)

例 8-2 对例8-1的交易数据库 T T T,令 X = { b , c } , Y = { d } X=\{b,c\},Y=\{d\} X={b,c},Y={d},试求其置信度。

:由于 S u p p o r t ( X ∪ Y ) = S u p p o r t ( { b , c , d } ) = 1 / 3 Support (X\cup Y)=Support(\{b,c,d\})=1/3 Support(XY)=Support({b,c,d})=1/3,而 S u p p o r t ( X ) = S u p p o r t { b , c } = 1 / 3 Support(X)= Support\{b,c\}=1/3 Support(X)=Support{b,c}=1/3,所以 C o n f i d e n c e ( X ⇒ Y ) = S u p p o r t ( X ∪ Y ) / S u p p o r t ( X ) = 1 Confidence(X\Rightarrow Y) = Support (X\cup Y )/ Support (X)=1 Confidence(XY)=Support(XY)/Support(X)=1

定义 8-8 M i n C ∈ ( 0 , 1 ) MinC\in(0,1) MinC(0,1) 且指定为刻画置信度的阈值,则称 M i n C MinC MinC 为最小置信度。

定义 8-9 对于给定的最小支持度 M i n S MinS MinS 和最小置信度 M i n C MinC MinC,如果有 S u p p o r t ( X ⇒ Y ) ≥ M i n S , C o n f i d e n c e ( X ⇒ Y ) ≥ M i n C Support(X\Rightarrow Y)\geq MinS,Confidence(X\Rightarrow Y)\geq MinC Support(XY)MinSConfidence(XY)MinC 则称 X ⇒ Y X\Rightarrow Y XY 为强关联规则 (Strong Association Rule)。

关联规则挖掘就是按用户指定最小支持度 M i n S MinS MinS 和最小置信度 M i n C MinC MinC,从给定的事务数据库 T T T 中寻找出所有强关联规则的过程。

(二)项集的性质

  Agrawal 等人在研究事务数据库关联规则挖掘的过程中,发现了关于项集的两个基本性质,并在关联规则挖掘中被广泛应用。

定理 8-1 (频繁项集性质1):如果 X X X 是频繁项集,则它的任何非空子集 X ′ X' X也是频繁项集。即频繁项集的子集必是频繁项集

定理 8-2 (频繁项集性质2):如果 X X X 是非频繁项集,那么它的所有超集都是非频繁项集。即非频繁项集的超集也是非频繁项集。

二、关联规则的Apriori算法

  Apriori 算法是 Agrawal 等学者提出的关联规则的经典挖掘算法,在关联规则挖掘领域具有很大影响力。算法名称源于它使用了关于项集的两个性质,即定理8-1和8-2等先验 (Apriori) 知识。
  Apriori算法在具体实现时,将关联规则的挖掘过程分为如下两个基本步骤。

1、发现频繁项集

  根据用户给定的最小支持度 M i n S MinS MinS,寻找出所有的频繁项集,即满足支持度 S u p p o r t Support Support 不低于 M i n S MinS MinS 的所有项集。由于这些频繁项集之间有可能存在包含关系,因此,我们可以只关心所有的最大频繁项集,即那些不被其它频繁项集所包含的所有频繁项集。

2、生成关联规则

  根据用户给定的最小可信度 M i n C MinC MinC,在每个最大频繁项集中,寻找置信度 C o n f i d e n c e Confidence Confidence 不小于 M i n C MinC MinC 的关联规则。

(一)发现频繁项集

  如果 ∣ I ∣ = m |I|=m I=m,则 I I I 总共有 2 m − 1 2m-1 2m1 个非空的子集。若 ∣ T ∣ = n |T|=n T=n,则对于每一个事务 t j t_j tj 都要检查它是否包含这 2 m − 1 2m-1 2m1 个子集,其时间复杂性为 O ( n 2 m ) O(n2^m) O(n2m)。当 m m m 很大时,关联规则挖掘的时间开销往往是巨大的。

发现频繁项集需引入以下有关概念和符号。

(1)候选频繁项集:最有可能成为频繁项集的项目集。
(2) C k C_k Ck:所有候选频繁 k-项集的集合;
(3) L k L_k Lk:所有频繁 k-项集构成的集合;
(4) c m k c_m^k cmk I I I 中所有 k-项集的集合;

显然, C 1 C_1 C1 L 1 L_1 L1 的计算比较容易,只要扫描事务数据库 T T T 很容易找出其中的所有候选1-项集以及判断它们是否为频繁1-项集即可。

根据 “频繁项集的子集必为频繁项集” 这一性质,可利用频繁k-项集的集合 L k L_k Lk,来构造所有候选 (k+1)-项目集的集合 C k + 1 C_{k+1} Ck+1,再通过扫描数据库,从 C k + 1 C_{k+1} Ck+1 中找出频繁 (k+1)-项集的集合 L k + 1 ( k = 1 , 2 , ⋯ , m − 1 ) L_{k+1}(k=1,2,\cdots,m-1) Lk+1(k=1,2,,m1)

从前面的分析可知 L k ⊆ C k ⊆ c m k ( k = 1 , 2 , ⋯ , m ) L_k\subseteq C_k\subseteq c_m^k(k=1,2,\cdots,m) LkCkcmk(k=1,2,,m)

因此,要寻找所有频繁 k-项集的集合 L k L_k Lk,只需计算候选频繁 k-项集的集合 C k C_k Ck 中每个项集的支持度,而不必计算 I I I 中所有 k-项集的支持度,这在一定程度上减少了算法的计算量。

根据以上分析,我们可以得到 Apriori 算法第一部分:

算法8-1: Apriori算法之频繁项集发现算法
输入:项集 I I I,事务数据库 T T T,最小支持数 M i n S p t N MinSptN MinSptN
输出:所有频繁项集构成的集合 L L L
(1)求 L 1 L_1 L1:① 通过扫描数据库 T T T,找出所有1-项集并计算其支持数作为候选频繁1-项集 C 1 C_1 C1
  ② 从 C 1 C_1 C1 中删除低于 M i n S p t N MinSptN MinSptN 的元素,得到所有频繁1-项集所构成的集合 L 1 L_1 L1
(2)FOR k = 1 , 2 , 3 , ⋯ k=1, 2, 3,\cdots k=1,2,3,
(3)连接:将 L k L_k Lk 进行自身连接生成一个候选频繁 k + 1 k+1 k+1 项集的集合 C k + 1 C_{k+1} Ck+1,其连接方法如下:对任意 p , q ∈ L k p,q\in L_k p,qLk,若按字典序有 p = { p 1 , p 2 , ⋯ , p k − 1 , p k } , q = { p 1 , p 2 , ⋯ , p k − 1 , q k } p=\{p_1, p_2,\cdots, p_{k-1}, p_k\},q=\{p_1, p_2,\cdots, p_{k-1}, q_k\} p={p1,p2,,pk1,pk}q={p1,p2,,pk1,qk} 且满足 p k < q k p_k<q_k pk<qk,则把 p , q p, q p,q 连接成 k + 1 k+1 k+1 项集,即将 p ⊕ q = { p 1 , p 2 , ⋯ , p k − 1 , p k , q k } p\oplus q=\{p_1, p_2,\cdots, p_{k-1}, p_k, q_k\} pq={p1,p2,,pk1,pk,qk} 作为候选 (k+1)-项集 C k + 1 C_{k+1} Ck+1 中的元素。
(4)剪枝:删除 C k + 1 C_{k+1} Ck+1中明显的非频繁 (k+1)-项集,即当 C k + 1 C_{k+1} Ck+1 中一个候选 (k+1)-项集的某个 k-项子集不是 L k L_k Lk 中的元素时,则将它从 C k + 1 C_{k+1} Ck+1 中删除。
(5)算支持度:通过扫描事务数据库 T T T,计算 C k + 1 C_{k+1} Ck+1 中各个元素的支持数。
(6)求 L k + 1 L_{k+1} Lk+1:剔除 C k + 1 C_{k+1} Ck+1 中低于最小支持数 M i n S p t N MinSptN MinSptN 的元素,即得到所有频繁 (k+1)-项集构成的集合 L k + 1 L_{k+1} Lk+1
(7)若 L k + 1 = ∅ L_{k+1}=\varnothing Lk+1=,则转第(9)步
(8)END FOR
(9)令 L = L 2 ∪ L 3 ∪ ⋯ ∪ L k L=L_2\cup L_3\cup\cdots\cup L_k L=L2L3Lk ,并输出 L L L

例 8-3 对表8-2所示的交易数据库,其项集 I = { a , b , c , d , e } I=\{a,b,c,d,e\} I={a,b,c,d,e},设最小支持度 M i n S = 0.4 MinS=0.4 MinS=0.4,请找出所有的频繁项目集。

在这里插入图片描述

:因支持度 M i n S = 0.4 MinS=0.4 MinS=0.4,事务数据库有5条记录,即最小支持数 M i n S p t N = 2 MinSptN=2 MinSptN=2

算法(1)求 L 1 L_1 L1:扫描事务数据库,可得候选频繁1-项集及其支持数计算结果。

在这里插入图片描述
第一轮循环:对 L 1 L_1 L1 执行算法的(3)至(6)步。

算法(3)连接:由 L 1 L_1 L1 自身连接生成候选频繁2-项集的集合 C 2 C_2 C2,其结果由表8-4左侧第1列给出,且已按字典序排序。 { a } \{a\} {a} { b } , { c } , { d } , { e } \{b\}, \{c\}, \{d\} , \{e\} {b},{c},{d},{e} 分别连接生成 { a , b } , { a , c } , { a , d } \{a,b\}, \{a,c\}, \{a,d\} {a,b},{a,c},{a,d} { a , e } \{a,e\} {a,e} { b } \{b\} {b} { c } , { d } , { e } \{c\}, \{d\}, \{e\} {c},{d},{e} 分别连接生成 { b , c } , { b , d } , { b , d } \{b,c\}, \{b,d\}, \{b,d\} {b,c},{b,d},{b,d}。……

在这里插入图片描述

算法(4)剪枝:由于 I I I 中所有1-项集都是频繁的,因此 C 2 C_2 C2 无需进行剪枝过程。

算法(5)算支持数:扫描数据库,计算其支持数。

算法(6)求 L 2 L_2 L2:删除支持数小于等于2的候选2-项集,最终得到所有的频繁2-项集。

算法(7) L 2 ≠ ∅ L_2≠\varnothing L2=

第二轮循环:对 L 2 L_2 L2 执行算法的(3)至(6)步获得 L 3 L_3 L3 S p t N ( { d , e } ) = 1 SptN(\{d,e\})=1 SptN({d,e})=1, { b , d , e } \{b, d, e\} {b,d,e} 被剪枝。

在这里插入图片描述

第三轮循环:对 L 3 L_3 L3 执行算法的(3)至(6)步获得 L 4 L_4 L4

在这里插入图片描述

第四轮循环:由于 L 4 L_4 L4 仅有一个频繁4-项集,故已不能生成候选频繁5-项集 C 5 C_5 C5,因此(7) L 5 = ∅ L_5=\varnothing L5=,转算法(9)步。

算法(9)输出 L = L 2 ∪ L 3 ∪ L 4 = { { a , b } , { a , c } , { a , d } , { b , c } , { b , d } , { b , e } , { c , d } , { c , e } } ∪ { { a , b , c } , { a , b , d } , { a , c , d } , { b , c , d } , { b , c , e } } ∪ { { a , b , c , d } } L=L_2\cup L_3\cup L_4=\{\{a, b\}, \{a, c\}, \{a, d\}, \{b, c\}, \{b, d\}, \{b, e\}, \{c, d\}, \{c, e\}\}\cup\{\{a, b, c\},\{a, b, d\}, \{a, c, d\}, \{b, c, d\}, \{b, c, e\}\}\cup\{\{a, b, c, d\}\} L=L2L3L4={{a,b},{a,c},{a,d},{b,c},{b,d},{b,e},{c,d},{c,e}}{{a,b,c},{a,b,d},{a,c,d},{b,c,d},{b,c,e}}{{a,b,c,d}}

例 8-4 对于频繁项集构成的集合 L = C 2 ∪ C 3 ∪ C 4 = { { a , b } , { a , c } , { a , d } , { b , c } , { b , d } , { b , e } , { c , d } , { c , e } } ∪ { { a , b , c } , { a , b , d } , { a , c , d } , { b , c , d } , { b , c , e } } ∪ { { a , b , c , d } } L=C_2\cup C_3\cup C_4=\{\{a, b\}, \{a, c\}, \{a, d\}, \{b, c\}, \{b, d\}, \{b, e\}, \{c, d\}, \{c, e\}\}\cup\{\{a, b, c\},\{a, b, d\}, \{a, c, d\}, \{b, c, d\}, \{b, c, e\}\}\cup\{\{a, b, c, d\}\} L=C2C3C4={{a,b},{a,c},{a,d},{b,c},{b,d},{b,e},{c,d},{c,e}}{{a,b,c},{a,b,d},{a,c,d},{b,c,d},{b,c,e}}{{a,b,c,d}} 请求出它的最大频繁项集的集合。

:因为最大频繁项集一定不是其它任何频繁项集的子集。因此,可以采用枚举法来寻找 L L L 中的最大频繁项集,一般从项最多的频繁项集开始,检查它是否包含在某个频繁项集之中。
(1)因为 L L L 中只有一个频繁4-项集 { a , b , c , d } \{a, b, c, d\} {a,b,c,d},故它不可能是 L L L 中其它2-项集,3-项集的子集,所以它是一个最大频繁项集。
(2)对于 { b , c , e } \{b, c, e\} {b,c,e},因为它不是 { a , b , c , d } \{a, b, c, d\} {a,b,c,d} 的子集,也不是 L L L 中其它3-项集的子集,更不是其它2-项集的子集,所以是最大频繁项集。
(3)因 为 { a , b , c } , { a , b , d } , { a , c , d } \{a, b, c\},\{a, b, d\},\{a, c, d\} {a,b,c},{a,b,d},{a,c,d} { b , c , d } \{b, c, d\} {b,c,d} 都是 { a , b , c , d } \{a, b, c, d\} {a,b,c,d} 的子集, { a , b } , { a , c } , { a , d } , { b , c } , { b , d } \{a, b\},\{a, c\},\{a, d\},\{b, c\},\{b, d\} {a,b},{a,c},{a,d},{b,c},{b,d} { c , d } \{c, d\} {c,d} 都是 { a , b , c , d } \{a, b, c, d\} {a,b,c,d} 的子集, { b , e } \{b, e\} {b,e} { c , e } \{c, e\} {c,e} 都是 { b , c , e } \{b, c, e\} {b,c,e} 的子集,所以它们都不是最大频繁项集。
L L L 中有2个最大频繁项集,构成 L m a x = { { b , c , e } , { a , b , c , d } } L_{max}=\{\{b, c, e\},\{a, b, c, d\}\} Lmax={{b,c,e}{a,b,c,d}}

(二)产生关联规则

X X X 为一个项集, ∅ ≠ Y ⊂ X \varnothing≠Y\subset X =YX,则 Y ⇒ ( X − Y ) Y\Rightarrow(X-Y) Y(XY) 称为由 X X X 导出的关联规则。
X X X 是频繁项集,则它导出的关联规则必满足最小支持度要求, 即 S u p p o r t ( Y ⇒ ( X − Y ) ) = S u p p o r t ( X ) ≥ M i n S (8-4) Support (Y\Rightarrow(X-Y)) = Support (X)≥MinS\tag{8-4} Support(Y(XY))=Support(X)MinS(8-4) 因此,只需检查 C o n f i d e n c e ( Y ⇒ ( X − Y ) ) Confidence(Y\Rightarrow(X-Y)) Confidence(Y(XY)) 是否满足最小置信度 M i n C MinC MinC,即可判断这个规则是否为强关联规则。

因为频繁项集X的任一子集 Y Y Y X − Y X-Y XY 都是频繁项集,且 S u p p o r t ( Y ) Support(Y) Support(Y) S u p p o r t ( X − Y ) Support(X-Y) Support(XY) 的值在发现频繁项集的时候已经计算出来。因此有 C o n f i d e n c e ( Y ⇒ ( X − Y ) ) = S u p p o r t ( X ) / S u p p o r t ( Y ) (8-5) Confidence(Y\Rightarrow(X-Y))=Support (X)/ Support (Y)\tag{8-5} Confidence(Y(XY))=Support(X)/Support(Y)(8-5) C o n f i d e n c e ( Y ⇒ ( X − Y ) ) ≥ M i n C Confidence(Y\Rightarrow(X-Y))≥MinC Confidence(Y(XY))MinC,可知 Y ⇒ ( X − Y ) Y\Rightarrow(X-Y) Y(XY) 为强关联规则。

因此,我们可以得到关联规则的生成算法:

算法8-2 Apriori算法之强关联规则生成法
输入:所有频繁项集构成的集合 L L L,最小置信度 M i n C MinC MinC
输出:所有强关联规则构成的集合 S A R SAR SAR
(1) S A R = ∅ SAR=\varnothing SAR=
(2)REPEAT
(3)取 L L L 中一个未处理元素 X X X (频繁项集)
(4)令 S u b s e t s ( X ) = { Y ∣ ∅ ≠ Y ⊂ X } Subsets(X)=\{Y|\varnothing≠Y\subset X\} Subsets(X)={Y=YX}
(5)REPEAT
  ① 取 S u b s e t s ( X ) Subsets(X) Subsets(X) 的每一个未处理元素 Y Y Y,计算 C o n f i d e n c e ( Y ⇒ ( X − Y ) ) Confidence(Y\Rightarrow(X-Y)) Confidence(Y(XY))
  ② 如果 C o n f i d e n c e ( Y ⇒ ( X − Y ) ) ≥ M i n C Confidence(Y\Rightarrow(X-Y))≥MinC Confidence(Y(XY))MinC S A R = S A R ∪ ( Y ⇒ ( X − Y ) ) SAR=SAR\cup(Y\Rightarrow(X-Y)) SAR=SAR(Y(XY))
(6)UNTIL S u b s e t s ( X ) Subsets(X) Subsets(X) 中每个元素都已经处理
(7)UNTIL 集合 L L L 中每个元素都已经处理
(8)输出 S A R SAR SAR

例 8-5 设最小置信度 M i n C = 0.6 MinC=0.6 MinC=0.6,对于例8-4所得到的频繁项集的集合 L = { { a , b } , { a , c } , { a , d } , { b , c } , { b , d } , { b , e } , { c , d } , { c , e } } ∪ { { a , b , c } , { a , b , d } , { a , c , d } , { b , c , d } , { b , c , e } } ∪ { { a , b , c , d } } L=\{\{a, b\},\{a, c\},\{a, d\},\{b, c\},\{b, d\},\{b, e\},\{c, d\},\{c, e\}\} \cup\{\{a, b, c\},\{a, b, d\},\{a, c, d\},\{b, c, d\},\{b, c, e\}\}\cup\{\{a, b, c, d\}\} L={{a,b}{a,c}{a,d}{b,c}{b,d}{b,e}{c,d}{c,e}}{{a,b,c}{a,b,d}{a,c,d}{b,c,d}{b,c,e}}{{a,b,c,d}} 试求出所有的强关联规则。

:从 L L L 中取出第1个2-频繁项集 { a , b } \{a, b\} {a,b},它的两个非空真子集 { a } \{a\} {a} { b } \{b\} {b} 可以生成 { a } ⇒ { b } \{a\}\Rightarrow\{b\} {a}{b} { b } ⇒ { a } \{b\}\Rightarrow\{a\} {b}{a} 两个关联规则。 C o n f i d e n c e ( { a } ⇒ { b } ) = S u p p o r t ( { a , b } ) / S u p p o r t ( { a } ) = 3 / 3 = 1 Confidence(\{a\}\Rightarrow\{b\})=Support(\{a, b\})/ Support(\{a\})=3/3=1 Confidence({a}{b})=Support({a,b})/Support({a})=3/3=1 C o n f i d e n c e ( { b } ⇒ { a } ) = S u p p o r t ( { a , b } ) / S u p p o r t ( { b } ) = 3 / 5 = 0.6 Confidence(\{b\}\Rightarrow\{a\})=Support(\{a, b\})/Support(\{b\})=3/5=0.6 Confidence({b}{a})=Support({a,b})/Support({b})=3/5=0.6 因此, { a } ⇒ { b } \{a\}\Rightarrow\{b\} {a}{b} { b } ⇒ { a } \{b\}\Rightarrow\{a\} {b}{a} 都是强关联规则。

同理,求出 { a , c } , { a , d } , { b , c } , { b , d } , { b , e } , { c , d } , { c , e } \{a, c\},\{a, d\},\{b, c\},\{b, d\},\{b, e\},\{c, d\},\{c, e\} {a,c}{a,d}{b,c}{b,d}{b,e}{c,d}{c,e} 等7个2-频繁项集的关联规则,并判断是否强关联规则。对频繁3-项集 { b , c , e } \{b, c, e\} {b,c,e} 有6个非自身的非空真子集 { b } , { c } , { e } , { b , c } , { b , e } , { c , e } \{b\},\{c\},\{e\},\{b,c\},\{b,e\}, \{c,e\} {b},{c},{e},{b,c},{b,e},{c,e},故共可生成6个关联规则,其置信度计算结果详见表8-7。

在这里插入图片描述
同理,可以计算求出其它频繁3-频繁集的强关联规则,也可以计算由 { a , b , c , d } \{a, b, c, d\} {a,b,c,d} 可以导出 { a } ⇒ { b , c , d } \{a\}\Rightarrow\{b,c,d\} {a}{b,c,d} { a , b } ⇒ { c , d } \{a,b\}\Rightarrow\{c, d\} {a,b}{c,d} 等14个关联规则,并找出相应的强关联规则。

穷举法可以通过枚举频繁项集生成所有的关联规则,并通过计算关联规则的置信度来判断该规则是否为强关联规则,但当一个频繁项集包含的项很多时,就会生成大量的候选关联规则,因为一个频繁项目集X能够生成 2 ∣ X ∣ − 2 2^{|X|}-2 2X2 个候选关联规则。

定理 8-3(关联规则性质1):设 X X X 为频繁项集, ϕ ≠ Y ⊂ X \phi≠Y\subset X ϕ=YX ϕ ≠ Y ′ ⊂ Y \phi≠Y'\subset Y ϕ=YY。若 Y ′ ⇒ ( X − Y ′ ) Y'\Rightarrow(X-Y') Y(XY) 为强关联规则,则 Y ⇒ ( X − Y ) Y\Rightarrow(X-Y) Y(XY) 也必是强关联规则。

比如,令 X = { b , c , e } X=\{b, c, e\} X={b,c,e} 且已知 { e } ⇒ { b , c } \{e\}\Rightarrow\{b,c\} {e}{b,c} 是强关联规则,则由定理8-3立即得出 { b , e } ⇒ { c } \{b,e\}\Rightarrow\{c\} {b,e}{c} { c , e } ⇒ { b } \{c,e\}\Rightarrow\{b\} {c,e}{b} 都是强关联规则的结论,而不需计算这两个规则的置信度。

定理 8-4(关联规则性质2):设 X X X 为频繁项集, ϕ ≠ Y ⊂ X \phi≠Y\subset X ϕ=YX ϕ ≠ Y ′ ⊂ Y \phi≠Y'\subset Y ϕ=YY。若 Y ′ ⇒ ( X − Y ′ ) Y'\Rightarrow(X-Y') Y(XY) 不是强关联规则,则 Y ⇒ ( X − Y ) Y\Rightarrow(X-Y) Y(XY) 也不是强关联规则。

比如,令 X = { b , c , e } X=\{b, c, e\} X={b,c,e} 且已知 { b , c } ⇒ { e } \{b,c\}\Rightarrow\{e\} {b,c}{e} 不是强关联规则,则由定理8-4立即得出 { b } ⇒ { c , e } \{b\}\Rightarrow\{c,e\} {b}{c,e} { c } ⇒ { b , e } \{c\}\Rightarrow\{b,e\} {c}{b,e} 都不是强关联规则的结论,也无需计算它们的置信度。

  可以逐层生成关联规则,并利用以上性质2(定理8-4)进行剪枝,以减少关联规则生成的计算工作量。其基本思路是,首先产生后件只包含一个项的关联规则,然后两两合并这些关联规则的后件,生成后件包含两个项的候选关联规则,从这些候选关联规则中再找出强关联规则,以此类推。

比如,设 { a , b , c , d } \{a,b,c,d\} {a,b,c,d} 是频繁项集, { a , c , d } ⇒ { b } \{a,c,d\}\Rightarrow\{b\} {a,c,d}{b} { b , c , d } ⇒ { a } \{b,c,d\}\Rightarrow\{a\} {b,c,d}{a} 是两个关联规则,则通过合并它们的后件生成候选规则的后件 { a , b } \{a,b\} {a,b},则候选规则的前件为 { a , b , c , d } − { a , b } = { c , d } \{a,b,c,d\}-\{a,b\}=\{c,d\} {a,b,c,d}{a,b}={c,d},由此即得候选规则 { c , d } ⇒ { a , b } \{c,d\}\Rightarrow\{a,b\} {c,d}{a,b}

图8-1显示了由频繁项集 { a , b , c , d } \{a,b,c,d\} {a,b,c,d} 产生关联规则的格结构。如果格中任意结点对应关联规则的置信度低于 M i n C MinC MinC,则根据关联规则的性质2,可以立即剪掉该结点所生成的整个子图。

在这里插入图片描述

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

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

相关文章

byobu

byobu 终端多路复用器 一、byobu 安装二、byobu 使用三、其他终端多路复用器四、ssh byobu 远程协作 系统环境: linux(ubuntu,debian,kali) 一、byobu 安装 byobu 是包装过的tmux #sudo apt install tmux sudo apt install byobubyobu二、byobu 使用 创建窗口: Ctrl a c…

windows编译xlnt,获取Excel表里的数据

用git拉取项目 这个文件是空的 要用git拉下来&#xff0c;使用终端编译xlnt库 点击解决方案 运行生成 然后新建项目&#xff0c;配置好库&#xff0c; #include <iostream> #include <xlnt/xlnt.hpp>int main() {// 打开 Excel 文件xlnt::workbook workbook;workb…

Redis从入门到精通(十九)多级缓存(四)Nginx共享字典实现本地缓存

文章目录 前言6.5 实现多级缓存6.5.6 Nginx本地缓存6.5.6.1 代码实现6.5.6.2 功能测试 6.6 缓存同步6.6.1 缓存同步策略6.6.2 异步通知策略 前言 Redis多级缓存系列文章&#xff1a; Redis从入门到精通(十六)多级缓存(一)Caffeine、JVM进程缓存 Redis从入门到精通(十七)多级缓…

EPSON两款新的加速器M-A552AC1和M-A552AR1

老化的社会基础设施以及基础设施维护、监控和更新成本的飙升被认为是国家和社区面临的严重社会问题&#xff0c;在有着高度城市化的国家尤为明显。在这样的环境和认识推动下,利用传感器监测结构健康的技术需求的日益增长。爱普生推出了两款新的高性能加速器M-A552AC1和M-A552AR…

【C++】开始使用stack 与 queue

送给大家一句话&#xff1a; 忍受现实给予我们的苦难和幸福&#xff0c;无聊和平庸。 – 余华 《活着》 开始使用queue 与 stack 1 前言2 stack与queue2.1 stack 栈2.2 queue 队列2.3 使用手册 3 开始使用Leetcode 155.最小栈牛客 JZ31 栈的弹出压入序列Leetcode 150.逆波兰表达…

tailwindcss在manoca在线编辑智能感知

推荐一下monaco-tailwindcss库&#xff0c;它实现在monaco-editor网页在线编辑器中对tailwindcss的智能感知提示&#xff0c;在利用tailwindcss实现html效果布局。非常的方便。 生成CSS

freertos作业day1

1.总结keil5下载代码和编译代码需要注意的事项 1.&#xff09;仿真器设置&#xff1a; 点击魔术棒&#xff0c;选择debug选项&#xff0c;找到使用的仿真器&#xff0c;选择ST-LINK仿真器&#xff0c;点击setting&#xff0c;选择flash download ,勾选reset and run,选择pack…

基于zookeeper安装Kafka集群

操作系统&#xff1a;centOS 9 Stream&#xff0c;6台&#xff0c;基于vmware虚拟机创建 准备工作 确认系统环境&#xff1a; 确保所有服务器已安装了最新更新。安装Java Development Kit (JDK) 8或更高版本&#xff0c;因为ZooKeeper和Kafka都是基于Java开发的。例如&#x…

PaddleOCR训练自己模型(2)----参数配置及训练

一、介绍 paddleocr分为文字定位(Det)和文字识别(Rec)两个部分 二、定位模型训练 &#xff08;1&#xff09;Det预训练模型下载&#xff1a;https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_train.tar &#xff08;2&#xff09;下载完之后&#xff0c;…

案例研究|众乐邦将MeterSphere持续测试平台融入DevOps流水线

众乐邦网络科技有限公司&#xff08;以下简称为“众乐邦”&#xff09;是一家企业服务公司。其旗下的众乐邦灵活用工数字化薪税管理平台&#xff08;以下简称为灵活用工管理平台&#xff09;&#xff0c;以财税服务视角切入灵活用工场景&#xff0c;连接企业、灵活就业者和监管…

家居网购项目(手写分页)

文章目录 1.后台管理—分页显示1.程序框架图2.编写数据模型Page.java 3.编写dao层1.修改FurnDao增加方法 2.修改FurnDaoImpl增加方法 3.单元测试FurnDaoTest 4.编写service层1.修改FurnService增加方法 2.修改FurnServiceImpl增加方法3.单元测试FurnServiceTest 5.编写DataUtil…

pytorch 今日小知识3——nn.MaxPool3d 、nn.AdaptiveAvgPool3d、nn.ModuleList

MaxPool3d — PyTorch 2.2 documentation 假设输入维度&#xff08;1,2,3,4,4&#xff09; maxpool torch.nn.MaxPool3d(kernel_size(2, 2, 2), stride(2, 2, 2), padding(1, 0, 0))F 维的 kernel_size 为 2&#xff0c;说明在 F 维的覆盖的 frame 数为 2&#xff0c;也就是…