写在前面:连续序列挖掘(contiguous sequential pattern mining)是一种在我们日常生活中十分常见的任务,如网页日志、DNA序列分析、物体运行轨迹等等,但是现有的挖掘算法并不能对该类型数据进行高效挖掘,因为它们通常得到的序列,其组成的各个元素之间是没有连续性,是割裂的状态,所以该算法提出一个更好的方案来解决持续性复杂序列挖掘问题。 ———— By Suarne
Utility-driven Mining of Contiguous Sequences
动机
在原高效用项集序列挖掘中,得到的结果并没有考虑结果中的元素各自存在的联系,本算法目的是为了解决在有序规则下,挖掘出有序且连续的子序列
定义
-
项(item):数据集中最小的单位,用 表示,有限个数
-
项集(itemset):由有限个项组成,非空,用 表示,且组成的各个项之间默认字典序
-
序列(sequence):由有限个项集组成,非空,用 表示,且组成的各个项集之间有序
-
量化项(quantitative item):给项赋予 utility 和 quantity 属性,用 (:) 或 -item 表示
-
量化项集(quantitative itemset):同上,有限个 -items 构成,且组成的各个项之间有序
-
量化序列(quantitative sequence):同上,有限个 -itemsets 构成,有序,且有唯一标号 SID
-
连续序列(contiguous sequence):给定两个不同的序列 和 (下标表示该序列包含不同项集的个数),对于任意 ,有 , , , 成立,则 是 的连续子序列;反过来, 是 的连续超序列【如 <{}, {}> 与 <{}, {}, {}>】
-
匹配(matching):给定项集 和量化项集 ,当有且仅有对于任意 ,有 = ,则称 匹配 ,记作 ;序列同理;显然,根据 quantity 属性的不同, 可以匹配多个
-
实例(instance):给定序列 和 量化序列 (下标表示该序列包含不同项集的个数,),若 , 且 , ,有 且 成立,则称 在截止处 有 的一个实例,根据截止的位置不同,显然是存在 对 的多个不同实例
Ps. 论文中特别地对截止位置集合符号化为 EP(S, Q),且当 Q 至少存在一个 S 的实例,则称 Q 包含 S,符号化为
-
效用值(utility):对于在量化序列 的第 个量化项集中的量化项 ,它的效用值计算公式是 = 【也就是 quantity * profit】;以此推理,
- 包含 的量化项集 的效用值计算公式是 = ;
- 关于 的某个实例的效用值为 = ;
- 因为存在多个实例,所以取最大值作为估值 = max{};
- 最后,序列 在数据集 中的效用值为 =
-
序列权重效用值(sequence-weighted utilization, SWU):是一个具有向下封闭性的预估值,可以作为剪枝的判断条件,其表达式为 SWU() = 【但这是一个非常松散的预估值,解释在 GUIP 剪枝策略部分】
-
高效用连续序列模式(high-utility contiguous sequential pattern):根据上一条的效用值定义,序列 是 HUCSP 当且仅当其效用值不低于 , 是用户预先设置的最低阈值,以百分比形式出现
-
扩展(extension):任何低阶项集都要通过一定的方法才能组合成高阶项集,在序列挖掘中,通常每次只扩展一个项,给定序列 和 项 ,本论文介绍了两种扩展方式:
- 项扩展(I-extension):将 直接扩展在 的最后一个项集上,记为 <>,注意,该操作并不会增大序列的长度,
- 序列扩展(s-extension):将 作为一个新的项集扩展在 的末尾,记为 <>,这样会使得 长度加 1
-
扩展项((extension item):给定 , 和 ,其中 是 的最后一个项, = {, , },那么,
- 关于 在 上的 I-extension 的集合记为 Iitem(, );同理,在 上的集合记为 Iitem() = Iitem(, )
- 关于 在 上的 S-extension 的集合记为 Sitem(, );同理,在 上的集合记为 Sitem() = Sitem(, )
-
剩余序列(remaining sequence):在有序规则下,假定 在 的 位置处有一个实例,关于 在 上的剩余序列记为 ,同时也可以称为是 的后缀序列;对应地,其剩余序列的效用值的公式为 =
-
项扩展效用值(item-extension utilization):给定 , , ,其中有 , = , 是 的一个实例, 表示在 中的第 个项集,,那么,
- 对于 I-extension( = ),有且仅有 时,IEU() = + + ;反之,IEU() = 0
- 对于 S-extension( = ),有且仅有 时,IEU() = + + ;反之,IEU() = 0
- 对于多个 I-extension 或 S-extension,IEU() = IEU();更进一步,IEU() = IEU()
-
序列信息列表(sequence information list, SIL):类同于效用列表(utility list),每个 list 存储的是一个 ,量化序列中至少有一个 -itemset,每个项集中存储着至少一个元组(-item, real utility 和 remaining utility),结构图如下
-
实例链(instance-chain, IChain):存储着 EP(, ) 信息,以及该实例在对应截止位置 的效用值,本质上是压缩存储实例信息,结构图如下
剪枝策略
GUIP strategy
根据 的定义可以知道 SWU() 其实比真正的效用值要大很多,这样导致的直接结果就是无效的 candidates 数量变多;所以该论文在原 SWU 剪枝策略的基础上,每一次过滤掉低效用的 ,就更新 和对应的剩余效用值,直到完全删除所有的低效用项
LUIP strategy
原论文中给了详细的证明推理过程,在这里就不做过多阐述;根据 IEU() 的定义,当其小于最低阈值时, 和其扩展序列都是低效用,可以直接被剪除
伪代码
FUCPM algorithm
Recursive search
总结
该算法在剪枝低效用项时采用贪心思想,反复循环直至最优解,这样带来的一个问题是在处理不同的数据集,资源消耗情况如何?从内存开支表现上看,在稠密数据集上表现优异,但在稀疏数据集上消耗明显变大,甚至不如比对的基准算法;但这样带来的好处也是非常明显,即在时间开支上是明显偏小,因为前期删除了大量低效用的项,在生成高阶项集的数量上会少很多,该论文的 candidates 比对实验图中也证实了这一点(稀疏数据集除外),且策略比对实验数据也能说明;最后的 HUSPM算法 与 UCSPM算法 比对实验可以看出,contiguous sequence 在数量上是远远偏小,这在一定程度上可以减轻分析数据的困难程度。个人认为 UCSPM 是一个非常好的研究方向,其适用领域也很多