基于约束编程的序列挖掘:全局与分解模型的比较与实践
在序列挖掘领域,如何高效地挖掘出有价值的频繁序列是一个关键问题。本文将介绍两种基于约束编程的序列挖掘方法,即全局存在嵌入约束模型和分解显式嵌入变量模型,并通过实验比较它们的性能。
1. 序列挖掘建模基础
在进行序列挖掘时,我们需要定义一组具有有限域的变量和一组约束条件,将问题建模为约束满足问题(CSP)。一个CSP的解对应一个频繁序列模式。
- 变量定义 :
- 用整数变量数组S表示序列的字符,每个变量Sj代表序列中第j个位置的字符。S的大小由最长事务的长度决定,用ϵ表示S中未使用的位置,Sj的域为Σ ∪{ϵ}。
- 布尔变量数组C表示每个事务是否包含该模式,即Ci表示模式是否包含在事务Ti中。
- 约束问题 :关键在于如何建模模式与事务之间的包含关系,即验证模式是否包含在事务中的约束。由于可能的嵌入数量与模式大小呈指数关系,不能将其建模为所有可能嵌入的析取约束。为此,我们提出了两种方法来解决这个问题。
2. 全局存在嵌入约束的序列挖掘
该模型由三部分组成:模式编码、最小频率约束和使用全局约束的包含关系编码。
- 变量长度模式 :数组S的长度为k,长度l < k的模式用l个来自Σ的符号和(k - l)个ϵ值表示。为避免枚举ϵ值在不同位置的相同模式,ϵ值只能出现在末尾,即∀j ∈1..(k - 1) : Sj = ϵ →Sj+1 = ϵ。
- 最小频率约束 :至少θ个事务应包含该模式,用布尔变
超级会员免费看
订阅专栏 解锁全文
23

被折叠的 条评论
为什么被折叠?



