本篇博客出于学习交流目的,主要是用来记录自己学习后的理解,过程中遇到的问题和心路历程,方便之后回顾。过程中可能引用其他大牛的博客,文末会给出相应链接,侵删!
REMARK:本人菜鸟一枚,如有理解错误还望大家能够指出,相互交流。也是第一次以博客的形式记录,文笔烂到自己都看不下去,哈哈哈
这篇学习笔记关于一种高效Top-k的频繁效用项集挖掘算法。
参考文献:Efficient Algorithms for Mining Top-K High Utility Itemsets
本博客介绍一些高效用频繁模式挖掘以及传统高效用top-k挖掘的基本概念,具体算法在Top-k高效用项集挖掘学习笔记(二) TKU,Top-k高效用项集挖掘学习笔记(三) TKO 中详细记录,请手动跳转。
Top-k挖掘算法研究意义:解决传统高效用模式频繁项集挖掘需要人为设置阈值的问题,太大或太小的阈值都不好,而重复计算不同阈值结果又造成多次无用重复执行。
一些可能会涉及到的定义:
高效用项集 (HUI):high utility itemset ,如果一个项集不小于用户自定义的最小效用阈值;
有价值的交易效用 (TWU):transaction-weighted utilization,一种高效用频繁挖掘模型,也作项集的效用值上界值;
高价值的交易效用项集 (HTWUI):high transaction-weighted utilization itemset ,TWU中效用值大于阈值的项集,由于TWU是效用值上界,所以HTWUI一定包含HUI;
传统基于TWU的模型,包含两个步骤,phase I :获得所有HTWUI集合(由于TWU是效用值上界,所以HTWUI一定包含HUI);phase II:再基于HTWUI集合具体计算获得HUI;
Top-k高效用项集挖掘即在考虑效用值场景下进行Top-k挖掘。
Top-k高效用项集挖掘面临的主要挑战:
1)高效用项集不具有单调性或反单调性,所以剪枝是很有难度的;
2)怎么结合现有TWU算法和top-k概念。因为在phase I 时候如果确保所有HTWUI一定包含HUI,起始设置最小阈值为0,但这可能会带来一个很大的搜索空间;
3)没有给定的阈值,随着算法的进行不断更新边界阈值, min_utilBorder m i n _ u t i l B o r d e r (border minimum utility threshold), min_utilBorder m i n _ u t i l B o r d e r 最初为0,如果不能高效的更新将面临巨大的计算时间和存储开销;
4)如何在不丢失Top-k HUIs 的情况下高效的增大阈值 min_utilBorder m i n _ u t i l B o r d e r
论文中提出了两种算法:
(1)TKU (mining Top-K Utility itemsets) ;在Top-k高效用项集挖掘_学习笔记(二) TKU会介绍,其中还包括五种优化策略:PE、NU、MD、MC、SE
(2)TKO (mining Top-K utility itemsets in One phase) ;Top-k高效用项集挖掘_学习笔记(三) TKO 中介绍,还包括三个剪枝策略:RUC、RUZ、EPB;请手动跳转。
在开始正式算法之前,还是先看一堆枯燥的定义,我也很绝望,不过后面一直要用到,所以必须认真理解!!!大部分是我按自己的理解解释的,英语原版看原始论文。
高效用项集基本定义
总项集(distinct items) I∗={I1,I2,⋯,Im} I ∗ = { I 1 , I 2 , ⋯ , I m } ;事务数据集(transactional database) D={T1,T2,⋯,Tm} D = { T 1 , T 2 , ⋯ , T m } ;交易记录 Tr∈D T r ∈ D 是 I∗ I ∗ 的子集, r r 是 Tid T i d ;并且对于每个 Ij∈Tr I j ∈ T r 都有一个内部效用值 Q(Ij,Tr) Q ( I j , T r ) ,同时对于每个 Ij∈I∗ I j ∈ I ∗ 都有一个外部效用值 P(Ij,D) P ( I j , D ) ;一个项集 X={I1,I2,⋯,IL} X = { I 1 , I 2 , ⋯ , I L } 共有 L L 个不同的项, L L 也称作项集 X X 的长度; L−itemset L − i t e m s e t 表示项集长度为 L L 。
Definition 1. 项的绝对效用值(Absolute utility of an item): EU(Ij,Tr) E U ( I j , T r )
Definition 2. 一条交易中某个项集的绝对效用值(Absolute utility of an itemset in a transaction): EU(X,Tr) E U ( X , T r )
Definition 3. 项集在整个数据集中的绝对效用值(Absolute utility of an itemset in a database): EU(X) E U ( X )
Definition 4. 交易效用值和总效用值(Transaction utility and total utility): TU(Tr) T U ( T r ) and TotalUDB T o t a l U D B
Definition 5. 项集在整个数据集中的相对效用(Utility of an itemset in a database): U(X) U ( X )
Definition 6. 高效用项集(High utility itemset): HUI H U I
项集 X X 被称为高效用项集,当且仅当 U(X)≥min_util U ( X ) ≥ m i n _ u t i l ,或 EU(X)≥abs_min_util E U ( X ) ≥ a b s _ m i n _ u t i l , abs_min_util=min_util×TotalUDB a b s _ m i n _ u t i l = m i n _ u t i l × T o t a l U D B 。
Definition 7. 高效用项集挖掘(High utility itemset mining):
设置参数 δ(0%≤δ≤100%) δ ( 0 % ≤ δ ≤ 100 % ) 为最小效用阈值,数据集 D D 中完整集合 HUIs H U I s 用 fHUI(D,δ) f H U I ( D , δ ) 表示。HUI挖掘的目标就是挖掘 fHUI(D,δ) f H U I ( D , δ ) 。
表1和表2分别给出了交易数据集和项对应的外部效值,根据上诉的定义,如果这设置 abs_min_util=30 a b s _ m i n _ u t i l = 30 ,我们能够计算得到HUIs完整集合为:
{{BD}:30,{ACE}:31,{BCD}:34,{BCE}:31,{BDE}:36,{BCDE}:40,{ABCDEF}:30} { { B D } : 30 , { A C E } : 31 , { B C D } : 34 , { B C E } : 31 , { B D E } : 36 , { B C D E } : 40 , { A B C D E F } : 30 }
由于考虑效用值后,项集与其超集之间不存在直接的单调性或反单调性,所以只能通过不断缩小搜索空间来剪枝。 transaction−weighted downward closure property t r a n s a c t i o n − w e i g h t e d d o w n w a r d c l o s u r e p r o p e r t y (TWDC property) 这个策略基于以下的定义可以实现,对!又是定义!
Definition 8. 有价值的交易效用值(Transaction-weighted utilization): TWU(X) T W U ( X )
Definition 9. TWU值高的项 (High TWU itemset):
如果项 X X 满足 TWU(X)≥abs_min_util T W U ( X ) ≥ a b s _ m i n _ u t i l ,则 X X 是TWU值高的项。
Property 1 (TWDC property): transaction−weighted downward closure property t r a n s a c t i o n − w e i g h t e d d o w n w a r d c l o s u r e p r o p e r t y ,如果项 X X 不是高TWU值得项,那么 X X 对应的所有超集的效用值都低。
这个挺好理解的,原文给出了数学证明,有兴趣可以看,只要思想就是包含超集的项一定包含 X X ,所以超集的TWU肯定不大于 X X 的TWU,而超集EU值又不大于TWU值,所以超级的EU肯定也小于阈值。
Definition 10. Top-k高效用项集(Top-k high utility itemset): top−k HUI t o p − k H U I
项 X X 是Top-k高效用项集,当且仅当存在少于K个项集的效用值大于 EU(X) E U ( X ) 在过程 fHUI(D,0) f H U I ( D , 0 ) 中。
Property 2:设 D D 中的完整 top−k HUIs t o p − k H U I s 集合为 KH K H , KH K H 可能包含项集小于k个,当 |fHUI(D,0)|≤k | f H U I ( D , 0 ) | ≤ k ,也有可能大于k个项集,因为可能有些项集具有同样的效用值。
Definition 11. 优化的最小效用阈值(Optimal minimum utility threshold): δ∗ δ ∗
参数 δ∗ δ ∗ 成为优化的最小效用阈值,当且仅当不存在阈值 δ>δ∗ δ > δ ∗ 使得 |fHUI(D,δ)|=|KH| | f H U I ( D , δ ) | = | K H | ;或者也可以认为 δ∗=min{U(X)|X∈KH} δ ∗ = m i n { U ( X ) | X ∈ K H } 。也就是当前KH中 X X 最小的效用值。
Problem Statement:
给定一个交易数据库 D D 和想要挖掘出 HIUs H I U s 的数目 k k ,等价于发现那些在 D D 中拥有效用值大于 δ∗ δ ∗ 的项集集合。
相关工作
高效用项集挖掘
创建的有两类,一类是two-phase:包括两个步骤,第一步获取候选项集,第二步计算实际高效用项集。常见算法有 IHUP、IIDS、UP−Growth I H U P 、 I I D S 、 U P − G r o w t h (这个目前最优,并且在第一阶段有四个优化策略,DGU、DGN、DLU、DLN,本篇TKU的基础);另一类是one-phase:不生成候选项集,直接生成最终高效用序列。常见的算法有 d2HUP、HUM−Miner d 2 H U P 、 H U M − M i n e r (用了 utility−lists u t i l i t y − l i s t s 结构本篇TKO的基础)。
Top-k项集挖掘
这个就是传统的了,但是都没有考虑效用值。
Top-k高效用项集挖掘
最先提出这个概念的是Chan,但是没有考虑定量的项,和这篇论文的概念有些不一样;Zihayat提出T-HUDS用于挖掘流数据的top-k HUIs;还有一些人的工作,对理解本篇论文没什么用,就不介绍了。
这篇博客主要是一些概念,为了方便理解后面的TKU算法和TKO算法,具体算法请手动跳转。