Top-k高效用项集挖掘_学习笔记(三) TKO
前言
本篇博客出于学习交流目的,主要是用来记录自己学习后的理解,过程中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!
REMARK:本人菜鸟一枚,如有理解错误还望大家能够指出,相互交流。也是第一次以博客的形式记录,文笔烂到自己都看不下去,哈哈哈
这篇学习笔记关于一种高效Top-k的频繁效用项集挖掘算法。
参考文献:Efficient Algorithms for Mining Top-K High Utility Itemsets
本篇博客介绍论文中的第二种 one-phase算法TKO,一些必要的基础概念和定义在Top-k高效用项集挖掘学习笔记(一) 基础概念中给出,另一种 two-phase 算法在 Top-k高效用项集挖掘学习笔记(二) TKU 中详细记录,请手动跳转。
正文
TKO算法是这篇文章提出的第二种算法,他只需要一个过程就可以得到结果。这个算法基于HUI-Miner算法以及它的utility-list 结构,TKO的项集从这个utility-list中生成而不扫描原始数据库。本篇结构还是先说基础算法 TKOBase T K O B a s e TKO_{Base},然后再说最终版本,即在基础算法上加优化策略。(算法中包括 RUC、RUZ、EPB R U C 、 R U Z 、 E P B RUC、RUZ、EPB优化策略)
utility-list 结构
开始算法前,先简单了解一下utility-list 结构。
项的utility-list 被称作 initial utility-lists,可以通过扫描两次数据库得到。第一次遍历时计算项的TWU值和效用值;第二次扫描数据库时每个交易记录中的项按TWU值大小排序,并且每个项的 utility-list 被创建。
如表7所示,即交易记录中item按TWU值从小到大排序后的结果。
Fig.4展示了各项的utility-lists。每个item都由一个或多个元组组成,即有哪些交易记录包含这些项;元组由三部分组成(Tid,内部效用值iutil,剩余效用值rutil);剩余效用值就是这个item后面的效用值之和,具体看下面的定义。
Definition 17. 前驱和后继(Precede and succeed):
按照TWU值从小到大排列项, Ii≺Ij I i ≺ I j I_{i}\prec I_{j}表示 Ii I i I_{i}在 Ij I j I_{j}之前,即前驱,当且仅当 TWU(Ii) T W U ( I i ) TWU\left ( I_{i}\right )大于或等于 TWU(Ij) T W U ( I j ) TWU\left ( I_{j}\right ),并且 Ii I i I_{i}按字典序比 Ij I j I_{j}小;否则称为后继,记作 Ii≻Ij I i ≻ I j I_{i} \succ I_{j} (原文符号标记好像有误)。
Definition 18. 项集的级联(Concatenation of an itemset):
有两个项集 X={x1,x2,⋯,xu}(xi∈I∗,1≤i≤u) X = { x 1 , x 2 , ⋯ , x u } ( x i ∈ I ∗ , 1 ≤ i ≤ u ) X=\left \{ x_{1},x_{2}, \cdots ,x_{u}\right \}\left ( x_{i}\in I^{*},1\leq i\leq u \right ) 和 Y={y1,y2,⋯,yv}(yj∈I∗,1≤j≤v) Y = { y 1 , y 2 , ⋯ , y v } ( y j ∈ I ∗ , 1 ≤ j ≤ v ) Y=\left \{ y_{1},y_{2}, \cdots ,y_{v}\right \}\left ( y_{j}\in I^{*},1\leq j\leq v \right ),当且仅当 X⊂Y X ⊂ Y X\subset Y并且 Y Y Y的每个 item yi∉X" role="presentation" style="position: relative;">yi∉Xyi∉Xy_{i}\notin X都是X所有 item 的后继, Y Y Y称为X" role="presentation" style="position: relative;">XXX的级联。
Definition 19. (Appear after):
给定优先集合 I∗={I1,I2,⋯,Im} I ∗ = { I 1 , I 2 , ⋯ , I m } I^{*}=\left \{ I_{1}, I_{2},\cdots ,I_{m}\right \},和顺序 I1≺I2≺⋯≺Im I 1 ≺ I 2 ≺ ⋯ ≺ I m I_{1}\prec I_{2} \prec\cdots \prec I_{m} ;假设项集和交易记录中的项都按这个顺序排序好了,在一个交易记录 Tr T r T_{r}中,一个项 Ij∈I∗ I j ∈ I ∗ I_{j}\in I^{*}在项集 X={x1,x2,⋯,xL} X = { x 1 , x 2 , ⋯ , x L } X=\left \{ x_{1},x_{2}, \cdots ,x_{L}\right \}之后发生,当且仅当 Ij∈Tr I j ∈ T r I_{j}\in T_{r}并且 x1≺x2≺⋯≺xL≺Ij x 1 ≺ x 2 ≺ ⋯ ≺ x L ≺ I j x_{1}\prec x_{2} \prec\cdots \prec x_{L} \prec I_{j} ; Tr T r T_{r}中所有出现在 X X X之后的项集记作Tr/X" role="presentation" style="position: relative;">Tr/XTr/XT_{r}/X。
Definition 20. 交易记录剩余效用值(Remaining utility of an itemset in a transaction): RU(X,Tr) R U ( X , T r ) RU\left ( X,T_{r} \right )
RU\left ( X,T_{r} \right )=\sum _{I_{i}\in T_{r}/X}EU\left ( I_{i}, T_{r} \right )
Definition 21. 数据库中的剩余效用值(Remaining utility of an itemset in a database): RU(X) R U ( X ) RU\left ( X \right )
RU\left ( X \right )=\sum _{T_{r}\in D}RU\left ( X,T_{r} \right )
Definition 22. 效用列表结构(Utility-list structure): ul(X) u l ( X ) ul\left ( X \right )
项集X的Utility-list记作 ul(X) u l ( X ) ul\left ( X \right ),里头存着若干三元组,有几个交易记录包含该项集就有几个元组,每个元组 ⟨r,EU(X,Tr),RU(X,Tr)⟩ ⟨ r , E U ( X , T r ) , R U ( X , T r ) ⟩ \left \langle r,EU\left ( X,T_{r} \right ),RU\left ( X,T_{r} \right ) \right \rangle,即交易记录的序号,X在交易记录上的效用值,X在交易记录上的剩余效用值。
以表7的数据集为例, {D} { D } \left \{ D \right \}在 T1 T 1 T_{1}上的剩余效用值 RU({D},T1)=EU({A},T1)+EU({C},T1) R U ( { D } , T 1 ) = E U ( { A } , T 1 ) + E U ( { C } , T 1 ) RU\left ( \left \{ D \right \},T_{1} \right )=EU\left ( \left \{ A \right \}, T_{1} \right )+EU\left ( \left \{ C \right \}, T_{1} \right ); {D} { D } \left \{ D \right \}在整个数据集上的剩余效用值 RU({D})=RU({D},T1)+RU({D},T3)+RU({D},T4)=(6+13+14)=33 R U ( { D } ) = R U ( { D } , T 1 ) + R U ( { D } , T 3 ) + R U ( { D } , T 4 ) = ( 6 + 13 + 14 ) = 33 RU\left ( \left \{ D \right \}\right )=RU\left ( \left \{ D \right \},T_{1} \right )+RU\left ( \left \{ D \right \},T_{3} \right )+RU\left ( \left \{ D \right \},T_{4} \right )=(6+13+14)=33; {DE} { D E } \left \{ DE \right \}在整个数据集上的剩余效用值 RU({DE})=RU({DE},T3)+RU({DE},T4)=(1+3)=4 R U ( { D E } ) = R U ( { D E } , T 3 ) + R U ( { D E } , T 4 ) = ( 1 + 3 ) = 4 RU\left ( \left \{ DE \right \}\right )=RU\left ( \left \{ DE \right \},T_{3} \right )+RU\left ( \left \{ DE \right \},T_{4} \right )=(1+3)=4。
Property 4.在项集X的Utility-list中,所有元组第二列( iutil i u t i l iutil)的结果相加即X的效用值。
Property 5.有项集 X X X和级联项集Y⊃X" role="presentation" style="position: relative;">Y⊃XY⊃XY\supset X,如果把元组第二列( iutil i u t i l iutil)和第三列( rutil r u t i l rutil)全部求和的效用值小于阈值 δ δ \delta ,那么 Y Y Y的效用值也小于δ" role="presentation" style="position: relative;">δδ\delta 。
Y Y Y是X" role="presentation" style="position: relative;">XXX级联,根据定义18, Y Y Y中多的项一定排在X" role="presentation" style="position: relative;">XXX之后,而 X X X的iutil" role="presentation" style="position: relative;">iutiliutiliutil和 rutil r u t i l rutil的累加和一定大于等于 Y Y Y的iutil" role="presentation" style="position: relative;">iutiliutiliutil和 rutil r u t i l rutil的累加和,根据 Property 4 P r o p e r t y 4 Property \ 4所以一定大于Y的效用值。
TKOBase T K O B a s e TKO_{Base}算法——基础算法
TKOBase T K O B a s e TKO_{Base}输入参数k和一个数据集 D D \mathcal{D}; TKOBase T K O B a s e TKO_{Base}开始时设置 min_utilBorder=0 m i n _ u t i l B o r d e r = 0 min\_util_{Border}=0,并且创建一个小堆结构 TopK−CI−List T o p K − C I − L i s t TopK-CI-List来存储过程中的top-k HUIs H U I s HUIs;算法扫描两边数据库创建initial utility-lists ϕ−ULs ϕ − U L s \phi -ULs;然后用Topk-HUI-Search 算法(基于结合RUC:Raising threshold byUtility of Candidates和HUI-Miner算法,出自参考论文14)去挖掘搜索空间中的top-k HUI;算法不断更新 TopK−CI−List T o p K − C I − L i s t TopK-CI-List中的top-k HUIs H U I s HUIs,并利用列表中的信息更新 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border};算法结束时, TopK−CI−List T o p K − C I − L i s t TopK-CI-List中保存的即为top-k HUIs H U I s HUIs完整解集。
对于每个搜索过程产生的L-项集 X={x1,x2,⋯,xL} X = { x 1 , x 2 , ⋯ , x L } X=\left \{ x_{1},x_{2},\cdots ,x_{L} \right \},如果都不小于 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border},那么利用RUC策略来更新 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border}的值。RUC就是把X加入 TopK−CI−List T o p K − C I − L i s t TopK-CI-List中,然后 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border}更新为第k大EU值项集的阈值,把低于 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border}的项集从 TopK−CI−List T o p K − C I − L i s t TopK-CI-List中删去,保证 TopK−CI−List T o p K − C I − L i s t TopK-CI-List中只有top-k个。
算法伪代码如下图所示:
比较项集 X X X的iutil" role="presentation" style="position: relative;">iutiliutiliutil和 rutil r u t i l rutil的累加和与 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border}大小,利用Property 5剪枝(第六行); Class[X] C l a s s [ X ] Class\left [ X \right ]和 ULS[X] U L S [ X ] ULS\left [ X \right ]分别储存项集级联以及他们的 utility-lists(第七行);候选项集 Z=X∪Y Z = X ∪ Y Z=X\cup Y,并创建Z的utility-lists ul(Z) u l ( Z ) ul\left ( Z \right ),之后就是不断迭代的过程,直到没有候选项集生成时停止。
策略6:RUC(Raising the threshold by the Utilities of Can-didates)
这个策略可以用于任何one-phace依赖效用值建立的算法。该策略用 TopK−CI−List T o p K − C I − L i s t TopK-CI-List结构保存top-k HUIs H U I s HUIs,并把项集按降序排列。最初 TopK−CI−List T o p K − C I − L i s t TopK-CI-List为空,把新项集X加入 TopK−CI−List T o p K − C I − L i s t TopK-CI-List中,然后 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border}更新为第k大EU值项集的阈值,把低于 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border}的项集从 TopK−CI−List T o p K − C I − L i s t TopK-CI-List中删去,保证 TopK−CI−List T o p K − C I − L i s t TopK-CI-List中只有top-k个。
当给定两个项集 X X X和Y" role="presentation" style="position: relative;">YYY以及他们的前缀 P P P,在Topk-HUI-Search 算法过程中,项集Z=X∪Y" role="presentation" style="position: relative;">Z=X∪YZ=X∪YZ=X\cup Y的utility-lists ul(Z) u l ( Z ) ul\left ( Z \right )由下结构过程生成,其中包括两种情况:
CAES1:假设有一项集 X={x1} X = { x 1 } X=\left \{ x_{1} \right \}和 Y={y1} Y = { y 1 } Y=\left \{ y_{1} \right \},并且 x1≺y1 x 1 ≺ y 1 x_{1}\prec y_{1}。让 Z=X∪Y={x1,y1} Z = X ∪ Y = { x 1 , y 1 } Z=X\cup Y=\left \{ x_{1} ,y_{1} \right \}是由X级联 y1 y 1 y_{1} 生成的二项集。utility-lists ul(X) u l ( X ) ul\left ( X \right )和utility-lists ul(Y) u l ( Y ) ul\left ( Y \right )初始化的时候就被创建了,而utility-lists ul(Z) u l ( Z ) ul\left ( Z \right )是通过下面的方法得到。包含项集Z的交易记录记为 Tr T r T_{r},在utility-lists ul(Z) u l ( Z ) ul\left ( Z \right )中创建元组 ⟨Tr,EU(Z,Tr),RU(Z,Tr)⟩ ⟨ T r , E U ( Z , T r ) , R U ( Z , T r ) ⟩ \left \langle T_{r},EU\left ( Z,T_{r} \right ),RU\left ( Z,T_{r} \right ) \right \rangle,其中 EU(Z,Tr)=EU(x1,Tr)+EU(y1,Tr) E U ( Z , T r ) = E U ( x 1 , T r ) + E U ( y 1 , T r ) EU\left ( Z,T_{r} \right )=EU\left ( x_{1} ,T_{r} \right )+EU\left ( y_{1},T_{r} \right ), RU(Z,Tr)=EU(y1,Tr) R U ( Z , T r ) = E U ( y 1 , T r ) RU\left ( Z,T_{r} \right )=EU\left ( y_{1},T_{r} \right )
CAES2:假设有L-1项集 X={x1,x2,⋯,xL−1} X = { x 1 , x 2 , ⋯ , x L − 1 } X=\left \{ x_{1},x_{2},\cdots ,x_{L-1} \right \}和 Y={y1,y2,⋯,yL−1} Y = { y 1 , y 2 , ⋯ , y L − 1 } Y=\left \{ y_{1},y_{2},\cdots ,y_{L-1} \right \}( L≥2 L ≥ 2 L\geq 2),有 xi=yi(1≤i≤L−1) x i = y i ( 1 ≤ i ≤ L − 1 ) x_{i}=y_{i} \left ( 1\leq i\leq L-1 \right )以及 xL−1≺yL−1 x L − 1 ≺ y L − 1 x_{L-1}\prec y_{L-1}。让 Z=X∪Y={x1,x2,⋯,xL−1,yL−1} Z = X ∪ Y = { x 1 , x 2 , ⋯ , x L − 1 , y L − 1 } Z=X\cup Y=\left \{ x_{1},x_{2},\cdots ,x_{L-1} ,y_{L-1} \right \}是由X级联 yL−1 y L − 1 y_{L-1} 生成的L项集;让 P=X∩Y={x1,x2,⋯,xL−2} P = X ∩ Y = { x 1 , x 2 , ⋯ , x L − 2 } P=X\cap Y=\left \{ x_{1},x_{2},\cdots ,x_{L-2} \right \}是 X X X和Y" role="presentation" style="position: relative;">YYY的共同前缀,给出utility-lists ul(X) u l ( X ) ul\left ( X \right ), ul(Y) u l ( Y ) ul\left ( Y \right )和 ul(P) u l ( P ) ul\left (P \right ),而utility-lists ul(Z) u l ( Z ) ul\left ( Z \right )是通过下面的方法得到。
包含项集Z的交易记录记为 Tr T r T_{r},在utility-lists ul(Z) u l ( Z ) ul\left ( Z \right )中创建元组 ⟨Tr,EU(Z,Tr),RU(Z,Tr)⟩ ⟨ T r , E U ( Z , T r ) , R U ( Z , T r ) ⟩ \left \langle T_{r},EU\left ( Z,T_{r} \right ),RU\left ( Z,T_{r} \right ) \right \rangle,其中 EU(Z,Tr)=[EU(X,Tr)+EU(Y,Tr)]−EU(P,Tr) E U ( Z , T r ) = [ E U ( X , T r ) + E U ( Y , T r ) ] − E U ( P , T r ) EU\left ( Z,T_{r} \right )=\left [ EU \left ( X,T_{r} \right ) +EU\left ( Y,T_{r} \right ) \right ]-EU\left ( P,T_{r} \right ), RU(Z,Tr)=EU(Y,Tr) R U ( Z , T r ) = E U ( Y , T r ) RU\left ( Z,T_{r} \right )=EU\left ( Y,T_{r} \right )。
TKO T K O TKO算法——最终算法
将给出四种改进策略用于 TKOBase T K O B a s e TKO_{Base}算法就是 TKO T K O TKO算法,前两种是PE和DGU,这两个在前一个算法里以及说明了。下面说另外两种改进策略。
Definition 23. (Z-element):当一个元素的剩余效用值是0的时候被称为Z-element,否则被称为NZ-element。在X的效用列表中的所有Z-element集合记作 ZE(X) Z E ( X ) ZE\left ( X \right )。
例如, {DBC} { D B C } \left \{ DBC \right \}有两个Z-element, ZE({DBC})={⟨T3,17,0⟩,⟨T4,17,0⟩} Z E ( { D B C } ) = { ⟨ T 3 , 17 , 0 ⟩ , ⟨ T 4 , 17 , 0 ⟩ } ZE\left ( \left \{ DBC \right \} \right )=\left \{ \left \langle T_{3},17,0 \right \rangle ,\left \langle T_{4},17,0 \right \rangle\right \}。
Property 6. NZEU(X) N Z E U ( X ) NZEU\left ( X \right )是项集 X X X的所有NZ-element的第二列(iutil)的和,如果[NZEU(X)+RU(X)]<min_utilBorder" role="presentation" style="position: relative;">[NZEU(X)+RU(X)]<min_utilBorder[NZEU(X)+RU(X)]<min_utilBorder\left [ NZEU\left ( X \right )+RU\left ( X \right ) \right ],那么所有项集 X X X的级联都不是top-k HUIs。
策略7:RUZ(Reducing estimated utility values by using Z-elements)
该策略用在用于Topk-HUI-Search 算法生成候选项集过程中,根据Property 6,我们没必要生成[NZEU(X)+RU(X)]" role="presentation" style="position: relative;">[NZEU(X)+RU(X)][NZEU(X)+RU(X)]\left [ NZEU\left ( X \right )+RU\left ( X \right ) \right ] 小于 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border}的项。
策略8:EPB(Exploring the most Promising Branches first)
该策略的目标是优先生成那些高效用值的候选项集,利用思想总是先扩展拥有最高预计效用值的项,这样更可能得到高效用值,因为这样可以更早的提早 min_utilBorder m i n _ u t i l B o r d e r min\_util_{Border},就可以剪枝更多的搜索空间。
总结
作者在多个不同稀疏程度的数据集上作了对比,对比 TKO T K O TKO和 TKU T K U TKU算法,总体上TKO} TKO} TKO}效果要好,包括内存消耗和速度上,因为 TKO T K O TKO是one-phace算法,具体详细对比可以看原文。
这篇文章看起来内容很多,但是如果把定义都理解清楚还是容易看懂的,最后几乎快变成翻译这篇论文了,不过我已经尽量简化一些复杂的定义和理解了。作为一个记录吧,希望以后自己再看起来方便回顾。
Top-k高效用项集挖掘_学习笔记(三) TKO相关推荐
- db4o_8.0对象数据库官方文档翻译_学习笔记三
紧接上篇:db4o_8.0对象数据库官方文档翻译_学习笔记二 3. Object Manager Enterprise Overview(OME视图)即OME插件的使用 If you did not ...
- K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程
K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...
- 韩顺平php可爱屋源码_韩顺平_php从入门到精通_视频教程_第20讲_仿sohu主页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理...
韩顺平_php从入门到精通_视频教程_第20讲_仿sohu首页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理 对sohu页面的分析 注释很重要 经验:写一点,测试一点,这是一个很好的方法. ...
- 图论01.最短路专题_学习笔记+模板
图论01.最短路专题_学习笔记+模板 一.定义与性质 ● 需要的前导知识点 路径 最短路 有向图中的最短路.无向图中的最短路 单源最短路.每对结点之间的最短路 ● 最短路的性质 对于边权为正的图,任意 ...
- DHCP服务_学习笔记
DHCP服务_学习笔记 DHCP(Dynamic Host Configuration Protocol):动态主机配置协议 Lease:租约 续租时间需要是租期时间的一半 UDP协议: Ser ...
- 友盟统计+渠道包_学习笔记
友盟统计+渠道包_学习笔记 资料: 官网:https://developer.umeng.com/docs/66632/detail/66889#h3-u5E38u89C1u95EEu9898 视频资 ...
- Dr_can Kalman Filter学习笔记(三)
Dr_can Kalman Filter学习笔记(三) 本文学习自Dr_can卡尔曼滤波关于Kalman Gain的推导 本文对卡尔曼增益进行一个详细的推导. 一.问题引入 在笔记二中我们得到了状态空 ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
- Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装
扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...
最新文章
- 函数调用栈 剖析+图解
- boost::allocator_construct的实例
- 神舟六号的投入产出比:1比12
- 查看python版本和安装路径
- SAP UI5 jQuery.sap.includeStyleSheet
- copy-maven-plugin - where is it configured - Maven原理探究
- java ranger rest_kafka ranger integration issuse
- MyBatis第3天
- 前景检测算法(四)--GMM
- html自动留言,html 留言板
- QTP教程入门到高级(转)
- 第二次作业(个人作业):软件案例分析
- 光伏行业MES管理系统解决方案
- 多功能科学计算机.,科学计算器多功能版
- OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢
- 跨考计算机日程记录01
- FlyThings OS:基于Linux实现现代化人机交互体验的新嵌入式操作系统
- 某程序员发现 CSDN官方“漏洞”,立省¥10000+,抓紧薅吧
- 实习第一天——网宿报到日
- 信息系统项目管理师 第三章-项目立项管理
热门文章
- 教你设置晨曦记账本登录加载本月账目,及时间显示模式
- 英属哥伦比亚大学计算机科学,英属哥伦比亚大学_University of British Columbia_学校介绍_专业设置...
- c 语言中双向链表逆转编程题,C/C++ 双链表之逆序的实例详解
- 2013 AMC8中文
- 开始菜单下运行框命令大全
- 跑跑卡丁车卡密自动充值工具
- 6-1 安全产品防火墙(完)
- Shader 轮廓线(描边)总结
- U盘误格式化后恢复操作
- 机器学习——朴素贝叶斯算法