笔记分享: 西安交通大学COMP551705数据仓库与数据挖掘——02. 关联规则挖掘

image-20241112204045174


有关 Github \text{Github} Github仓库,欢迎来 Star \text{Star} Star

1. \textbf{1. } 1. 基本概念

1️⃣关联规则挖掘

  1. 含义:从事务数据库中发现项集之间有趣的关联
  2. 定义:对于 Y ⊆ I / X ⊆ T i Y\text{⊆}I/X\text{⊆}T_i YI/XTi X ∩ Y = ∅ X\text{∩}Y\text{=}\varnothing XY= X → Y X\text{→}Y XY表示既然 T i T_i Ti中含 X X X则也(以一定支持/置信度)含 Y Y Y
    集合含义示例
    项集 I I I I = { i 1 , i 2 , ⋯ , i m } I\text{=}\left\{i_1, i_2, \cdots, i_m\right\} I={i1,i2,,im}超市中的所有商品
    事务集 D D D D = { T 1 , T 2 , ⋯ , T n } D\text{=}\left\{T_1, T_2, \cdots, T_n\right\} D={T1,T2,,Tn} T i ⊆ I T_i\text{⊆}I TiI所有交易( T i T_i Ti为第 i i i次交易结算商品)
    事务包含项集 X X X X ⊆ I X\text{⊆}I XI X ⊆ T i X\text{⊆}T_i XTi每次交易所结算的(部分)商品
  3. 表示:
    • 数学表示: A → B [ S , C ] A\text{→}B\,\,[S,C] AB[S,C] (当 S C SC SC都超过阈值时认为该规则强相关)
    • 可视化图:

