<< 返回本书主页
<< Back to the afterword page

8 流行性

吕汶桧 Wenhui Lyu

Jan. 2022

codes

8.1 背景问题

不同事物的流行程度存在差别。流行性往往呈现为幂律分布:受关注少的事物远多于受关注多的事物,有同样关注量的事物的数量总和在全体中的占比(y),是其关注量(x)的幂函数,亦即

y=axclgy=lgaclgxY=lgacX

一个例子是文本中的词语出现次数

词语出现次数

与正态分布相比,幂律分布是“偏态”的(不平等)。它有如下几个特点:

词语出现次数

此外,幂律还是无标度(scale-free)、自相似的(self-similar),F(ax)=bF(x)

关注程度-数量的幂律分布,经过几步数学变换,就可以变成排位序-关注程度的分布。

数学变换

排位序-关注程度的分布也呈幂律分布。位次越高的事物,越受欢迎。这一定律由齐普夫首先发现,故被称为齐普夫律(Zipf's law)。他发现,在《尤利西斯》中,把词语按照出现频次f由高到低排序,每一词语的位次为rr=1为出现次数最多的词语),有如下规律存在:

f(r)=Ar

其中A为常数。后来的补充性研究做了进一步的厘正:

f(r)=Arb,b1

排位序-关注程度的分布让我们发现,生活中某些常常谈及的东西,和学术研究的某些经典成果,也来自幂律分布的性质,例如

以上,我们讨论了流行性问题的现象、性质和规律。而流行性问题的成因或机理是什么呢?一个重要的理论是“富者愈富”:正因为人们喜欢追捧本来就很受欢迎的事物,事物的受欢迎程度才呈幂律分布。

流行性问题的相关主题

在作业中,我们就要来模拟“富者愈富”的过程,看看最终是否会得到幂律分布的结果。

8.2 计算实践:富者愈富过程的模拟

codes

8.2.1 作业描述与算法思路

按照顺序创建一系列网页:1,2,3,,j,,n=10000

当创建网页j时,以概率p1p选择ab执行:

分别取p=0.25,0.75运行程序。分析结果,观察最后的结果是否符合幂律分布。

节点入度01234m
节点个数n0n1n2n3n4nm

本次作业有一个特别要求:尽量不用太大的存储空间。如果我们在每一步创建下一个网页时,都要记住前面所有网页分别链接到了哪个网页,运行到后面总网页数较大时,就会占用很大的存储空间,运行速度会比较慢。

事实上,我们只用在每一步记住不同频数的网页有多少个,列表的长度最多为m,这远小于n。因为我们不用明确地知道当前创建的网页j链接到了之前的哪个网页i上,而只需要知道j链接到了入度为何(设为f)的网页上,然后对入度-个数的表格进行操作(nf减小1nf+1增加1),具体可见我代码中的degreeDictModifier函数。

此外,只存储节点入度-节点个数的信息时,如何实现随机选择一个网页,如何与入度成正比选择一个网页?我用到了random库的choices方法,采用了不同的加权值,实现了两种选择方式。具体可见我代码中的webCreate函数。

8.2.2 编程实现与要点说明

首先,定义一个函数degreeDictModifier,用以更新节点入度-节点个数的信息(被存储在“入度字典”degreeDict里):输入原先的入度字典degreeDict和被选中网页的入度choice,返回更新后的入度字典degreeDict

入度为choice的网页数减小1

入度为choice + 1的网页数增加1

接着,定义函数webCreate,创建新网页,并将其链接到之前创建的一个网页,调用degreeDictModifier函数,对degreeDict做出更新。

调用random库生成一个[0,1]的随机数,它小于p的概率为p,大于p的概率为1p

定义函数webCreateSeries,循环调用webCreate,完成10000个网页的创建,并把最终的degreeDict输出到结果文件output.csv中,返回作图需要的数据。

循环完成10000个网页的创建,得到最终的degreeDict

输出最终的degreeDictoutput.csv

整理数据,以方便主程序中作图,返回作图需要的数据xPoints, yPoints

主程序就比较简单了,直接给定np值调用webCreateSeries即可,得到相应的横轴纵轴数据x1, y1x2, y2

接下来就是作图。先作入度-个数图(ax1ax2)。该图应当符合幂律分布。

对入度和幂律取双对数作图(ax3ax4)。该图应当是一条直线。

取双对数作图后,入度较大时,图形呈锯齿状,有的入度恰好存在网页,有的入度不存在网页。为了让图更好看,让网页数amount(degree)degree[degreei,degreemax]积分,w=degreeidegreemaxamount(degree),它指的是有多少网页的入度大于degreei

得到入度-大于该入度的总网页数w后,取双对数作图ax5ax6。分析w的表达式,这一图形应为一条直线。

8.2.3 结果与分析

n = 10000 p = 0.25n = 10000 p = 0.25n = 10000 p = 0.75
degreeamountdegreeamountdegreeamount
0800531105714
197332112136
23603322948
31723413467
41213614269
5723825145
6453926115
738411766
841433840
919451924
10154711022
11134811113
127492127
138611137
1414623145
158641153
167651162
178691173
188711181
193871192
2031021202
2131071211
2241111222
2321391232
2421551241
2631821271
2742331381
2832631451
29213761  

 

在我们的算法产生完10000个网页后,“入度 — 网页数”基本上呈幂律分布。这一点在左下图中体现得尤为明显。取双对数做图后,“入度 — 大于这一入度的网页总数”的图像基本是一条直线。

流行性问题的相关主题

接下来分析p值对于这一分布的影响。通过比较n=10000,p=0.25n=10000,p=0.75的输出结果,p的值对于最后的分布很可能有以下影响(是否真的有这些影响,还需要更严格的数学证明,或取更多组数据做统计学分析):

<< 返回本书主页
<< Back to the afterword page