Posts THUI算法
Post
Cancel

THUI算法

写在前面:在UPM领域中,该篇2018年的算法算是比较新的,相比于之前的 KHMC 和 TKO 两篇算法,该算法能够在早期运算过程中快速提高阈值,这在密集型数据集中的表现是十分有利。

THUI算法

样例

  • 各项的TWU:

    Transaction Weighted Utility

  • 数据集:

    Transaction Dataset

  • 各项排序: \(c \succ e \succ a \succ d \succ f \succ b \succ g\)

定义

该章节和之前的 top-$k$ 算法没有区别,具体可以参考之前几篇算法的描述

Leaf itemset utility (LIU) data structure

\[LIU(x_{\rm i}, x_{\rm j}) = LIU(x_{\rm i} .. x_{\rm j}) \\ = LIU(\{x_{\rm i}, x_{\rm i+1}, \dots, x_{\rm j}\}) \\ = \sum_{X = (x_{\rm i} \dots x_{\rm j}) \subseteq T_{\rm s} \, and \, T_{\rm s} \in D}U(X, T_{\rm s})\]

LIU 是一个三角矩阵,由多组连续的项组成,$(x_{\rm i} \dots x_{\rm j})$ 意味着一组项从 $x_{\rm i}, x_{\rm i+1}, x_{\rm i+2} \dots $ 直到 $x_{\rm j}$,而且这些项都是有序排列的。每一列表示以当前元素作为当前序列中的最后一个元素(即 $x_{\rm j}$),每一行的元素作为当前序列中的第一个元素(即 $x_{\rm i}$),可以对照参考下图示例(计算 $T_1$ 后的 LIU):

LIU Matrix after processing transaction T1

策略

LIU strategy

在实际代码中,采用的是HashMap来实现该结构,因为该矩阵只是存储一串连续序列的效用值信息,所以真正需要的内存并不大。(是不是和KHMC算法的EUCS很相似???)

LIU strategy

Threshold raising strategies

  • RIU

    老方法了,利用一元项集进行阈值提升

  • RUC

    RIU 的plus版,利用多元项集进行阈值提升,在FHM算法中有详细介绍

  • LIU-E

    在生成_LIU_矩阵之后,利用优先队列(PQ_LIU)存储那些不低于初试阈值的项的效用值,有如下公式: $PQ_LIU = \lbrace LIU(x, y)LIU(x, y) \ge \delta \rbrace$。当队列中存储到k个元素时,把第k个元素的效用值作为新的阈值【因为优先队列内置排序功能,而且选择第k个意味着前面的k-1个元素的效用值都大于现在选择的阈值】
  • LIU-LB

    该方法利用LIU矩阵的连续项集信息,来估计其它相关项集的下边界值,有以下性质:

    1. 累积效用属性(Cumulative utility property)对任意 $X,Y$ 是不相交的项集,有 $U(X) + U(Y) \ge U(X \cup Y)$ 证明如下: $$ U(X) + U(Y) = \sum_{(X \cup Y) \subseteq T_{\rm j}}U(X, T_{\rm j}) + \sum_{(X \cup Y) \not \subseteq T_{\rm j} \cap X \subseteq T_{\rm j}}U(X, T_{\rm j})
      • \sum_{(X \cup Y) \subseteq T_{\rm j}}U(Y, T_{\rm j}) + \sum_{(X \cup Y) \not \subseteq T_{\rm j} \cap Y \subseteq T_{\rm j}}U(Y, T_{\rm j})
        U(X \cup Y) = \sum_{(X \cup Y) \subseteq T_{\rm j}}U(X) + \sum_{(X \cup Y) \subseteq T_{\rm j}}U(Y) $$
    2. 低效用边界属性(Utility lower bound property)存在低效用边界项集 $Y$,对任意项集 $X$ 有如下公式 \(ULB(Y) = U(X \cup Y) - U(X) = U(X \cup Y) - \sum_{x_{\rm i} \in X}U(x_{\rm i})\)

    3. LIU-Lower Bound(LIU-LB)设 $PQ_ALL = \lbrace PQ_LIU \cup PQ_LB_LIU \rbrace$,当 $PQ_ALL$ 的长度超过 $k$ 时,阈值提升为该列表中第 $k$ 个元素的效用值

    伪代码如下:

    Raise Threshokd KB_LIU

算法

THUI Algorithm

该算法在对检索空间剪枝上,采用了 TWU-prune, U-prune, LA-prune 等三种策略,这些策略都是使用现成的算法,只是工作的环节不同,在文中均有指出

THUI Algorithm

Explore Search Tree

该函数和HUI-Miner的检索算法一致,同样还采用了FHM算法中的RUC策略来提升阈值

Explore Search Tree

总结

该算法提出了一种新的数据结构—— Leaf Itemset Utility (LIU),该数据结构优势在于只需要很小一部分内存就可以存储。其次,该算法还设计了一种新的效用下限估计方法—— lower bound estimation method(LIU-LB) 这是一个新的角度,之前我们大多考虑的是上边界。本质上该算法是基于 utility-list 结构设计的 one-phase 算法,在性能上要好过 TKO 和 KHMC。

This post is licensed under CC BY 4.0 by the author.