我是研究这个领域的,在这里简单介绍一下social network analysis的几个研究热点。
首先简介network的定义。一般来说,一个network被定义为一个random matrix,即网络中有哪些nodes是确定的,而nodes之间是否有edge相连是随机的,任何两个nodes之间有一个edge probability,整个网络上的edge probabilities就构成了一个probability matrix. 如果网络中有n个nodes,那么probability matrix就是一个n by n matrix。
social network analysis作为统计学的新兴领域,可称为“热点"的问题汗牛充栋。因此简要介绍下自己比较熟悉的三个方向:
1. 估计一个静态网络的随机产生机制。这是一个非常大的领域,方法多,理论成熟,应用广泛。主要包括两大问题:1. community detection(即clustering),和 2. link prediction
先说community detection. 给定一个静态网络的observation,要求估计edge probability matrix,或者其某种特定结构,比如给nodes聚类。一开始人们只能处理非常简单的结构,比如假设网络中的nodes分属于K个communities(或者叫groups),两个nodes间的edge probability完全由他们各自属于哪个communities决定。这个叫stochastic blockmodel. 而对应的聚类分析就叫做community detection,具体的估计方法这里就不介绍了。
social network analysis里这种通过edges对nodes进行的聚类是高度精确的。有多精确呢?随着network中nodes增多,正确率会迅速地收敛于100%,这在一般machine learning里那种k-means处理的聚类分析的setting下是天方夜谭(相当于说,要求被聚类的点越多,整个聚类的正确率也越高)。
再说link prediction. 理论发展到现在,人们已经有办法直接估计这个edge probability matrix. 有了probability matrix就可以做link prediction,鉴别哪些edges看起来shaky,他们的出现纯属巧合,或者可能有观察错误;而哪些node pairs之间看起来应该有edge相连。一个热门的应用就是分析贩毒、恐怖主义等跨国犯罪组织的网络,这些网络通常中通常有大量edges无法观测到,而link prediction可以让相关的调查监控精确制导。
social network analysis的数学,很多乍看都是违反统计学常识的。众所周知,一个Bernoulli(p)随机变量,如果只有一个观测值,就不可能精确估计p. 再如一个simple regression,不管是linear还是nonparametric,如果只观察到y而没有观察到x,就不能进行任何有意义的估计;特别地,如果y中带noise,无法对y进行denoise. 而这两个在经典setting下无法逾越的障碍,到了social network analysis里link prediction的非常相似的setting中都可以轻松克服。
2. 研究一个静态网络和node变量的互动关系。这是一个有很多方法,理论不成熟,又有着巨大应用前景的领域。目前研究的主要关注点是:用node covariates帮助network估计,或者反之。
首先再稍微介绍下node covariates. 很多networks里除了观测到edge有无(有时候还有edge weight大小),还会观测到node上的covariates. 比如在一个小学生的网络中,除了谁跟谁是朋友,每个小学生还带有性别、年龄/年级、家庭情况、兴趣爱好等等种种属性,它们量化之后就成了node covariates.
然后介绍问题。 上一个大问题中提到的两个小问题,都可以加入node covariates进行分析。比如community detection,不仅network中有clustering结构,node covariates中也可以有。能不能将两者combine起来,在finite sample时提高clustering的精确度呢?(因为实际中network有时很小,根本达不到理论上精确度接近100%所需nodes数目)。
另一种方向上的研究,即用network帮助估计node covariates,想法也很自然。一个人的社交网络可能给自己带来影响,所以可以希望通过研究一个人的社会联系,加上此人某些已观察到的属性,来判断其某种未观测到的属性。
两者在建模上也有多种选择,到底是node covariates决定了network,还是反之,还是两者共同取决于一个更本质的结构(比如clustering结构),现在各种paper莫衷一是。大致上还是必须依不同的应用情境具体分析。
还有更explorative的统计学工具,比如test来判断network和node covariates之间是否correlated,注意这里想要定义一个persuasive的correlation都不是件容易的事。
3. 动态网络分析。这是一个数据丰富但整齐性差、渴求方法、理论几乎空白、应用前途不可限量的领域。它的问题比前面提到的两大块显得分散许多,我只能简单地举几个例子。
首先,所有传统上对静态网络提的几乎所有估计问题,都可以原封不动搬到动态网络上。这也是目前动态网络屈指可数的理论成果最集中的部分。具体做些什么大家不难脑补,我就不赘述了。不过我要提一点,静态网络中的一个问题,在动态网络中可以有变种,如link prediction,有了1~T时刻的观测,在T+1时刻是要求预测整个网络,还是要求对partially observed的T+1时刻网络的edges进行去伪补缺。
其次,数据多但是大多又不理想。动态网络本质上是一个复杂的时间序列,每一个时间点上snapshot却比一般的时间序列数据复杂得多。而且时间点的数目经常非常之少,这就导致平稳性的估计通常既必需又困难。总而言之,处理这样的数据要求高超的建模技巧和严格而谨慎的分析。目前还没有任何一个动态网络的模型能如stochastic blockmodel一样得到公认,作为很多人研究的基础和对象,相反各种模型差距甚大,这足以说明问题的难度。具体处理数据又常遇到额外的障碍,比如老nodes退出、新nodes加入,动态网络的edge经常有缺失,nodes数目也比较小,等等。
再次,某些动态网络数据和静态网络大不相同。静态网络数据必然是一个snapshot,即同时观察到所有能观测的nodes和edges。而某些动态网络,如Twitter的tweet,新浪微博的微博,人人和微信的留言、回复、分享(这些都可以被看做用户(nodes)之间的有向边(arch)),其edges自带time stamp,并非同时出现。最简单的模型是假设平稳性,然后把每个node pair上边的出现看做Poisson过程(或者其他过程)的事件,但是即使这么简单的模型,MLE估计已经有困难。过程的速率之间由网络结构而产生dependence,依从于某个我们希望估计的未知结构,但是现实数据中,经常难以在每条边上观测到足够数量的“edge出现”事件,来允许我们单独估计一个node pair间的速率。何况在这种event based的动态网络中,其本身的时间平稳性假设就很成问题,而目前对它的change point analysis的研究还处于起步阶段。
现在就想到这么多了,以上。
来源:知乎 www.zhihu.com
作者:
Jack Diamond
【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载
此问题还有
7 个回答,查看全部。
延伸阅读:
大学应不应该对社会开放?
社会上有什么闲职?