《大数据:互联网大规模数据挖掘与分布式处理》(第二版)第四章习题答案

参考书籍:《大数据:互联网大规模数据挖掘与分布式处理》(第二版)

原版英文书籍:Mining of Massive Datasets

注:答案为本人自己做的,并非标准答案,仅供参考。
如有错误,请私信我,我将及时修改。

《大数据:互联网大规模数据挖掘与分布式处理》(第二版)第四章习题答案

注:本书包含大量习题,较难的习题或习题中较难的部分都会用!标记,最难的习题用!!标记。

习题4.2.1

( a )

对每个元组产生一个随机整数,范围是0~19,并当且仅当随机数为0是才存储该元组。

对存储下来的元组,以university属性分类,对于同一university属性的元组,统计不同的courseID数量,将元组数/courseID数,得到的就是每所大学在一个课程中的平均学生数目。

SELECT university, COUNT(*)/COUNT(DISTINCT courseID) AS avg_student
FROM Grades_hash_0
GROUP BY university

( b )

对每个元组产生一个随机整数,范围是0~19,并当且仅当随机数为0是才存储该元组。

对存储下来的元组,统计grade>=3.5的数量,除以元组数就得到GPA不低于3.5分的学生所占的比例。

SELECT COUNT(*) AS num
FROM Grades_hash_0
WHERE grade>=3.5

SELECT COUNT(*) AS sum
FROM Grades_hash_0

ratio=num/sum

( c )

对每个元组产生一个随机整数,范围是0~19,并当且仅当随机数为0是才存储该元组。

设置一个计数器count,初始化为0。

对存储下来的元组,以courseID属性分类,统计课程数量sum。对于同一courseID属性的元组,统计greade为A的数量和元组数量,若两者相除结果≥0.5,计数器count加1。

最终结果=count/sum。

count=0

for courseid in courseID:
	
	SELECT COUNT(*) AS num_A
	FROM Grades_hash_0
	WHERE grade='A'
	GROUP BY courseID

	SELECT COUNT(*) AS num
	FROM Grades_hash_0
	GROUP BY courseID
	
	if(num_A/num>=0.5)
		count++

SELECT COUNT(DISTINCT courseID) AS sum
FROM Grades_hash_0

ratio=count/sum

习题4.3.1

如果使用3个哈希函数,相当于往80亿个靶位上投30亿支飞镖,某个位为0的概率为e-3/8。一个非S中的元素若要成为伪正例的话,那么就必须在3个哈希函数的作用下都映射为1,而该概率为(1-e-3/8)3≈0.0306。

如果使用4个哈希函数,相当于往80亿个靶位上投40亿支飞镖,某个位为0的概率为e-1/2。一个非S中的元素若要成为伪正例的话,那么就必须在4个哈希函数的作用下都映射为1,而该概率为(1-e-1/2)4≈0.0240。

!习题4.3.2

一次哈希未命中的概率为 n / k − 1 n / k \frac{n/k-1}{n/k} n/kn/k1

k k k次哈希都未命中的概率为 ( n / k − 1 n / k ) k = ( 1 − k n ) k ≈ e − k 2 n (\frac{n/k-1}{n/k})^k=(1-\frac{k}{n})^k≈e^\frac{-k^2}{n} (n/kn/k1)k=(1nk)kenk2

假阳率= ( 1 − e − m n / k ) k (1-e^\frac{-m}{n/k})^k (1en/km)k

使用 k k k个哈希函数的方法的假阳率= ( 1 − e − k m n ) k (1-e^\frac{-km}{n})^k (1enkm)k

这样做的假阳率与使用 k k k个哈希函数的方法的假阳率相等。

!!习题4.3.3

f ( k ) = ( 1 − e − k m n ) k f(k)=(1-e^\frac{-km}{n})^k f(k)=(1enkm)k

f ′ ( k ) = 0 f'(k)=0 f(k)=0,即 ( 1 − e − k m n ) k ∗ l n ( 1 − e − k m n ) ∗ ( − e − k m n ) ∗ ( − m n ) = 0 (1-e^\frac{-km}{n})^k*ln(1-e^\frac{-km}{n})*(-e^\frac{-km}{n})*(-\frac{m}{n})=0 (1enkm)kln(1enkm)(enkm)(nm)=0,解得: k = l n ( 2 ) ∗ n m k=ln(2)*\frac{n}{m} k=ln(2)mn

