An Improved Data Stream Summary: The Count-Min Sketch and its Applications阅读笔记

: 在本文中, 我将暂时将sketch翻译成为梗概

我们首先定义两个参数\varepsilon\delta, 则梗概的准确性保证可定义为, 我们向这个梗概发起一个查询, 查询结果小于因子\varepsilon的概率大于\delta.

Frequency Moment: F_k(t) = \sum(a_i(t))^k

数据流型(stream)的定义如下: 假设有一个向量\mathbf{a}(t)=[a_1(t), a_2(t), \cdots, a_n(t)], 且\mathbf{a}(0) = \mathbf{0}=[0, 0, \cdots, 0], 当一个更新项(i_t, c_t)于时间t到达的时候, 则有:

a_{i_t}(t) = a_{i_t}(t - 1) + c_t

a_{i'}(t) = a_{i' - 1}(t - 1), \text{if}~i' \neq i

如果c_t是必须为正, 则该数据流是现金注册型 (cash register case); 否则, 如果c_t可以为负值, 则该数据流为栅门型 (turnstile case). 在栅门型中, 如果a_i的值可以为负, 则我们将它称为一般栅门型 (general case), 如果应用层保证a_i的值不可为负, 则我们将它称为非负栅门型 (non-negative case). 数据流型的定义又可以表述为, 我们可能有无数个更新项(i_t, c_t), 但是i_t的值只能为1, 2, \cdots, n. 所以, 这些更新项可以归类为n组. 我们令a_i = \sum_{i_t = i} c_t, 即a_i是所有对应于i的更新项中c_t的和.

基于向量\mathbf{a}\mathbf{b}, 可以有以下三种类型的查询:

- 点查询 (point query) \mathcal{Q}(i): 返回a_i的值

- 范围查询(range query) \mathcal{Q}(l, r): 返回\sum_{i=l}^r a_i

- 内积查询(inner product query) \mathcal{Q}(\mathbf{a}, \mathbf{b}): 返回\sum_{i=1}^n a_i\cdot b_i

我们定义||\mathbf{a}||_p如下:

||\mathbf{a}||_p = (\sum_{i = 1}^n|a_i(t)|^p)^{1/p}. 特别地, ||\mathbf{a}||_1 = \sum_{i = 1}^n|a_i(t)| 

对于一个数据流型, 它的\phi-重流 (\phi-heavy hitters)可定义为

\{a_i | a_i \ge \phi||\mathbf{a}||_1\}, 但是在对\phi-重流估计的时候我们可以接受的\{a_i | a_i \ge (\phi - \varepsilon)||\mathbf{a}||_1\}, 其中\varepsilon < \phi

一个数据流型的\phi-分位点 (\phi-quantile)可定义如下:

我们将所有的a_i进行排序 (文章中没有指明, 但是这里默认是升序排序), 之后其中序次为k\phi|||\mathbf{a}|_1的分量a_t便是该数据流型的\phi-分位点, 其中k = 0, 1, \cdots, 1/\phi. 在对\phi-分位点进行估计的时候, 我们可以接受的结果是所有序次在(k\phi - \varepsilon)|||\mathbf{a}|_1(k\phi + \varepsilon)|||\mathbf{a}|_1之间的分量, 其中\varepsilon < \phi.

在确定了两个参数\delta\varepsilon以后, 我们可以确定一个Count-Min梗概的规模. 一个Count-Min梗概由d个哈希表组成, 每个哈希表包括w个哈希桶. 其中w = \lceil \frac{e}{\varepsilon} \rceild = \lceil \ln \frac{1}{\delta} \rceile为自然对数. 我们将第i个哈希表的第j个哈希桶记为H(i, j). 每个哈希表都和一个独立的哈希函数h_i()相关联.