2️⃣规则度量

  1. 客观度量:
    Item \textbf{Item} Item公式含义
    支持度 S ( A → B ) = P ( A ∩ B ) S(A\text{→}B)\text{=}P(A\text{∩}B) S(AB)=P(AB), S ( A ) = P ( A ) S(A)\text{=}P(A) S(A)=P(A)所有事务中,有多少事务同时含 A B AB AB/含 A A A
    置信度 C ( A → B ) = P ( A ∩ B ) P ( A ) C(A\text{→}B)\text{=}\cfrac{P(A\text{∩}B)}{P(A)} C(AB)=P(A)P(AB)在包含 A A A的事务中,有多少同时还含 B B B
    • 示例: TID Item 2000 A , B , C 1000 A , C 4000 A , D 5000 B , E , F ⇒  { P ( A ) = 3 4 P ( A ∩ B ) = 1 4 ⇒  A → B [ 1 4 , 1 3 ] \text{ \large } \begin{array}{|c|c|} \hline \text{\small TID} & \text{\small Item} \\ \hline \small 2000 & \small A, B, C \\ \hline \small 1000 & \small A, C \\ \hline \small 4000 & \small A, D \\ \hline \small 5000 & \small B, E, F \\ \hline \end{array} \text{ ⇒ } \begin{cases} P(A) = \cfrac{3}{4} \\[5pt] P(A \cap B) = \cfrac{1}{4} \end{cases} \text{ ⇒ } A \to B \, \left[\cfrac{1}{4}, \cfrac{1}{3}\right]  TID2000100040005000ItemA,B,CA,CA,DB,E,F ⇒  P(A)=43P(AB)=41 ⇒ AB[41,31]
  2. 主观度量:个人常识/实际情况…

3️⃣关联规则/相关性/因果关系

  1. 关联规则/相关性
    • 相关性衡量: Lift ( A , B ) = P ( A ∪ A ) P ( A ) P ( B ) → { < 1 → A B 负相关 = 1 → A B 无相关 > 1 → A B 正相关 \text{Lift}(A,B)\text{=}\cfrac{P(A\text{∪}A)}{P(A)P(B)}\text{→}\begin{cases}\text{<}1\text{→}AB负相关\\\\\text{=}1\text{→}AB无相关\\\\\text{>}1\text{→}AB正相关\end{cases} Lift(A,B)=P(A)P(B)P(AA) 1AB负相关=1AB无相关>1AB正相关
    • 二者关系:强关联规则$\text{≠} $正相关
      image-20241117015923744
  2. 关联规则/因果关系:二者无关,但相关性有助于为发现因果关系提供线索

2. \textbf{2. } 2. 布尔关联规则

2.1. \textbf{2.1. } 2.1. 一些基本概念

1️⃣频繁项集

  1. 定义: X X X频繁 ⇔ 等价于 \xLeftrightarrow{等价于} 等价于 事务集 D D D中含 X X X T i T_i Ti数量( X X X支持度)超过阈值 ⇔ 等价于 X \xLeftrightarrow{等价于}X 等价于 X满足最小支持度
  2. 性质:
    • 如果 X X X频繁 → X \text{→}X X的子集也一定频繁(向下封闭)
    • 如果 X X X非频繁 → X \text{→}X X的超集(如 { X , x n + 1 , x n + 2 , . . . } \{X,x_{n+1},x_{n+2},...\} {X,xn+1,xn+2,...})也一定非频繁

2️⃣闭合集 & \& &最大集:为解决组合爆炸( 规则数目 ∝  2 数据集规模 规则数目\text{ ∝ }2^{数据集规模} 规则数目 ∝ 2数据集规模)问题

  1. 定义:对于事务集 D D D
    集合含义意义
    闭合集(模式) X X X闭合 ⇔ 等价于 X \xLeftrightarrow{等价于}X 等价于 X频繁 ∩ X \text{∩}X X所有超集的支持度小于 X X X D D D无损压缩
    最大集(模式) X X X最大 ⇔ 等价于 X \xLeftrightarrow{等价于}X 等价于 X频繁 ∩ X \text{∩}X X所有超集都非频繁 D D D有损压缩
  2. 示例: D = { A 1 = ⟨ a 1 , a 2 , … , a 100 ⟩ , A 2 = ⟨ a 1 , a 2 , … , a 50 ⟩ } D\text{=}\left\{A_1\text{=}\left\langle a_1, a_2, \ldots, a_{100}\right\rangle,A_2\text{=}\left\langle a_1, a_2, \ldots, a_{50}\right\rangle\right\} D={A1=a1,a2,,a100,A2=a1,a2,,a50},最小支持度 =1 \text{=1} =1
    集合 Item \textbf{Item} Item
    闭合模式 A 1 A_1 A1(支持度 =1 / \text{=1}/ =1/无频繁超集), A 2 A_2 A2(支持度 =2/ \text{=2/} =2/频繁超集支持度 =2 \text{=2} =2)
    最大模式 A 1 A_1 A1(支持度 =1 / \text{=1}/ =1/无频繁超集)
    所有模式所有的频繁子集,比如 ⟨ a 1 , … , a 49 ⟩ \left\langle a_1, \ldots, a_{49}\right\rangle a1,,a49

2.2. \textbf{2.2.} 2.2. Apriori \textbf{Apriori} Apriori算法

0️⃣总论

  1. 原有方案:原始数据 → ( 暴力 ) 生成 \xrightarrow{(暴力)生成} (暴力)生成 关联规则
  2. 现有方案:原始数据 → Apriori算法 \xrightarrow{\text{Apriori}算法} Apriori算法 频繁项集 → 生成 \xrightarrow{生成} 生成 关联规则

1️⃣算法流程:原始数据 → Apriori算法 \xrightarrow{\text{Apriori}算法} Apriori算法 频繁项集

image-20241116154336636
  1. 初始化:事务 D → 清洗 D\xrightarrow{清洗} D清洗 单项 { { T 1 } , { T 2 } , . . . , { T n } } → 满足最小支持度 \small\{\{\mathrm{T_1}\}, \{\mathrm{T_2}\},..., \{\mathrm{T_n}\}\}\xrightarrow{满足最小支持度} {{T1},{T2},...,{Tn}}满足最小支持度 L 1 = { { T i 1 } , { T i 2 } , . . . , { T i m } } L_1\text{=}\small\{\{\mathrm{T_{i_1}}\}, \{\mathrm{T_{i_2}}\},..., \{\mathrm{T_{i_m}}\}\} L1={{Ti1},{Ti2},...,{Tim}}
  2. 主循环:候选集 L 1 → 执行以下操作 L_1\xrightarrow{执行以下操作} L1执行以下操作 候选集 L 2 L_2 L2 (下一轮循环)
    • 组合:本轮频繁项集 L 1 → ( 具体见例子 ) 两两组合 L_{1}\xrightarrow[(具体见例子)]{两两组合} L1两两组合 (具体见例子)候选项集 C 2 C_2 C2
    • 剪枝:候选项集 C 2 → 去处有非频繁子集的项 C_2\xrightarrow{去处有非频繁子集的项} C2去处有非频繁子集的项 下一候频繁集 L 2 L_2 L2,以进行下轮以此循环
  3. 输出:当循环到 L α L_\alpha Lα为空集时停止循环,频繁项集 L = { L 1 ∪ L 2 ∪ . . . ∪ L α } L\text{=}\{L_1\text{∪}L_2\text{∪}...\text{∪}L_\alpha\} L={L1L2...Lα}

2️⃣频繁项集 → 生成 \xrightarrow{生成} 生成 关联规则

  1. 基本流程:
    • 子集:频繁项集 L L L所有非空子集 S = { S 1 , S 2 , . . . , S 2 ∣ L ∣ − 2 } S\text{=}\{S_1,S_2,...,S_{2^{|L|}-2}\} S={S1,S2,...,S2L2},任意 S i → S j S_i\text{→}S_j SiSj组合满足支持度
    • 规则:对每个子集计算 S i → L \ S i S_i\text{→}L\backslash{}S_i SiL\Si的置信度,若小于阈值则视 S i → L \ S i S_i\text{→}L\backslash{}S_i SiL\Si强相关
  2. 效率优化:
    • 原理:对 ( X → L - X ) (X\text{→}L\text{-}X) (XL-X)置信度不满足阈值 → X ′ ⊆ X ( X ′ → L - X ′ ) \xrightarrow{X^{\prime}\text{⊆}X}(X^{\prime}\text{→}L\text{-}X^{\prime}) XX (XL-X)也不满足
    • 优化:先验证 L - X L\text{-}X L-X只有单一项的规则,若不满足则剪枝/满足则再去验证 L - X L\text{-}X L-X多项的规则

2.3. \textbf{2.3.} 2.3. Apriori \textbf{Apriori} Apriori算法示例

0️⃣基本条件:事务及其项集如下表,设定最小支持度为 2 2 2

T \small\textbf{T} T Beer \small\textbf{Beer} Beer Diap. \small\textbf{Diap.} Diap. Powd \small\textbf{Powd} Powd Bread \small\textbf{Bread} Bread Umbre. \small\textbf{Umbre.} Umbre. Milk \small\textbf{Milk} Milk Deter. \small\textbf{Deter.} Deter. Cola \small\textbf{Cola} Cola
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

1️⃣ Apriori \text{Apriori} Apriori算法:得到频繁项集

  1. 初始化: L 1 ⇐ 出现超过两次的商品 { Beer,Diap,Powd,Milk } L_1\xLeftarrow{出现超过两次的商品}\{\small\text{Beer,Diap,Powd,Milk}\} L1出现超过两次的商品 {Beer,Diap,Powd,Milk}
  2. 主循环:当前为 L 1 L_1 L1
    • 组合: L 1 → 简单两两组合 C 2 = { [ Beer Diap ] , [ Beer Powd ] , [ Beer Milk ] , [ Diap Powd ] , [ Diap Milk ] , [ Powd Milk ] } L_1 \xrightarrow{\text{简单两两组合}} C_2 \text{=} \left\{ \small {\begin{bmatrix} \text{Beer} \\ \text{Diap} \end{bmatrix}}, \cancel{\begin{bmatrix} \text{Beer} \\ \text{Powd} \end{bmatrix}}, \begin{bmatrix} \text{Beer} \\ \text{Milk} \end{bmatrix}, \begin{bmatrix} \text{Diap} \\ \text{Powd} \end{bmatrix}, \cancel{ \begin{bmatrix} \text{Diap} \\ \text{Milk} \end{bmatrix}}, \cancel{ \begin{bmatrix} \text{Powd} \\ \text{Milk} \end{bmatrix}} \right\} L1简单两两组合 C2={[BeerDiap],[BeerPowd] ,[BeerMilk],[DiapPowd],[DiapMilk] ,[PowdMilk] }
    • 剪枝: C 2 → 剪掉包含非频繁子集的 L 2 = { [ Beer Diap ] , [ Beer Milk ] , [ Diap Powd ] } C_2\xrightarrow{剪掉包含非频繁子集的}L_2\text{=}\left\{ \small \begin{bmatrix} \text{Beer} \\ \text{Diap} \end{bmatrix}, \begin{bmatrix} \text{Beer} \\ \text{Milk} \end{bmatrix}, \begin{bmatrix} \text{Diap} \\ \text{Powd} \end{bmatrix} \right\} C2剪掉包含非频繁子集的 L2={[BeerDiap],[BeerMilk],[DiapPowd]}
  3. 主循环:当前为 L 2 L_2 L2
    • 组合: L 2 → 组合逻辑见下表 两两组合 C 3 = { [ Beer Diap Milk ] , [ Beer Diap Powd ] } L_2 \xrightarrow[组合逻辑见下表]{\text{两两组合}} C_3\text{=}\left\{ \small \cancel{ \begin{bmatrix} \text{Beer} \\ \text{Diap} \\ \text{Milk} \\ \end{bmatrix}}, \cancel{ \begin{bmatrix} \text{Beer} \\ \text{Diap} \\ \text{Powd} \end{bmatrix}}\right\} L2两两组合 组合逻辑见下表C3={[BeerDiapMilk] ,[BeerDiapPowd] }
      合并的集条件: 二者有 k -1 k\text{-1} k-1项(此处为 1 1 1)相等操作
      L 2 [ 1 ] / L 2 [ 2 ] L_2[1]/L_2[2] L2[1]/L2[2]共有 Beer→ \text{Beer}\text{→} Beer满足执行组合
      L 2 [ 1 ] / L 2 [ 3 ] L_2[1]/L_2[3] L2[1]/L2[3]共有 Diap→ \text{Diap}\text{→} Diap满足执行组合
      L 2 [ 2 ] / L 2 [ 3 ] L_2[2]/L_2[3] L2[2]/L2[3]不满足不执行组合
    • 剪枝: C 2 → 剪掉包含非频繁子集的 L 3 = ∅ C_2\xrightarrow{剪掉包含非频繁子集的}L_3\text{=}\varnothing C2剪掉包含非频繁子集的 L3=,故终止循环
  4. 输出: L = L 1 ∪ L 2 = { Beer , Diap , Powd , Milk , [ Beer Diap ] , [ Beer Milk ] , [ Diap Powd ] } L\text{=}L_1\text{∪}L_2\text{=}\left\{ \small \text{Beer}, \text{Diap}, \text{Powd}, \text{Milk}, \begin{bmatrix} \text{Beer} \\ \text{Diap} \end{bmatrix}, \begin{bmatrix} \text{Beer} \\ \text{Milk} \end{bmatrix}, \begin{bmatrix} \text{Diap} \\ \text{Powd} \end{bmatrix} \right\} L=L1L2={Beer,Diap,Powd,Milk,[BeerDiap],[BeerMilk],[DiapPowd]}

2️⃣生成规则 →  Item Support(A,B) Support A Confidence Beer → Diaper 60 % 80 % 75 % Beer → Milk 40 % 80 % 50 % Diaper → Powd 40 % 80 % 50 % Diaper → Beer 60 % 80 % 75 % Milk → Beer 40 % 40 % 100 % Powd → Diaper 40 % 40 % 100 % etc..... \text{→ } \small \begin{array}{|c|c|c|c|} \hline \text{Item} & \text{Support(A,B)} & \text{Support A} & \text{Confidence} \\ \hline \text{Beer} \to \text{Diaper} & 60 \% & 80 \% & 75 \% \\ \hline \text{Beer} \to \text{Milk} & 40 \% & 80 \% & 50 \% \\ \hline \text{Diaper} \to \text{Powd} & 40 \% & 80 \% & 50 \% \\ \hline \text{Diaper} \to \text{Beer} & 60 \% & 80 \% & 75 \% \\ \hline \text{Milk} \to \text{Beer} & 40 \% & 40 \% & 100 \% \\ \hline \text{Powd} \to \text{Diaper} & 40 \% & 40 \% & 100 \% \\ \hline \end{array} \text{ etc.....} → ItemBeerDiaperBeerMilkDiaperPowdDiaperBeerMilkBeerPowdDiaperSupport(A,B)60%40%40%60%40%40%Support A80%80%80%80%40%40%Confidence75%50%50%75%100%100% etc.....

3. \textbf{3. } 3. 多层关联规则挖掘

3.1. \textbf{3.1. } 3.1. 算法概述

1️⃣基本概念

  1. 概念分层:按层次组织的数据(一般概念 → 高层→低层 \xrightarrow{\text{高层→低层}} 高层低层 具体概念),正符合事务数据库的存储
    image-20241116225058693
  2. 规则示例:高层规则 (计算机 → \text{→} 电器),低层规则 (台式机 → \text{→} 打印机)

2️⃣每层最小支持度的设定

方法描述特点
一致所有曾的最小支持度一致忽略底层(地层支持度一般较低)
递减层次越低 → \text{→} 最小支持度越低保留底层罕见但有意义的规则
分组专家指重点项集 → \text{→} 由此设置每层不同最小支持度 N/A \text{N/A} N/A

3️⃣分层挖掘:

  1. 含义:在多个抽象层挖掘关联规则 → \text{→} 在不同的抽象层进行转化
  2. 性质:(支持度的传播)父节点支持度 ≥ \text{≥} 其子节点支持度,且根结点的支持度为 100 % 100\% 100%
  3. 策略:(自顶向下)具体步骤看例子
    • 最高层:用 Apriori \text{Apriori} Apriori寻找高层频繁项集 + + +过滤事务集
    • 向下迭代:传递过滤后事务集到下一层,继续用 Apriori \text{Apriori} Apriori寻找高层频繁项集 + + +过滤事务集
    • 终止:迭代到层次(子节点)时停下

3.2. \textbf{3.2. } 3.2. 算法实例

0️⃣基本情况:

  1. 概念分层:
    分层表示最大支持度
    第一层(顶层) {1**, 2**, 3**, 4**} \text{\{1**, 2**, 3**, 4**\}} {1**, 2**, 3**, 4**} 4 4 4
    第二层(中层) {11*, 12*, 21*, 22*} \text{\{11*, 12*, 21*, 22*\}} {11*, 12*, 21*, 22*} 3 3 3
    第三层(低层) {111, 121, 211, 713} \text{\{111, 121, 211, 713\}} {111, 121, 211, 713} 3 3 3
  2. 事务集:第 i i i位表示在第 i i i层的分类,如 524 524 524表示在高/中/低层分属第 5 5 5/第 2 2 2/第 4 4 4
    TID \textbf{TID} TID底层中层顶层
    T1 \text{T1} T1 { 111,121,211,221 } \{\text{111,121,211,221}\} {111,121,211,221} { 11*,12*,21*,22* } \{\text{11*,12*,21*,22*}\} {11*,12*,21*,22*} { 1**, 2** } \{\text{1**, 2**}\} {1**, 2**}
    T2 \text{T2} T2 { 111,211,222,323 } \{\text{111,211,222,323}\} {111,211,222,323} { 11*,21*,22*,32* } \{\text{11*,21*,22*,32*}\} {11*,21*,22*,32*} { 1**, 2**, 3** } \{\text{1**, 2**, 3**}\} {1**, 2**, 3**}
    T3 \text{T3} T3 { 112,122,221,411 } \{\text{112,122,221,411}\} {112,122,221,411} { 11*,12*,22*,41* } \{\text{11*,12*,22*,41*}\} {11*,12*,22*,41*} { 1**, 2**, 4** } \{\text{1**, 2**, 4**}\} {1**, 2**, 4**}
    T4 \text{T4} T4 { 111,121 } \{\text{111,121}\} {111,121} { 11*,12* } \{\text{11*,12*}\} {11*,12*} { 1** } \{\text{1**}\} {1**}
    T5 \text{T5} T5 { 111,122,211,221,413 } \{\text{111,122,211,221,413}\} {111,122,211,221,413} { 11*,12*,21*,22*,41* } \{\text{11*,12*,21*,22*,41*}\} {11*,12*,21*,22*,41*} { 1**, 2**, 4** } \{\text{1**, 2**, 4**}\} {1**, 2**, 4**}
    T6 \text{T6} T6 { 211,323,524 } \{\text{211,323,524}\} {211,323,524} { 21*,32*,52* } \{\text{21*,32*,52*}\} {21*,32*,52*} { 2**, 3**, 5** } \{\text{2**, 3**, 5**}\} {2**, 3**, 5**}
    T7 \text{T7} T7 { 323,411,524,713 } \{\text{323,411,524,713}\} {323,411,524,713} { 32*,41*,52*,71* } \{\text{32*,41*,52*,71*}\} {32*,41*,52*,71*} { 3**, 4**, 5**, 7** } \{\text{3**, 4**, 5**, 7**}\} {3**, 4**, 5**, 7**}

1️⃣顶层的 Apriori \text{Apriori} Apriori算法:最小支持度为 4 4 4

  1. 初始化:
    • 初始频繁集: L ( 1 , 1 ) = { {1**},{2**} } ⇐ 得到 L(1,1)\text{=}\{\text{\{1**\},\{2**\}}\}\xLeftarrow{得到} L(1,1)={{1**},{2**}}得到 筛选出 { i ** } \{i\text{**}\} {i**}中支持度大于 5 5 5
    • 表过滤: L ( 1 , 1 ) L(1,1) L(1,1)中项的子节点必定以 1 / 2 1/2 1/2开头,故滤掉以其它开头的
      TID \textbf{TID} TID当前事务表 T[1] \textbf{T[1]} T[1]滤后事务表 T[2] \textbf{T[2]} T[2]
      T1 \text{T1} T1 { 111,121,211,221 } \{\text{111,121,211,221}\} {111,121,211,221} { 111,121,211,221 } \{\text{111,121,211,221}\} {111,121,211,221}
      T2 \text{T2} T2 { 111,211,222,323 } \{\text{111,211,222,323}\} {111,211,222,323} { 111,211,222 } \{\text{111,211,222}\} {111,211,222}
      T3 \text{T3} T3 { 112,122,221,411 } \{\text{112,122,221,411}\} {112,122,221,411} { 112,122,221 } \{\text{112,122,221}\} {112,122,221}
      T4 \text{T4} T4 { 111,121 } \{\text{111,121}\} {111,121} { 111,121 } \{\text{111,121}\} {111,121}
      T5 \text{T5} T5 { 111,122,211,221,413 } \{\text{111,122,211,221,413}\} {111,122,211,221,413} { 111,122,211,221 } \{\text{111,122,211,221}\} {111,122,211,221}
      T6 \text{T6} T6 { 211,323,524 } \{\text{211,323,524}\} {211,323,524} { 211 } \{\text{211}\} {211}
      T7 \text{T7} T7 { 323,411,524,713 } \{\text{323,411,524,713}\} {323,411,524,713} { ∅ } \{\varnothing\} {}
  2. 主循环:当前为 L ( 1 , 1 ) L(1,1) L(1,1)
    • 组合: L ( 1 , 1 ) → 简单两两组合 C ( 1 , 2 ) = { {1**,2** } } L(1,1) \xrightarrow{\text{简单两两组合}} C(1,2) \text{=}\{\text{\{1**,2**}\}\} L(1,1)简单两两组合 C(1,2)={{1**,2**}}
    • 剪枝: C ( 1 , 2 ) → 滤无可滤 依据T[2]减去包含非频繁子集的 L ( 1 , 2 ) = { {1**,2** } } C(1,2)\xrightarrow[滤无可滤]{依据\text{T[2]}减去包含非频繁子集的}L(1,2) \text{=}\{\text{\{1**,2**}\}\} C(1,2)依据T[2]减去包含非频繁子集的 滤无可滤L(1,2)={{1**,2**}} (不可再组合故循环结束)
  3. 输出:第一层频繁集 L ( 1 ) = { {1**},{2**} , {1**,2** } } L(1)\text{=}\{\text{\{1**\},\{2**\}},\text{\{1**,2**}\}\} L(1)={{1**},{2**},{1**,2**}};将滤后事务表 T [ 2 ] T[2] T[2]传给下一层

2️⃣中层的 Apriori \text{Apriori} Apriori算最小支持度为 3 3 3法:

  1. 初始化:
    • 初始频繁集: L ( 2 , 1 ) = { {11*},{12*},{21*},{22*} } ⇐ 得到 L(2,1)\text{=}\{\text{\{11*\},\{12*\},\{21*\},\{22*\}}\}\xLeftarrow{得到} L(2,1)={{11*},{12*},{21*},{22*}}得到 筛出 { i j * } \{ij\text{*}\} {ij*}中支持度大于 3 3 3
    • 事务表过滤: L ( 2 , 1 ) L(2,1) L(2,1)中项的子节点必定以 11 / 12 / 21 / 22 11/12/21/22 11/12/21/22开头,滤掉以其他开头的
      TID \textbf{TID} TID当前事务表 T[2] \textbf{T[2]} T[2]滤后事务表 T[3] \textbf{T[3]} T[3]
      T1 \text{T1} T1 { 111,121,211,221 } \{\text{111,121,211,221}\} {111,121,211,221} { 111,121,211,221 } \{\text{111,121,211,221}\} {111,121,211,221}
      T2 \text{T2} T2 { 111,211,222 } \{\text{111,211,222}\} {111,211,222} { 111,211,222 } \{\text{111,211,222}\} {111,211,222}
      T3 \text{T3} T3 { 112,122,221 } \{\text{112,122,221}\} {112,122,221} { 112,122,221 } \{\text{112,122,221}\} {112,122,221}
      T4 \text{T4} T4 { 111,121 } \{\text{111,121}\} {111,121} { 111,121 } \{\text{111,121}\} {111,121}
      T5 \text{T5} T5 { 111,122,211,221 } \{\text{111,122,211,221}\} {111,122,211,221} { 111,122,211,221 } \{\text{111,122,211,221}\} {111,122,211,221}
      T6 \text{T6} T6 { 211 } \{\text{211}\} {211} { 211 } \{\text{211}\} {211}
      T7 \text{T7} T7 { ∅ } \{\varnothing\} {} { ∅ } \{\varnothing\} {}
  2. 主循环:当前为 L ( 2 , 1 ) L(2,1) L(2,1)
    • 组合: L ( 2 , 1 ) → 两两组合 C ( 2 , 2 ) = { {11*,12* } , { 11*,21* } . . . . . } L(2,1) \xrightarrow[]{\text{两两组合}} C(2,2) \text{=}\{\text{\{11*,12*}\},\{\text{11*,21*}\}.....\} L(2,1)两两组合 C(2,2)={{11*,12*},{11*,21*}.....}
    • 剪枝: C ( 2 , 2 ) → 依据 T[3] 减去包含非频繁子集的 L ( 2 , 2 ) = { { 11*, 12* } { 11*, 21* } { 11*, 22* } { 12*, 22* } { 21*, 22* } } C(2,2) \xrightarrow[]{\text{依据 T[3] 减去包含非频繁子集的}} L(2,2) \text{=} \left\{ \begin{array}{l} \{\text{11*, 12*}\} \\ \{\text{11*, 21*}\} \\ \{\text{11*, 22*}\} \\ \{\text{12*, 22*}\} \\ \{\text{21*, 22*}\} \end{array} \right\} C(2,2)依据 T[3] 减去包含非频繁子集的 L(2,2)= {11*, 12*}{11*, 21*}{11*, 22*}{12*, 22*}{21*, 22*}
  3. 主循环:当前为 L ( 2 , 2 ) L(2,2) L(2,2)
    • 组合: L ( 2 , 2 ) → 两两组合 C ( 2 , 3 ) = { {11*,12*,21* } , { 11 ∗ , 12 ∗ , 22 ∗ } . . . . . } L(2,2) \xrightarrow[]{\text{两两组合}} C(2,3) \text{=}\{\text{\{11*,12*,21*}\},\{11*,12*,22*\}.....\} L(2,2)两两组合 C(2,3)={{11*,12*,21*},{11,12,22}.....}
    • 剪枝: C ( 2 , 3 ) → 依据 T[3] 减去包含非频繁子集的 L ( 2 , 3 ) = { { 11*,12*,22* } , { 11*,21*,22* } } C(2,3) \xrightarrow[]{\text{依据 T[3] 减去包含非频繁子集的}} L(2,3) \text{=} \left\{ \begin{array}{l} \{\text{11*,12*,22*}\} , \{\text{11*,21*,22*}\} \end{array} \right\} C(2,3)依据 T[3] 减去包含非频繁子集的 L(2,3)={{11*,12*,22*},{11*,21*,22*}}
  4. 主循环:当前为 L ( 2 , 3 ) L(2,3) L(2,3)
    • 组合: L ( 2 , 3 ) → 两两组合 C ( 2 , 4 ) = { {11*,12*,21*,22* } } L(2,3) \xrightarrow[]{\text{两两组合}} C(2,4) \text{=}\{\text{\{11*,12*,21*,22*}\}\} L(2,3)两两组合 C(2,4)={{11*,12*,21*,22*}}
    • 剪枝: C ( 2 , 4 ) → 依据 T[3] 减去包含非频繁子集的 L ( 2 , 4 ) = ∅ →  C(2,4) \xrightarrow[]{\text{依据 T[3] 减去包含非频繁子集的}} L(2,4) \text{=}\varnothing\text{ → } C(2,4)依据 T[3] 减去包含非频繁子集的 L(2,4)= → 停止循环
  5. 输出:第二层频繁集 L ( 2 ) = { L ( 2 , 1 ) ∪ L ( 2 , 2 ) ∪ L ( 2 , 3 ) } L(2)\text{=}\{L(2,1)\text{∪}L(2,2)\text{∪}L(2,3)\} L(2)={L(2,1)L(2,2)L(2,3)};将滤后事务表 T[3] \text{T[3]} T[3]传到下一层
    image-20241117005904932

3️⃣底层的 Apriori \text{Apriori} Apriori算最小支持度为 3 3 3法:

  1. 初始化:
    • 初始频繁集: L ( 3 , 1 ) = { {111},{211},{221} } ⇐ 得到 L(3,1)\text{=}\{\text{\{111\},\{211\},\{221\}}\}\xLeftarrow{得到} L(3,1)={{111},{211},{221}}得到 筛选出 { i j k } \{ijk\text{}\} {ijk}中支持度大于 3 3 3
    • 事务表过滤:接下来只考虑 { {111},{211},{221} } \{\text{\{111\},\{211\},\{221\}}\} {{111},{211},{221}}中的,故滤掉其他的
      TID \textbf{TID} TID当前事务表 T[3] \textbf{T[3]} T[3]滤后事务表 T[4] \textbf{T[4]} T[4]
      T1 \text{T1} T1 { 111,121,211,221 } \{\text{111,121,211,221}\} {111,121,211,221} { 111,,211,221 } \{\text{111,,211,221}\} {111,,211,221}
      T2 \text{T2} T2 { 111,211,222 } \{\text{111,211,222}\} {111,211,222} { 111,211 } \{\text{111,211}\} {111,211}
      T3 \text{T3} T3 { 112,122,221 } \{\text{112,122,221}\} {112,122,221} { 221 } \{\text{221}\} {221}
      T4 \text{T4} T4 { 111,121 } \{\text{111,121}\} {111,121} { 111 } \{\text{111}\} {111}
      T5 \text{T5} T5 { 111,122,211,221 } \{\text{111,122,211,221}\} {111,122,211,221} { 111,211,221 } \{\text{111,211,221}\} {111,211,221}
      T6 \text{T6} T6 { 211 } \{\text{211}\} {211} { 211 } \{\text{211}\} {211}
      T7 \text{T7} T7 { ∅ } \{\varnothing\} {} { ∅ } \{\varnothing\} {}
  2. 主循环:当前为 L ( 3 , 1 ) L(3,1) L(3,1)
    • 组合: L ( 3 , 1 ) → 两两组合 C ( 3 , 2 ) = { {111,211 } , {111,221 } , {211,221 } } L(3,1) \xrightarrow[]{\text{两两组合}} C(3,2) \text{=}\{\text{\{111,211}\},\text{\{111,221}\},\text{\{211,221}\}\} L(3,1)两两组合 C(3,2)={{111,211},{111,221},{211,221}}
    • 剪枝: C ( 3 , 2 ) → 依据 T[4] 减去包含非频繁子集的 L ( 3 , 2 ) ={111,221 } →  C(3,2) \xrightarrow[]{\text{依据 T[4] 减去包含非频繁子集的}} L(3,2) \text{=}\text{\{111,221}\}\text{ → } C(3,2)依据 T[4] 减去包含非频繁子集的 L(3,2)={111,221} → 无法再组合(停止循环)
  3. 输出:第一层频繁集 L ( 1 ) = { {111},{211},{221} , {111,221 } } L(1)\text{=}\{\text{\{111\},\{211\},\{221\}},\text{\{111,221}\}\} L(1)={{111},{211},{221},{111,221}}

4. \textbf{4. } 4. 多维关联规则挖掘

1️⃣多维关联规则

  1. 含义:涉及两个或多个维或谓词的关联规则
  2. 示例:<Age: 30..39> and <Married: Yes> -> <NumCars: 2>
    RecordID Age Married NumCars 100 23 No 1 200 25 Yes 1 300 29 No 0 400 34 Yes 2 500 38 Yes 2 \small \begin{array}{|c|c|c|c|} \hline \text{RecordID} & \text{Age} & \text{Married} & \text{NumCars} \\ \hline 100 & 23 & \text{No} & 1 \\ \hline 200 & 25 & \text{Yes} & 1 \\ \hline 300 & 29 & \text{No} & 0 \\ \hline 400 & 34 & \text{Yes} & 2 \\ \hline 500 & 38 & \text{Yes} & 2 \\ \hline \end{array} RecordID100200300400500Age2325293438MarriedNoYesNoYesYesNumCars11022

2️⃣处理思路

  1. 处理对象:搜索频繁项集 → 转为 \xrightarrow{转为} 转为 搜索频繁谓词集
  2. 量化预处理:数值型关联规则挖掘 → 转化 \xrightarrow{转化} 转化 布尔型关联规则挖掘,如下例子
    RecordID Age Married NumCars 100 23 No 1 200 25 Yes 1 300 29 No 0 400 34 Yes 2 500 38 Yes 2 600 45 No 3 700 50 Yes 1 800 60 No 0 \small \begin{array}{|c|c|c|c|} \hline \text{RecordID} & \text{Age} & \text{Married} & \text{NumCars} \\ \hline 100 & 23 & \text{No} & 1 \\ \hline 200 & 25 & \text{Yes} & 1 \\ \hline 300 & 29 & \text{No} & 0 \\ \hline 400 & 34 & \text{Yes} & 2 \\ \hline 500 & 38 & \text{Yes} & 2 \\ \hline 600 & 45 & \text{No} & 3 \\ \hline 700 & 50 & \text{Yes} & 1 \\ \hline 800 & 60 & \text{No} & 0 \\ \hline \end{array} RecordID100200300400500600700800Age2325293438455060MarriedNoYesNoYesYesNoYesNoNumCars11022310

3️⃣处理算法: ARCS \text{ARCS} ARCS大致流程

  1. 分箱:根据数据的分布,将数值属性离散化到箱(固定区间)
  2. 搜索:找出频繁谓词集,得到一系列强关联规则(如下)
    • RuleSet = { age ( X , 35 ) ∧income ( X , 31 K … 40 K ) ⇒buys ( X , TV ) age ( X , 34 ) ∧income ( X , 41 K … 50 K ) ⇒buys ( X , TV ) age ( X , 35 ) ∧income ( X , 41 K … 50 K ) ⇒buys ( X , TV ) \text{RuleSet =}\begin{cases} \text{age}(X, 35) \text{∧} \text{income}(X, 31K \ldots 40K) \text{⇒} \text{buys}(X, \text{TV}) \\\\ \text{age}(X, 34) \text{∧} \text{income}(X, 41K \ldots 50K) \text{⇒} \text{buys}(X, \text{TV}) \\\\ \text{age}(X, 35) \text{∧} \text{income}(X, 41K \ldots 50K) \text{⇒} \text{buys}(X, \text{TV}) \end{cases} RuleSet = age(X,35)income(X,31K40K)buys(X,TV)age(X,34)income(X,41K50K)buys(X,TV)age(X,35)income(X,41K50K)buys(X,TV)
  3. 聚类:将所得强关联规则映射到 2 D 2D 2D栅格上,得到范围矩形
    image-20241117015014348
    • RuleSet→age ( X , 34 - 35 ) ∧income ( X , 31 K - 40 K ) ⇒buys ( X , TV ) \text{RuleSet}\text{→}\text{age}(X,34\text{-}35) \text{∧} \text{income}(X, 31K\text{-}40K) \text{⇒} \text{buys}(X, \text{TV}) RuleSetage(X,34-35)income(X,31K-40K)buys(X,TV)

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

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

相关文章

基于标签相关性的多标签学习

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

网站小程序app怎么查有没有备案?

网站小程序app怎么查有没有备案&#xff1f;只需要官方一个网址就可以&#xff0c;工信部备案查询官网地址有且只有一个&#xff0c;百度搜索 "ICP备案查询" 找到官方gov.cn网站即可查询&#xff01; 注&#xff1a;网站小程序app备案查询&#xff0c;可通过输入单位…

手撸 chatgpt 大模型:简述 LLM 的架构,算法和训练流程

本节我们自顶向下看看大模型的相关概念&#xff0c;了解其基本架构以及从零手撸大模型的基本流程。自从 openai 释放了 chatgpt 后&#xff0c;人工智能就立马进入了大模型时代&#xff0c;我还记得在此之前 NLP 的处理主要依赖于深度学习的 LSTM&#xff0c;GRU 等模型架构。这…

爬虫——JSON数据处理

第三节&#xff1a;JSON数据处理 在爬虫开发中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;是最常见的数据格式之一&#xff0c;特别是在从API或动态网页中抓取数据时。JSON格式因其结构简单、可读性强、易于与其他系统交互而广泛应用于前端与后端的数…

SpringBoot集成itext导出PDF

添加依赖 <!-- PDF导出 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency><groupId>com.itextpdf</groupId>&l…

【快速解决】kafka崩了,重启之后,想继续消费,怎么做?

目录 一、怎么寻找我们关心的主题在崩溃之前消费到了哪里&#xff1f; 1、一个问题&#xff1a; 2、查看消费者消费主题__consumer_offsets 3、一个重要前提&#xff1a;消费时要提交offset 二、指定 Offset 消费 假如遇到kafka崩了&#xff0c;你重启kafka之后&#xff0…

查询DBA_FREE_SPACE缓慢问题

这个是一个常见的问题&#xff0c;理论上应该也算是一个bug&#xff0c;在oracle10g&#xff0c;到19c&#xff0c;我都曾经遇到过&#xff1b;今天在给两套新建的19C RAC添加监控脚本时&#xff0c;又发现了这个问题&#xff0c;在这里记录一下。 Symptoms 环境&#xff1a;…

用OMS进行 OceanBase 租户间数据迁移的测评

基本概念 OceanBase迁移服务&#xff08;&#xff0c;简称OMS&#xff09;&#xff0c;可以让用户在同构或异构 RDBMS 与OceanBase 数据库之间进行数据交互&#xff0c;支持数据的在线迁移&#xff0c;以及实时增量同步的复制功能。 OMS 提供了可视化的集中管控平台&#xff…

IDEA一键部署SpringBoot项目到服务器

安装Alibaba Cloud Toolkit插件 配置部署环境 1&#xff1a;设置服务名称 2&#xff1a;选择文件上传的类型 3:选择打包之后的jar文件 4: 添加需要上传的服务器信息 5:需要上传到服务器的地址 输入绝对路径 6: 选择上传文件后执行的脚本 可以参考另一篇文章 Linux启…

渗透测试之信息收集 DNS主机发现探测方式NetBIOS 协议发现主机 以及相关PorCheck scanline工具的使用哟

目录 主机发现 利用NetBIOS 协议发现主机 利用TCP/UDP发现主机 PorCheck scanline 利用DNS协议发现主机 主机发现 信息收集中的一项重要工作是发现内网中的主机、数据库、IP段网络设备、安全设备等资产&#xff0c;以便于更快地获取更多权限和密码&#xff0c;更加接近红…

打造专业问答社区:Windows部署Apache Answer结合cpolar实现公网访问

文章目录 前言1. 本地安装Docker2. 本地部署Apache Answer2.1 设置语言选择简体中文2.2 配置数据库2.3 创建配置文件2.4 填写基本信息 3. 如何使用Apache Answer3.1 后台管理3.2 提问与回答3.3 查看主页回答情况 4. 公网远程访问本地 Apache Answer4.1 内网穿透工具安装4.2 创建…

基于java的医院门诊信息管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

67页PDF |埃森哲_XX集团信息发展规划IT治理优化方案(限免下载)

一、前言 这份报告是埃森哲_XX集团信息发展规划IT治理优化方案&#xff0c;报告中详细阐述了XX集团如何优化IT治理结构以适应新的要求。报告还分析了集团管控模式的变化&#xff0c;提出了六大业务中心的差异化管控策略&#xff0c;并探讨了这些变化对IT治理模式的影响。报告进…

【AI大模型】ELMo模型介绍:深度理解语言模型的嵌入艺术

学习目标 了解什么是ELMo.掌握ELMo的架构.掌握ELMo的预训练任务.了解ELMo的效果和成绩.了解ELMo的优缺点. 目录 &#x1f354; ELMo简介 &#x1f354; ELMo的架构 2.1 总体架构 2.2 Embedding模块 2.3 两部分的双层LSTM模块 2.4 词向量表征模块 &#x1f354; ELMo的预…

【srm,招标询价】采购电子化全流程,供应商准入审核,在线询价流程管理(JAVA+Vue+mysql)

前言&#xff1a; 随着互联网和数字技术的不断发展&#xff0c;企业采购管理逐渐走向数字化和智能化。数字化采购平台作为企业采购管理的新模式&#xff0c;能够提高采购效率、降低采购成本、优化供应商合作效率&#xff0c;已成为企业实现效益提升的关键手段。系统获取在文末…

优选算法 - 4 ( 链表 哈希表 字符串 9000 字详解 )

一&#xff1a;链表 1.1 链表常用技巧和操作总结 1.2 两数相加 题目链接&#xff1a;两数相加 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* …

小鸡模拟器 1.8.11 | 街机怀旧重温经典游戏,支持手柄

小鸡模拟器是一款支持多种经典游戏机模拟的游戏应用&#xff0c;包括街机、索尼(SONY)、世嘉、任天堂等主流掌机游戏以及PSP、GBA、NDS、SFC(超级任天堂SNES)、FC(红白机NES)、MD(世嘉MEGA DRIVE)、PS1、PS2等。应用支持手柄完美操作&#xff0c;兼容安卓手柄&#xff0c;让玩家…

用go语言后端开发速查

文章目录 一、发送请求和接收请求示例1.1 发送请求1.2 接收请求 二、发送form-data格式的数据示例 用go语言发送请求和接收请求的快速参考 一、发送请求和接收请求示例 1.1 发送请求 package mainimport ("bytes""encoding/json""fmt""ne…

针对股票评论的情感分类器

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月16日13点39分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…

Transformer学习笔记(一)

Transformer学习笔记 基于 3B1B 可视化视频 自注意力机制 1.每个词的初始嵌入是一个高维向量&#xff0c;只编码该单词含义&#xff0c;与上下文没有关联 2.对初始向量进行位置编码&#xff0c;在高维向量中编码进位置信息&#xff08;单词在语言序列中的位置信息&#xff…