ULB-Miner算法

617

写在前面:HUI-Miner 是第一个 utility-list based 算法,也是第一个 “one-phase” 类算法,它在原数据集上进行挖掘,进而保证所有生成的项集都是在原数据集中出现过的。此外, utility-list 结构能够对关键信息进行压缩处理,使得算法能够提前剪枝,达到减少 candidates 的目的。目前,有不少学者在继续对 HUI-Miner 算法进行研究,提出各种方法来进一步提高其挖掘效率。———— By Suarne

Efficient high utility itemset mining using buffered utility-lists

动机

由于 HUI-Miner 算法本身是通过取两个不同的 utility-lists 相交得到新的高阶项集的 utility-list,所以要将所有同一阶层的 lists 一直保留到无法生成新的高阶 lists 才会被释放内存,从内存开支方面来看无疑是巨大的。该算法从减少内存浪费的角度来对 utility list-based 类算法进行改进

定义

大部分定义可以参 HUI-Miner 笔记进行了解,以下只介绍新添加的内容

  • 效用列表缓冲区(utility-list buffer):类似于一个管道,将所有的 utility-list 都连接起来成一个(下图中第一个子图,由三个列表组成)
  • 索引段(index segment):SUL(X)SUL(X) 表示指出项集 XX 在效用列表缓冲区中的位置段,用于快速定位。以(X, StartPos, EndPos, SumIutil, SumRutil)元组形式存在,也可以把所有项集的索引段连接在一起形成一个管道(下图种第二个子图,由一个列表组成)

buffer_structure.png

伪代码

Construct Utility-List Buffer Structure

与 utility-list 生成一个个 list 的过程不同,ULB-Miner 是直接将新得到的项集信息继续拼接在原 ULB 存储结构的最后面,其时间复杂度会直接降低为 OO(nn + mm),而 HUI-Miner 的时间复杂度为 OO(nlog(m)nlog(m)),其中 n,mn, m 分别表上两个不同的 utility-lists 各自包含的交易项数量

ULB_construct.png

Search procedure

一个递归方法,从低阶项集开始,每一轮扩展单个项形成新的高阶项集

search_procedure.png

Main procedure

main_procedure.png

引用

  1. HUI-Miner:Mining high utility itemsets without candidate generation
  2. FHM:Faster high-utility itemset mining using estimated utility co-occurrence pruning
  3. ULB-Miner:Efficient high utility itemset mining using buffered utility-lists