内存感知的频繁 k-项集挖掘
1. 相关概念与问题定义
1.1 符号简化
在后续内容中,当参数 σ 和 D 从上下文可明确或无关紧要时,我们通常会简单地用 Fk 代替 Fk(σ, D)。
1.2 冰山查询问题
我们的方法是基于将频繁项集计算问题转化为冰山查询问题。下面给出冰山查询问题的定义:
- 字母表 :用 Q 表示一个有限字母表,Q 中的元素用 q, q′, q1, … 表示,这些元素被称为查询。
- 查询流 :查询流 s 是一个序列 s = ⟨q1, … , qn⟩,其中对于每个 1 ≤ i ≤ n,都有 qi ∈ Q,查询流的长度 n 记为 |s|。
- 频率 :给定一个查询流 s 和一个查询 q,fs(q) 表示 q 在 s 中出现的次数。
冰山查询问题(IQ 问题)定义 :设 Q 是查询集合,s 是查询流,ϑ 是一个实数且 0 < ϑ ≤ 1。IQ 问题是确定子集 Q(ϑ, s),其定义如下:
Q(ϑ, s) = {q ∈ Q | fs(q) > ϑ|s|}
如果一个查询 q 属于 Q(ϑ, s),我们称 q 是关于 Q、s 和 ϑ 的冰山查询。
在实际应用中,频繁项集挖掘(FIM)和 IQ 问题的输入通常非常大,且只能按顺序读取。在 FIM 问题中,通常有 |D| ≫ |I|;在 IQ 问题中,通常有 |s| ≫ Q ≫ 1/ϑ。