为什么 BIDE 使用半最大周期进行空间修剪?



根据定义BIDE的文章:

BIDE:频繁闭合序列的高效挖掘

定理 2(反向扫描搜索空间修剪(:

让前缀序列为 n序列,Sp=e1e2...en.如果∃i(1≤i≤n)并且存在项目e′出现在前缀的每个第 i 个半最大值周期中SpSDB,我们可以安全地停止增长前缀Sp

证明:

因为项目e′出现在前缀的每个第 i 个半最大值周期中SpSDB,我们可以得到一个新的前缀S′p=e1e2...ei−1e′ei...en(1<i≤n)S′p=e′e1e2...en(i=1),以及(Sp ‎⊂ S′p)(supSDB(Sp)=supSDB(S′p))拿着。任何本地常e′′项目。 前缀Sp也是本地常见的项目。S′p,与此同时(〈Sp,e′′〉⊂〈S′p,e′′〉)(supSDB(〈Sp,e′′〉)=supSDB(〈S′p,e′′〉))保持。 这意味着没有希望挖掘频繁的闭合序列 前缀Sp

我知道,例如,如果我有一个AB模式,并且我找到了一个e',例如C,它处于模式的第二个最大周期,因此在包含AB的每个序列的AB之间,那么我可以停止增长AB,因为我可以使用向后扩展来制作ACB, 它将获得相同的支持,但更长。因此,我通过向前延伸AB得到的任何模式肯定不会是封闭模式,因为其中缺少C。这就是为什么我必须停止增长AB并等待 PrefixSpan 通过向前扩展增长A -> AC -> ACB。我不明白为什么在这种情况下必须将最大周期限制为半最大周期,以及为什么可以测试半最大周期。这篇文章没有写一个真正的解释。知道吗?你能写一个例子,通过使用最大周期而不是半最大周期来失去封闭的频繁模式吗?

我想我得到了答案。下面是一个示例,它在最大周期中有新事件,但在半最大值周期中没有:

[AxByB,AqBtyB], AB
2nd max period: [xBy,qBty] -> By
2nd semi-max period: [x,q] -> 0

所以根据它,我不能停止增长AB,因为在半最大值时期没有e'相同的支持。另一方面,在最大周期内有相同的支撑e',因此我们可以达到A{By}B模式,从AB向后延伸。但我发现我们也可以通过AB向前扩展来达到AB{yB}。随着更多的重叠,例如通过像ABAB这样的模式,我们将得到相同的结论;我们可以将具有前向扩展的初始AB增长为AB{*A*B},但我们不能在半最大周期A{*}B中添加任何字符,因为我们无法通过从AB向前扩展和前缀Span仅通过前向扩展来增长模式。因此,例如,如果我们在AB的 2nd 半最大值周期中找到具有相同支撑的x,那么我们必须停止增长AB并等待 PrefixSpan 以A -> Ax -> AxB方式增长AxB,并继续增长AxB模式而不是AB模式。大洋洲。我们在这里寻找封闭的频繁模式,而不是频繁模式,因此我们可以安全地以这种方式修剪搜索空间。我不确定是否可以设计一种频繁的模式挖掘算法,该算法同时进行向前和向后扩展。也许以后我会尝试设计这样的算法来应对挑战,但现在 BIDE 适合我正在做的事情。

最新更新