Count-Min梗概的原理如下: 当一个更新项(i, c_i)到达的时候, 我们更新哈希表如下: 对于每一个k1 \le k \le d, 我们令H(k, h_k(i)) = H(k, h_k(i)) + c_i. 也就是说, 我们将i分别映射到d个哈希表中, 并将c_i的值分别加入到i所对应的哈希桶中.

点查询\mathcal{Q}(i)的结果是\hat{a_i} = \min \{H(j, h_j(i)) | j = 1, 2, \cdots, d\}, 而\hat{a_i}将作为对a_i的值的估计.

定理1. a_i \le \hat{a_i}, 且以下不等式成立的概率至少为1 - \delta:

\hat{a_i} \le a_i + \varepsilon ||\mathbf{a}||_1

证明: 

1. 我们首先定义变量I_{i, j, k}. 当(i\neq k)\wedge (h_j(i) = h_j(k))I_{i, j, k} = 1, 否则I_{i, j, k} = 0. 则有

E(I_{i, j, k}) = 0\cdot P(I_{i, j, k} = 0) + 1\cdot P(I_{i, j, k} = 1)\\ = P(I_{i, j, k} = 1)\\ = P((i \neq k)\wedge (h_j(i) = h_j(k)))\\ = \frac{1}{w} \le \frac{\varepsilon}{e}

我们再定义变量X_{i,j}如下:

X_{i, j} = \sum_{k = 1}^n I_{i, j, k}a_k

所以X_{i, j}是第j个哈希表中所有和a_i被映射到同一个哈希桶的分量a_k的和, 所以

H(j, h_j(i)) = a_i + X_{i, j} \ge a_i\\ \Rightarrow \hat{a_i} = \min\{H(j, h_j(i))| j = 1, 2, \cdots, d\} \ge a_i

所以定理的前半部分得证.

2. 我们求X_{i, j}的数学期望如下:

 E(X_{i, j}) = E(\sum_{k = 1}^n I_{i, j, k}a_k) \\ = E(\sum_{i = 1}^nI_{i, j, k}a_i)\\ = \sum_{i = 1}^na_i E(I_{i, j, k})\\ \le \frac{\varepsilon}{e}||\mathbf{a}||_1

所以

P(\hat{a_i} > a_i + \varepsilon ||\mathbf{a}||_1) \\ = P(\forall j, H(j, h_j(i)) > a_i + \varepsilon||\mathbf{a}||_1)\\ = P(\forall j, a_i + X_{i, j} > a_i + \varepsilon||\mathbf{a}||_1)\\ = P(\forall j, X_{i, j} > \varepsilon||\mathbf{a}||_1)

同时,

 E(X_{i, j}) \le \frac{\varepsilon}{e}||\mathbf{a}||_1\\ \Rightarrow \varepsilon||\mathbf{a}||_1 \ge eE(X_{i, j})

所以

P(\hat{a_i} > a_i + \varepsilon ||\mathbf{a}||_1) \\ = P(\forall j, X_{i, j} > \varepsilon||\mathbf{a}||_1)\\ \le P(\forall j, X_{i, j} > eE(X_{i, j}))

而由马尔可夫不等式可知,

P(X \ge a) \le \frac{E(X)}{a}

所以

P(X_{i, j} > eE(X_{i, j})) < e^{-1}

所以

P(\hat{a_i} > a_i + \varepsilon ||\mathbf{a}||_1) \\ \le P(\forall j, X_{i, j} > eE(X_{i, j})) < e^{-d}

d = \lceil\ln \frac{1}{\delta} \rceil\\ \Rightarrow d \ge \ln\frac{1}{\delta}\\ \Rightarrow e^{-d} \le \delta

所以

P(\hat{a_i} > a_i + \varepsilon ||\mathbf{a}||_1) < \delta

