FUCPM算法

5,598 阅读5分钟

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

Utility-driven Mining of Contiguous Sequences

动机

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

定义

  • 项(item):数据集中最小的单位,用 xix_i 表示,有限个数

  • 项集(itemset):由有限个项组成,非空,用 XX 表示,且组成的各个项之间默认字典序

  • 序列(sequence):由有限个项集组成,非空,用 SS 表示,且组成的各个项集之间有序

  • 量化项(quantitative item):给项赋予 utility 和 quantity 属性,用 (xix_i:qq) 或 qq-item 表示

  • 量化项集(quantitative itemset):同上,有限个 qq-items 构成,且组成的各个项之间有序

  • 量化序列(quantitative sequence):同上,有限个 qq-itemsets 构成,有序,且有唯一标号 SID

  • 连续序列(contiguous sequence):给定两个不同的序列 SmS_mSnS^\prime_n(下标表示该序列包含不同项集的个数),对于任意 1knm+11 \le k \le n-m+1,有 X1XkX_1 \subseteq X^\prime_{k}, X2Xk+1X_2 \subseteq X^\prime_{k+1}, \ldots, XmXk+m1X_m \subseteq X^\prime_{k+m-1} 成立,则 SSSS^\prime 的连续子序列;反过来,SS^\primeSS 的连续超序列【如 <{aa}, {afaf}> 与 <{cc}, {abab}, {aefaef}>】

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

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

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

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

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

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

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

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

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

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

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

    SIL数据结构示意图

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

    IChain数据结构示意图

剪枝策略

GUIP strategy

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

LUIP strategy

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

伪代码

FUCPM algorithm

FUCPM algorithm

Recursive search

Recursive search

总结

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