习题4.4.1

( a ) h(x)=2x+1 mod 32

流中整数ah(a)h(a)二进制表示r(a)
37001110
13000110
49010010
13000110
511010110
919100110
25001010
613011010
511010110

R=maxa r(a)=0,故估计的独立元素数目=2R=1。

( b ) h(x)=3x+7 mod 32

流中整数ah(a)h(a)二进制表示r(a)
316100004
110010101
419100110
110010101
522101101
92000101
213011010
625110010
522101101

R=maxa r(a)=4,故估计的独立元素数目=2R=16。

( c ) h(x)=4x mod 32

流中整数ah(a)h(a)二进制表示r(a)
312011002
14001002
416100004
14001002
520101002
94001002
28010003
624110003
520101002

R=maxa r(a)=4,故估计的独立元素数目=2R=16。

!习题4.4.2

h(x)=2x+1 mod 32 不是一个好的哈希函数,因为对流中任意的整数 a a a h ( a ) h(a) h(a)一定是奇数,故 h ( a ) h(a) h(a)的二进制表示的最后一位一定是 1 1 1,因此, r ( a ) r(a) r(a)一定为0。

对一般的h(x)=ax+b mod 2k,建议尽量生成更多不同的哈希值(完美情况是使h(a)满足平均分布),使对独立元素的估计更加精准。

习题4.5.1

在这个流中,有3个元素出现了2次,有个1元素出现了3次。

二阶矩=3×22+1×32=21

三阶矩=3×23+1×33=51

!习题4.5.2

n n n个元素,其中有 m m m个独立元素。

这些元素最均匀的分布:m-1个元素出现 n − 1 m \frac{n-1}{m} mn1次,1个元素出现 n + m − 1 m \frac{n+m-1}{m} mn+m1次。这种情况下,奇异数是最小的,为 ( m − 1 ) × ( n − 1 m ) 2 + 1 × ( n + m − 1 m ) 2 = n 2 − 1 m + 1 (m-1)×(\frac{n-1}{m})^2+1×(\frac{n+m-1}{m})^2=\frac{n^2-1}{m}+1 (m1)×(mn1)2+1×(mn+m1)2=mn21+1

这些元素最极端的分布:1个元素出现n-m+1次,其余m-1个元素各出现1次。这种情况下,奇异数是最大的,为 1 × ( n − m + 1 ) 2 + ( m − 1 ) × 1 2 = n 2 − ( 2 n − m ) × ( m − 1 ) 1×(n-m+1)^2+(m-1)×1^2=n^2-(2n-m)×(m-1) 1×(nm+1)2+(m1)×12=n2(2nm)×(m1)

习题4.5.3

每个Xi.value分别是:2,3,2,2,1,1,2,1,1。

习题4.5.4

每个变量的最终值是:2,3,2,2,1,1,2,1,1。

基于每个变量估计出的三阶矩分别是:63,171,63,63,9,9,63,9,9。

估计三阶矩的均值为:51。

三阶矩真实值=3×23+1×33=51。

误差为0。

习题4.5.5

当m=1时,1=12,显然成立。

当m=i(i>=2)时,假设有1+…+(2i-1)=i2
则,当m=i+1时,1+…+(2i-1)+(2i+1)=i2+2i+1=(i+1)2

故,得证。

习题4.5.6

将v=Xi.value转变为n×(v4-(v-1)4)。

习题4.6.1

当k=5时,估计值为3,包括2个大小为1的桶的大小,1个大小为2的桶的大小的一半,真实值为3,此时,估计值与真实值的差值为0。

当k=15时,估计值为10,包括2个大小为1的桶的大小,1个大小为2的桶的大小,1个大小为4的桶的大小以及1个大小为4的桶的大小的一半,真实值为9,此时,估计值与真实值的差值为1。

!习题4.6.2

假设位流左边还要无穷个元素。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

习题4.6.3

第一个1到达窗口时,桶序列为:

在这里插入图片描述

第二个1到达窗口时,桶序列为:

在这里插入图片描述

第三个1到达窗口时,桶序列为:

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值