Count-Min梗概的内存消耗量为wd, 其中w = \lceil \frac{e}{\varepsilon} \rceild = \lceil \ln \frac{1}{\delta} \rceil. 我们也可以令w=\lceil \frac{b}{\varepsilon}\rceil, d = \lceil \log_b \frac{1}{\delta} \rceil, 其中b > 1, 但是我们令\frac{d(wd)}{db} = 0可求得b = e, 所以当b = e的时候可以使得Count-Min梗概的内存消耗最小.

内积查询\mathcal{Q}(\mathbf{a}, \mathbf{b})的结果是\mathbf{a}\bigodot\mathbf{b} = \min \{(\widehat{\mathbf{a}\bigodot\mathbf{b}})_j | j = 1, 2, \cdots, d\}, 其中,

 {\mathbf{a}\bigodot\mathbf{b}}_j = \sum_{k = 1}^w H_{\mathbf{a}}(j, h_j(k))\cdot H_\mathbf{b}(j, h_j(k))

(原文中有一个定理2, 但是我没有看懂, 所以这里就不再摘录)

定理3. \mathbf{a}\bigodot\mathbf{b}\le \widehat{\mathbf{a}\bigodot\mathbf{b}}, 并且以下不等式以至少1 - \delta的概率成立:

\widehat{\mathbf{a}\bigodot\mathbf{b}} \le \mathbf{a}\bigodot\mathbf{b} + \varepsilon \Vert \mathbf{a}\Vert_1\Vert\mathbf{b}\Vert_1

证明:

\widehat{\mathbf{a}\bigodot\mathbf{b}}_j = \sum_{i = 1}^n a_ib_i + \sum_{p\neq q, h_j(p)=h_j(q)}a_pb_q = \mathbf{a}\bigodot \mathbf{b} + \sum_{p\neq q, h_j(p)=h_j(q)}a_pb_q

因为\mathbf{a}\mathbf{b}的分量均为非负数, 所以\mathbf{a}\bigodot\mathbf{b}\le \widehat{\mathbf{a}\bigodot\mathbf{b}}显然成立.

E(\widehat{\mathbf{a}\bigodot\mathbf{b}}_j - \mathbf{a}\bigodot\mathbf{b})\\ = \sum_{p\neq q}P(h_j(p)=h_j(q))a_pb_q\\ \le \sum_{p\neq q} \frac{\varepsilon a_pb_q}{e} \le \frac{\varepsilon \Vert \mathbf{a}\Vert_1\Vert\mathbf{b}\Vert_1}{e}

由马尔科夫不等式可知,

P(\widehat{\mathbf{a}\bigodot\mathbf{b}}_j - \mathbf{a}\bigodot\mathbf{b} > \varepsilon\Vert\mathbf{a}\Vert_1\Vert\mathbf{b}\Vert_1) < \frac{E(\widehat{\mathbf{a}\bigodot\mathbf{b}}_j - \mathbf{a}\bigodot\mathbf{b})}{\varepsilon\Vert\mathbf{a}\Vert_1\Vert\mathbf{b}\Vert_1} \le \frac{1}{e}

所以

P(\widehat{\mathbf{a}\bigodot\mathbf{b}} - \mathbf{a}\bigodot\mathbf{b} > \varepsilon\Vert\mathbf{a}\Vert_1\Vert\mathbf{b}\Vert_1)\\ = P(\forall j, \widehat{\mathbf{a}\bigodot\mathbf{b}}_j - \mathbf{a}\bigodot\mathbf{b} > \varepsilon\Vert\mathbf{a}\Vert_1\Vert\mathbf{b}\Vert_1) < \frac{1}{e^d}

d = \lceil\ln\frac{1}{\delta} \rceil \Rightarrow e^{-d} \le \delta

所以P(\widehat{\mathbf{a}\bigodot\mathbf{b}} - \mathbf{a}\bigodot\mathbf{b} > \varepsilon\Vert\mathbf{a}\Vert_1\Vert\mathbf{b}\Vert_1) < \delta

猜你喜欢

转载自blog.csdn.net/nankai0912678/article/details/105731034