Posts FUCPM算法
Post
Cancel

FUCPM算法

写在前面:连续序列挖掘(contiguous sequential pattern mining)是一种在我们日常生活中十分常见的任务,如网页日志、DNA序列分析、物体运行轨迹等等,但是现有的挖掘算法并不能对该类型数据进行高效挖掘,因为它们通常得到的序列,其组成的各个元素之间是没有连续性,是割裂的状态,所以该算法提出一个更好的方案来解决持续性复杂序列挖掘问题

Utility-driven Mining of Contiguous Sequences

动机

在原高校用项集序列挖掘中,得到的结果并没有考虑结果中的元素各自存在的联系,本算法目的是为了解决在有序规则下,挖掘出有序且连续的子序列

定义

项(item)数据集中最小的单位,用 $x_i$ 表示,有限个数
项集(itemset由有限个项组成,非空,用 $X$ 表示,且组成的各个项之间默认字典序
序列(sequence由有限个项集组成,非空,用 $S$ 表示,且组成的各个项集之间有序
量化项(quantitative item给项赋予 utility 和 quantity 属性,用 ($x_i$:$q$) 或 $q$-item 表示
量化项集(quantitative itemset同上,有限个 $q$-items 构成,且组成的各个项之间有序
量化序列(quantitative sequence同上,有限个 $q$-itemsets 构成,有序,且有唯一标号 SID
  • 连续序列(contiguous sequence):给定两个不同的序列 $S_m$ 和 $S^\prime_n$(下标表示该序列包含不同项集的个数),对于任意 $1 \le k \le n-m+1$,有 $X_1 \subseteq X^\prime_{k}$, $X_2 \subseteq X^\prime_{k+1}$, $\ldots$, $X_m \subseteq X^\prime_{k+m-1}$ 成立,则 $S$ 是 $S^\prime$ 的连续子序列;反过来,$S^\prime$ 是 $S$ 的连续超序列【如 <{$a$}, {$af$}> 与 <{$c$}, {$ab$}, {$aef$}>】

  • 匹配(matching):给定项集 $X$ 和量化项集 $Y$,当有且仅有对于任意 $1 \le k \le m$,有 $x_k$ = $y_k$,则称 $X$ 匹配 $Y$,记作 $X \sim Y$;序列同理;显然,根据 quantity 属性的不同,$X$ 可以匹配多个 $Y$

  • 实例(instance):给定序列 $S_m$ 和量化序列 $Q_n$(下标表示该序列包含不同项集的个数,$m \le n$),若 $\exists p$, $m \le p \le n$ 且 $\forall k$, $1 \le k \le m$,有 $X^\prime_k \sim Y_{p-m+k}$ 且 $X_k \subseteq X^\prime_k$ 成立,则称 $Q_n$ 在截止处 $p$ 有 $S_m$ 的一个实例,根据截止的位置不同,显然是存在 $Q_n$ 对 $S_m$ 的多个不同实例

    Ps. 论文中特别地对截止位置集合符号化为 EP(S, Q),且当 Q 至少存在一个 S 的实例,则称 Q 包含 S,符号化为 $S \sqsubseteq Q$

  • 效用值(utility):对于在量化序列 $Q$ 的第 $j$ 个量化项集中的量化项 $x_i$,它的效用值计算公式是 $u(x_i, j, Q)$ = $q(x_i, j, Q) \times p(x_i)$ 【也就是 quantity * profit】;以此推理,

    • 包含 $x_i$ 的量化项集 $X$ 的效用值计算公式是 $u(X, j, Q)$ = $\sum_{x_i \in X}u(x_i, j, Q)$;
    • $Q$ 关于 $S$ 的某个实例的效用值为 $u(S, p, Q)$ = $\sum^m_{j=1}u(X_j, p-m+j, Q)$;
    • 因为存在多个实例,所以取最大值作为估值 $u(S, Q)$ = max{$u(S, p, Q) \mid \forall p \in EP(S, Q)$};
    • 最后,序列 $S$ 在数据集 $D$ 中的效用值为 $u(S)$ = $\sum_{Q \in D}u(S, Q)$
  • 序列权重效用值(sequence-weighted utilization, SWU):是一个具有向下封闭性的预估值,可以作为剪枝的判断条件,其表达式为$SWU$($S$) = $\sum_{S \sqsubseteq Q \land Q \subseteq D}u(Q)$【但这是一个非常松散的预估值,解释在 GUIP 剪枝策略部分】

  • 高效用连续序列模式(high-utility contiguous sequential pattern):根据上一条的效用值定义,序列 $S$ 是 HUCSP 当且仅当其效用值不低于 $\xi \times u(D)$,$\xi$ 是用户预先设置的最低阈值,以百分比形式出现

  • 扩展(extension):任何低阶项集都要通过一定的方法才能组合成高阶项集,在序列挖掘中,通常每次只扩展一个项,给定序列 $S$ 和 项 $x_i$,本论文介绍了两种扩展方式:

    • 项扩展(I-extension):将 $x_i$ 直接扩展在 $S$ 的最后一个项集上,记为 <$S \oplus x_i$>,注意,该操作并不会增大序列的长度,
    • 序列扩展(s-extension):将 $x_i$ 作为一个新的项集扩展在 $S$ 的末尾,记为 <$S \otimes x_i$>,这样会使得 $S$ 长度加 1
  • 扩展项((extension item):给定 $S$, $Q$ 和 $x_i$,其中 $x_i$ 是 $S$ 的最后一个项,$EP(S, Q)$ = {$ep_1$, $\ldots$, $ep_n$},那么,

    • 关于 $S$ 在 $Q$ 上的 I-extension 的集合记为 $Iitem$($S$, $Q$);同理,在 $D$ 上的集合记为 $Iitem$($S$) = $\bigcup_{Q \in D}$$Iitem$($S$, $Q$)
    • 关于 $S$ 在 $Q$ 上的 S-extension 的集合记为 $Sitem$($S$, $Q$);同理,在 $D$ 上的集合记为 $Sitem$($S$) = $\bigcup_{Q \in D}$$Sitem$($S$, $Q$)
  • 剩余序列(remaining sequence):在有序规则下,假定 $Q$ 在 $S$ 的 $p$ 位置处有一个实例,关于 $Q$ 在 $S$ 上的剩余序列记为 $Q / {(S, p)}$,同时也可以称为是 $Q$ 的后缀序列;对应地,其剩余序列的效用值的公式为 $ru(Q / _{(S, p)})$ = $\sum{x_i \in Q / _{(S, p)}}u(x_i)$

  • 项扩展效用值(item-extension utilization):给定 $S$, $S^\prime$, $Q$,其中有 $S \subseteq S^\prime$, $S \oplus/\otimes x_i$ = $S^\prime$, $Q$ 是 $S$ 的一个实例,$Q^p$ 表示在 $Q$ 中的第 $p$ 个项集,$p \in EP(S, Q)$,那么,

    • 对于 I-extension($S^\prime$ = $S \oplus x_i$),有且仅有 $x_i \in Q^p$ 时,$IEU(S^\prime, p, Q)$ = $u(S, p, Q)$ + $u(x_i, p, Q)$ + $ru(Q/_{(x_i, p)})$;反之,$IEU(S^\prime, p, Q)$ = 0
    • 对于 S-extension($S^\prime$ = $S \otimes x_i$),有且仅有 $x_i \in Q^{p+1}$ 时,$IEU$($S^\prime, p, Q$) = $u(S, p, Q)$ + $u(x_i, p+1, Q)$ + $ru(Q/_{(x_i, p+1)})$;反之,$IEU(S^\prime, p, Q)$ = 0
    • 对于多个 I-extension 或 S-extension,$IEU(S^\prime, p, Q)$ = $max_{p \in (S, Q)}IEU(S^\prime, p, Q)$;更进一步,$IEU$($S$) = $\sum_{S \sqsubseteq Q \land Q \subseteq D}IEU(S, Q)$
  • 序列信息列表(sequence information list, SIL):类同于效用列表(utility list,每个 list 存储的是一个 $Q$,量化序列中至少有一个 $q$-itemset,每个项集中存储着至少一个元组($q$-item, real utility 和 remaining utility),结构图如下

    SIL数据结构示意图

  • 实例链(instance-chain, IChain):存储着 EP($S$, $Q$) 信息,以及该实例在对应截止位置 $p$ 的效用值,本质上是压缩存储实例信息,结构图如下

    IChain数据结构示意图

剪枝策略

GUIP strategy

根据 $u(S)$ 的定义可以知道$SWU$($S$) 其实比真正的效用值要大很多,这样导致的直接结果就是无效的 candidates 数量变多;所以该论文在原$SWU$ 剪枝策略的基础上,每一次过滤掉低效用的 $x_i$,就更新 $Q$ 和对应的剩余效用值,直到完全删除所有的低效用项

LUIP strategy

原论文中给了详细的证明推理过程,在这里就不做过多阐述;根据 $IEU(S)$ 的定义,当其小于最低阈值时,$S$ 和其扩展序列都是低效用,可以直接被剪除

伪代码

FUCPM algorithm

FUCPM algorithm

Recursive search

Recursive search

总结

该算法本质上是一个 list-based 算法,在剪枝低效用项时采用贪心思想,反复循环直至最优解,这样带来的一个问题是在处理不同的数据集,资源消耗情况如何?从内存开支表现上看,在稠密数据集上表现优异,但在稀疏数据集上消耗明显变大,甚至不如比对的基准算法;但这样带来的好处也是非常明显,即在时间开支上是明显偏小,因为前期删除了大量低效用的项,在生成高阶项集的数量上会少很多,该论文的 candidates 比对实验图中也证实了这一点(稀疏数据集除外),且策略比对实验数据也能说明;最后的 HUSPM算法 与 UCSPM算法 比对实验可以看出,contiguous sequence 在数量上是远远偏小,这在一定程度上可以减轻分析数据的困难程度。个人认为 UCSPM 是一个非常好的研究方向,其适用领域也很多

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