2022年大数据应用算法期末考试

发布时间 2023-11-19 11:46:15作者: LateSpring

1.请简要回答为什么需要设计可合并的 Sketch 算法?可合并的 Sketch 算法主要是用于什么场景?
Only sketch structure moves between locations
Suffices to specify merging two sketches
Distributed data/parallelize computation
可合并的 Sketch 算法是为了解决大规模数据流处理和分布式系统中的近似查询问题而设计的。这些算法能够对数据流进行压缩和摘要,以便在有限的内存和有限的通信带宽条件下处理大量的数据。
可合并的 Sketch 算法主要用于以下场景:
数据流处理:在数据流处理系统中,数据以高速率持续到达,无法全部存储在内存中。可合并的 Sketch 算法通过在有限的内存中维护摘要信息,例如频率估计、矩估计等,能够对数据流进行实时查询和分析。
分布式系统:在分布式系统中,数据通常分布在多个节点上,而节点之间的通信成本较高。可合并的 Sketch 算法允许在分布式环境下对数据进行分布式计算和聚合,从而减少数据传输量和通信开销。
网络监测和流量分析:可合并的 Sketch 算法可以用于网络监测和流量分析,例如统计网络中不同类型的流量、识别网络中的异常行为或研究网络拓扑结构等。
2.给定数据流 D=(1,2,5,1,4,2,3,3,2,4,5,2),假设 k=3,请详细描述 Misra‐Gries 算法在该数据流上的运行步骤。
具体实例如下:
T=0: MG{}
T=1:输入1,MG{1:1}
T=2:输入2,MG{1:1,2:1}
T=3:输入5,MG{1:1,2:1,5:1}
T=4:输入1,MG{1:2,2:1,5:1}
T=5:输入4,MG{1:1}
T=6:输入2,MG{1:1,2:1}
T=7:输入3,MG{1:1,2:1,3:1}
T=8:输入3,MG{1:1,2:1,3:2}
T=9:输入2,MG{1:1,2:2,3:2}
T=10:输入4,MG{2:1,3:1}
T=11:输入5,MG{2:1,3:1,5:1}
T=12:输入2,MG{2:2,3:1,5:1}
3.请解释 Morris 计数算法的基本原理?它为什么能够做到只用 O(loglogn)的空间来对 n 个数据进行计数?
Morris计数器的原理简单来说是记录一个计数器s,每次以2-s的概率给s+1,最终返回的估计结果是2s-1。对于最终的估计量来说,我们所记录的s是估计量的log结果;而当我将s这个结果存储到内存中时,我还需要再进行一步log得出我最终所需的位数,所以最后的空间只需要loglogn
4.MinHash 算法有哪三种实现方式?它们各自有哪些优缺点?
Minhash算法的三种实现方式分别是:k-mins sketch、Bottom-k sketch、k-partition sketch。K-mins算法是使用k个hash函数,每个哈希函数都对序列求一遍哈希,取出每个哈希函数求出的最小值代表该序列的最小哈希,优点是结果可信度高,缺点是浪费空间;Bottom-k是只用一个哈希函数,对序列求哈希,取出前k个最小的代表该序列的最小哈希,优点是操作简单,节省空间;k-partition综合上述两种方法,先分成k个部分然后再用一个函数做哈希,取出每个部分中最小的哈希值,优点是结果可信度比较好,也比较节省空间,缺点是操作繁琐,大批量数据很麻烦

关于复杂度(当一个元素到来时的时间开销):
k-mins是O(k),无论sketch是否更新。
k-partition是O(1),test or update
bottom-k最低是O(logk),to test if an update is needed;对于to update的情况,取决于实现方式,如果是sorted list,则O(k),如果是优先队列,则O(logk)。
test的意思就是单纯地比个大小。update是如果比完大小需要更换。对于k-partition,更换只涉及一个元素;对于bottom-k,更换完还涉及k个bottom的重新排序。
此外,关于modified次数(所有数据到来的情况下的时间开销),三者虽然都近似为O(klnn),但具体而言,k-mins是klnn,k-partition是kln(n/k),而bottom-k的小于kH_n小于klnn。


6.给定一个包含 n 个不同元素的集合 A,请证明在采用 k‐mins MinHash 算法来 构造集合 A 的 k‐mins sketch 的过程中,sketch 发生更新的期望次数为 O(k lnn)。
证明:
首先考虑k=1的Minhash情况。第i个key成为此前所有(包括这一个)的key中哈希值最小者的概率与此前其它的所有key是相等的,均为1/i(因为这是k=1的情况)。也就是说,每来一个key i,有1/i的概率更新1次。从而总的更新次数的期望为:\(\sum_{i=1}^{n}{1*\frac{1}{i}}=\sum_{i=1}^{n}{\frac{1}{i}}\),记为调和数H_n。由调和数的数学性质知,H_n<lnn。
那么对于k-mins的Minhash情况,有k个minhash值,因而此上界乘以k倍,为k lnn。故期望更新次数的期望为O(k lnn)。
七、给定集合 A={a, b, c, d, e, h}, B={a, c, e, f, g, m, n}。假设采用 k‐mins MinHash 算 法来处理集合 A 与 B。令 k=4,得到集合 A 和集合 B 的 k‐mins sketch 分别为 S(A)=( 0.22, 0.11, 0.14, 0.22), S(B)=( 0.18, 0.24, 0.14, 0.35)。(20 分)

  1. 请计算 A 和 B 的 Jaccard 相似性。
  2. 请根据 S(A)和 S(B)来计算集合 A 与 B 合并后的 k‐mins sketch,即 S(A∪B)。
  3. 请基于 S(A∪B)估计集合 A 和集合 B 的 Jaccard 相似性。
  4. 在该问题中,基于 k‐mins MinHash 算法的估计方差为多少?

八、给定一个有向图 G=(V, E),以及一个节点 v。在图 G 中可以到达节点 v 的集合定义为 Reach‐1(v)={u∈V|u 在图 G 中可达 v}。对于集合 Reach‐1(v),我们可以采用 k‐mins MinHash 算法来生成该集合的一个 k‐mins sketch,记为 S(v)。(20 分)

  1. 请设计一个算法计算图中所有节点的 k‐mins sketch,即对于任意的 v 计算所有的 S(v)。
    第四章BFS的反向bottom-1来k次
  2. 请描述如何用 S(u)和 S(v)来计算| Reach‐1(v)∪Reach‐1(u)|?
    方法一:
    两个对应的位置取最小值,然后得出来一个sketch之后,为了估计它所以再取平均,然后再取倒数再减一。也就是如下

    方法二:
    \(n_u\)是u的反向可达集的大小
    先对S(u)进行转化
    \(s'(u)_i=-{ln(1-s(u)_i)}\sim Exp(n_u)\)
    S(v)也按相同步骤转化
    最后得到S'(u)、S'(v)
    接着S={min{\(s'(u)_i,s'(v)_i\)}\(\sim Exp(n)\)}
    得到
    \(\hat{n}=\frac{k-1}{ {\textstyle \sum_{k}^{i=1}s_i} }\)