写在前面:这是2020年最新的一篇关于高效用序列挖掘的算法,基于常见的LQS-tree,结合list结构,辅之以 LAR 和 IIP 两种高效的剪枝策略,显著地降低了挖掘过程中消耗的资源,并且通过实验与 USpan、HUS-Span 和 ProUM 三个算法比较,HUSP-ULL算法的性能表现最好
Fast Utility Mining on Sequence Data
需要特别强调的一点是,序列挖掘必须所有元素基于有序状态(原因可以参考 SPADE算法 和 HUSRM算法 笔记),具体的排序规则根据算法本身特点设定,没有统一原则
定义
- “q-”符号指待“quantitative”,如“q-sequence”指包含数量参数的序列(<{($a$, 2)($b$, 1)}, {($c$, 3)}>),“sequence”指<{$ab$}, {$c$}>,相同的还有“q-itemset”、“q-item”
- 设“q-sequence” $s$ = <$v_1$, $v_2$, $\ldots$, $v_d$>,“sequence” $t$ = <$w_1$, $w_2$, $\ldots$, $w_{d^\prime}$>,如果 $d$ = $d^\prime$ 且构成 $v_k$ 的元素与 $w_k$ 构成的元素相同,那么称 $t$ 匹配 $s$($t \sim s$);显然,一个 sequence 是有多个 q-sequence 可以匹配的(quantity是个变量),如 <{$a$, 1}, {$b$, 1}> 或 <{$a$, 3}, {$b$, 2}> $\sim$ <{$a$}, {$b$}>
- 事件 $w$ 是 $w^\prime$ 的子事件很好判断,但对于“q-itemset” $v \subseteq v^\prime$,当且仅当构成 $v$ 的元素是构成 $v^\prime$ 的元素的子集,而且相应的 quantity 要保持一致,这一点与itemset的包含关系定义不同;同理,序列 $s$ 和 $w$ 也是一样的判断标准
- 正因为有多个 $s$ 匹配 $t$,所以在计算“sequence” $t$ 的效用值时,取最长匹配的效用值($u(t, s)$ = max{$u(s_{k}) \mid t \sim s_{k} \land s_{k} \subseteq s$}),进一步,$t$ 在数据集中的全部效用值计算公式为 $u(t)$ = $\sum_{s \in D}${$u(t, s) \mid t \subseteq s$};出于简化的目的,将每个匹配项的最后一项的位置定义为连接点,其中,第一个连接点称为起点,如令 $t$ = <{a}, {b}>,则在 $S$ = <{($a$, 2)(c, 3)}, {($a$, 3)($b$, 1)($c$, 2)}, {($a$, 4)($b$, 5)($d$, 4)}, {($e$, 3)}> 中的连接点为 4,7,7,起始连接点为 4(Ps. 因为在有序状态下,是从 $b$ 开始连接,而不是 $a$)
- 对于“sequence” $t$ 存在两种扩展方式(I-Concatenation 和 S-Concatenation):I-Concatenation 相当于是把元素 $i_j$ 在序列纵向上扩展,并不会增加原序列的长度(<$t \oplus i_{j}$>${I-Concatenation}$);S-Concatenation 相当于是把元素 $i_j$ 在序列横向上扩展,会使原序列长度加1(<$t \oplus i{j}$>$_{S-Concatenation}$)
- 为了缩短序列匹配时间和减少数量,为每一个符合条件的序列都构造一个新型的数据结构 Utility-Linked List Structure,包含的具体内容如下图所示:相比于其它算法采用的数据结构,UL-List结构更为紧凑,而且存储关键信息并不多(使用了投影(preject)技术)
策略
向下闭合性(downward closure property)
是大多挖掘算法都采用的经典上边界,可以对直接连接根节点的元素进行有效删减,避免生成太多无用的高阶候选项,具体内容点击这里
序列扩展效用(sequence extension utility)
同HUI-Miner算法中的剩余效用概念一致,对于某个序列,它的可扩展项的效用值之和代表了该序列的最大扩展程度是多少。“sequence” $t$ 的扩展项定义为 $I(t){rest}$ = {$i{j} \mid i_{j} \in <s - t>{rest} \land t \subseteq s \land s \in D$},序列扩展效用 $SEU(t)$ = $\sum{s \in D}${$u(t, s)$ + $u(
前缀扩展效用(prefix extension utility)
$SEU$ 的缺点是很明显的,它并不能证明 $t$ 本身是一个低效用序列,而且如果手算一遍 $SEU$ 可以发现它比真正的效用值要高出很多(Ps. 重复计算了 t 的值)。因此,该论文借鉴了一个更紧凑的上边界 $PEU(t)$ = $\sum_{s \in D}${$PEU(t, s) \mid t \subseteq s$}、$PEU(t, s)$ = max{$u(s_{k})$ + $u(<s - s_{k}>{rest})$ $\mid$ $t \sim s{k} \land s_{k} \subseteq s$}(Ps. 取最大值其实就是一个上边界);同理也有定理 $PEU(t^\prime) \le PEU(t)$、$u(t) \le PEU(t)$ 成立(Ps. 证明过程详见论文)
根据 $PEU$ 的性质,该论文设计了两种新的剪枝策略:
- LAR pruning strategy:针对关于序列的两种不同连接方式,有如下不等式成立 1)max{$u(<t \oplus i_{j}>{I-Concatenation})$} $\le$ $\sum{s \in D}${$PEU(t, s)$ $\mid$ $<t \oplus i_{j}>{I-Concatenation} \subseteq s$};2)max{$u(<t \oplus i{j}>{S-Concatenation})$} $\le$ $\sum{s \in D}${$PEU(t, s)$ $\mid$ $<t \oplus i_{j}>{S-Concatenation} \subseteq s$},其中 $i_j$ 是“sequence” $t$ 在不同连接方式下的候选项(_Ps. 这个不难理解,PEU本身就是按照最大值计算得到)当该上边界值小于阈值时,可以断定候选项 $i_j$ 是低效用项,不可以对 $t$ 进行扩展,该策略可以避免多余的 $PEU$ 计算
- IIP pruning strategy:给定“sequence” $t$ 和 任意项 $i_{j} \in I(t){rest}$,如果 $\sum{s \in D}${$PEU(t, s)$ $\mid$ ($<t \oplus i_{j}>{I-Concatenation} \subseteq s$) $\lor$ ($<t \oplus i{j}>_{S-Concatenation} \subseteq s$)} 小于阈值,那么可以断定 $i_j$ 是 $t$ 的无关项,在后续对 $t$ 以及它的扩展 $t^\prime$ 的处理中可以直接忽略 $i_j$,该策略可以进一步减少剩余效用项的值,缩小序列的扩展范围
伪代码
Main algorithm
PGrwoth procedure
Judge procedure
总结
HUSP-ULL算法根据以前人提出的 $PEU$ 概念设计了两个新的剪枝策略,并且详细分析了 $SWU$、$SEU$ 和 $PEU$ 三者之间的大小关系。论文重点在于分析如何通过新的剪枝策略缩减LQS-tree的规模,对于UL-list数据结构与想象中的不大一样,并不是针对每个sub-sequence构造的(想想也确实不可能,sequence candidates实在是太多了),而是针对于每条交易项(完整的序列),并且该论文进行了大量的实验,也有详细的对比论述,这一点是非常值得学习和研究的。此外,要与episode mining task区分开来,该算法是在每条交易项相互独立的情况下进行效用挖掘。