局部结构:模体与聚集
网络的整体指标——平均度、平均最短路、度分布——能把两张很不一样的网说成同一张。真正区分它们的是局部:三个点之间的小图案,一个点和它邻居之间的关系。这一页量四样东西:三角形为什么这么多、哪些三节点图案比随机多得反常、网络最结实的核心是哪一块、以及强者到底是连强者还是连弱者。其中三个实验台都会在半路上给出同一个警告:局部指标只有对着一个正确的零模型才有意义。
LAB 01
三角闭合
按共同好友数逐条加边,看聚集系数怎么一路爬上去
问题
社交平台的"你可能认识的人"推的都是共同好友多的人。如果所有边都按这个规则加,网络会变成什么样?这一台把"随机加边"和"三角闭合加边"放在同一张起始图上比,只改这一条规则。
模型
聚集系数衡量"邻居之间也互相相连"的比例,和同规模随机图对比才有意义。
Ci = 2ei ⁄ (ki(ki−1)), C = ⟨Ci⟩, Crand ≈ ⟨k⟩ ⁄ n
ei 是 i 的邻居之间实际存在的边数,ki 是 i 的度。小世界的判据正是 C ≫ Crand 而 L ≈ Lrand。聚集系数:实测 / 同等随机图—
是随机图的几倍—
平均最短路—
三角形数 / 边数—
"你朋友的朋友,很可能也是你的朋友。"这句常识在网络里有一个名字叫三角闭合,而它的后果比想象中大。这里从同一张稀疏随机图出发,往上加 200 条边,唯一的区别是这些边怎么挑。把"走三角闭合的比例"拖到 0:边随便加,聚集系数 0.0605,而同样边数的随机图是 0.0616——0.98 倍,一模一样,因为它本来就是随机图。拖到 100%:聚集系数 0.2649,是随机图的 4.30 倍,三角形从 69 个涨到 596 个。同样多的点、同样多的边,只因为加边时优先补上"共同好友最多"的那一对,网络的性格完全变了。现在看第三行——这一页真正的重点。平均最短路只从 2.604 涨到 2.897,涨了 11%。也就是说:聚集系数涨了 4.3 倍,而路径长度几乎没变。这正是"小世界"的定义:高聚集 + 短路径,两者本来是矛盾的(规则格子聚集高但路径长,随机图路径短但聚集低),而真实的社会网络两样都要。瓦茨和斯特罗加茨 1998 年是从规则格子出发随机重连得到它的;这一页是从随机图出发按三角闭合加边得到它的——两条路通向同一处,说明小世界不是某种特殊构造,而是"局部偏好 + 少量随机"的普遍后果。(把比例拖到 50% 看中间状态:聚集 0.1456(2.36 倍),路径 2.722。并不需要"全部按三角闭合",一半就够拿到大部分的聚集度。现实中的社交推荐——"你可能认识的人"——做的正是这件事,而它的副作用也在这张图里:三角闭合把人推进更紧的小圈子,跨圈子的弱连接相对变少。)
LAB 02
模体统计
把所有三节点子图数一遍,和随机零模型比出哪种显著超额
问题
基因调控网络里,某些三节点接法出现的次数远超随机预期。米洛等人认为这些"模体"是被进化挑出来的功能模块。问题是:怎么判断"远超",以及和什么比。
模型
把每种三节点子图的实际计数与零模型分布比较,用 Z 值衡量。
Zi = ( Nireal − ⟨Nirand⟩ ) ⁄ σirand
零模型必须同时保持入度、出度和双向边的条数——少保持一样,纯随机网络也会报出 Z ≈ 4 的假阳性。这一台的最后一个下拉框就是做这个对照。最显著的那一种—
零模型里前馈环的均值与标准差—
前馈回路:实测 / 零模型均值—
三节点反馈环:实测 / 零模型均值—
弧数 / 零模型个数—
三个点之间,有向边一共有 13 种连通的接法。米洛等人 2002 年在《科学》上提出:"数一数每种出现了多少次,再和一个保持度数的随机网络比一比,多得反常的那些,就是这个系统的功能模块(motif)。"默认设置掺入了前馈回路,结果很干净:FFL 实测 19 个,零模型平均只有 6.7 个,Z = 4.67。把掺入强度拖到 100%:37 个对 10.0 个,Z = 12.09。换成"掺入三节点反馈环":环 18 个对 2.6 个,Z = 9.66,而 FFL 的 Z 掉到 −0.46。两种结构互相不干扰,这个方法确实能认出来是哪一种。前馈回路为什么重要?A 直接管 C,同时 A 经过 B 也管 C。这个多余的"绕道"给出了一个真实的功能:信号持续存在时才放行,短暂的噪声会被过滤掉;而撤销信号时可以立刻关闭。大肠杆菌的转录调控网络里,FFL 的数量远超随机预期,它是一个用三个基因搭出来的"延时开关"。三节点反馈环则相反:它是振荡和记忆的来源。接下来是这个实验台真正的主角:最后那个下拉框。把网络切成"纯随机有向图",零模型保持"只保持出入度"(常见做法)。读数说:最显著的是全双向三角 A↔B↔C,Z = 3.74,"显著"。可这张网是纯随机生成的,里面什么模体都没有。换成"还保持双向边的条数":最显著的那种只剩 Z = 1.38,什么也没有。差别在哪?朴素的边交换会改变网络里双向边的条数,于是任何含双向边的图案都会被系统性地误判为"显著富集"。米洛那篇论文里明确要求零模型必须同时保持入度、出度和双向边数三样,而后来大量引用它的工作只保持了前两样。这是整个"网络模体"文献里最常见的假阳性来源。它的教训可以推广到所有基于零模型的检验:"和随机比"这句话里,"随机"具体指什么,决定了你会得到什么结论。(还有一条实际建议:把零模型个数从 20 拖到 150,Z 值会稳下来。Z 是一个比值,分母是零模型的标准差;零模型太少,分母本身就不准,Z 会乱跳。文献里常见的做法是 1000 个。) 新加的第二张图是 Z 值的来历,也是这一台真正的判据。它把「前馈回路」这一类在每一张随机重连图里的个数做成直方图,红竖线是真实网络里的个数,灰线标出这团数的 μ 和 μ±σ、μ±2σ。Z 值就是红线离这团数有几个标准差——上面那排柱子是结论,这张图才是尺子。先把重连次数从 10 拖到 120。实测直方图会明显收窄(σ 从 2.69 收到 2.55),Z 值也从 4.44 稳定到 4.60。次数太少时,你量出来的「标准差」本身就在抖,Z 值自然跟着抖——这是所有基于重采样的显著性判断都要先解决的问题。然后换一种零模型(保留双向边 / 不保留)。整团直方图会整体平移:μ 从 7.3 挪到 8.5,σ 从 2.55 张到 3.05,Z 值随之从 4.60 掉到 3.45——同一个网络、同一个子图,显著性差了四分之一。这件事值得反复强调:「这个模体显著」从来不是网络本身的性质,而是「相对于我选的这个零模型显著」。换一个零模型就是换一把尺子,尺子变了读数当然变。实际做研究时,零模型的选择往往比统计量的选择更需要辩护。
LAB 03
k-核分解
一层层剥掉低度节点,剩下的核心就是网络最结实的部分
问题
防疫要找"关键人物",舆情要找"核心圈"。是找粉丝最多的那个,还是找抱团最紧的那一群?这两个答案可以完全不同,而 k-核给出的是后者。
模型
k-核:反复删掉度数小于 k 的点,删不动为止。
Hk = 最大子图,使其中每个点在子图内的度 ≥ k; 核数 c(v) = max{ k : v ∈ Hk }
一个明星有一万个粉丝、粉丝彼此不认识,它的核数是 1;一个 17 人的互相全认识的小圈子,核数是 16。基塔克等人 2010 年发现传播力由核数而非度数决定。最大核数 k_max—
最大核里有几个点—
最大核成员的平均度 / 全图平均度—
与"直接取度数最高的同样多个点"重合多少—
全场度数最高的那个点—
k-核的定义只有一句话:反复删掉度数小于 k 的点,直到删不动为止,剩下的就是 k-核。一个点的"核数"是它能待到的最大的 k。这个量和度数完全不是一回事,默认这张图就是专门做出来说明这一点的。图里有一个 17 人的小圈子(互相全认识),还有三个"大明星",各自带着一大群只认识明星的粉丝。读数最后一行:全场度数最高的那个点,度数 34,核数只有 2。它的度数是圈子成员(约 16)的两倍多,但它的邻居互相之间毫无关系,一层就被剥光了。而 k_max = 16 的最大核,正是那 17 个人的圈子。如果只按度数取前 17 名,会有 3 个名额被明星占走,重合度 82%。"最有影响力"和"最结实"是两个问题。基塔克等人 2010 年在《自然·物理》上给的结论是:传播能力最强的节点,是核数最大的那些,而不是度数最大的那些。一个大明星能一次触达很多人,但这些人之间不互相传染,而核心圈子里的人会反复互相强化。这也是为什么"谁是关键人物"这个问题在防疫、舆情和组织架构里答案都不是"粉丝最多的那个"。换成"无标度(优先连接)"再看一眼,结果会让人意外:k_max 只有 2,而且全部 120 个点都在这个 2-核里。一个度数分布极度不均、最高 21 度最低 2 度的网络,核结构却完全是平的——没有任何层次可言。这是优先连接模型的一个已知缺陷:它造得出重尾的度分布,造不出真实网络的核心—边缘层次。真实的互联网、蛋白质网络、引文网络都有几十层核,所以"度分布对上了"远不等于"模型对了"。("核心—边缘"那一档给出 k_max = 11、25 个点、重合 100%——当核心本来就是度数最高的那群人时,两种办法给同一个答案。这提醒我们:k-核和度数会不会分道扬镳,取决于网络本身的结构,不能一概而论。)
LAB 04
同配还是异配
社交网喜欢强强联手,技术网喜欢强弱搭配——一个相关系数说清
问题
合作网里名人和名人合作,互联网里大路由器接小路由器。这两类网络在"谁连谁"上有一条整齐的分界,而且它决定了网络有多难打散。一个相关系数就能把它量出来。
模型
同配系数就是"边两端度数"的皮尔逊相关系数。
r = [ M−1Σe jeke − (M−1Σe ½(je+ke))² ] ⁄ [ M−1Σe ½(je²+ke²) − (…)² ]
je、ke 是边 e 两端的度,M 是边数。r > 0 同配(社交网 0.1~0.36),r < 0 异配(互联网 −0.19)。重尾度分布会强制 r < 0(结构性异配),所以必须和保持度序列的零模型比。同配系数 r—
属于哪一类—
两端都是前 20% 高度数节点的边—
度序列有没有被改动—
同配系数 r 就是"边两端度数"的皮尔逊相关系数,取值在 −1 到 1 之间。r > 0 叫同配:高度数的点倾向于互相连接;r < 0 叫异配:高度数的点倾向于连低度数的点。纽曼 2002 年统计了一批真实网络,发现了一条整齐的分界:社会网络几乎都是同配的(合作网 r ≈ 0.12~0.36,名人互相认识,普通人互相认识);而技术网络和生物网络几乎都是异配的(互联网 r ≈ −0.19,蛋白质相互作用网 r ≈ −0.16,大路由器连小路由器,枢纽机场连小机场)。这条分界至今没有公认的解释,但它的后果很清楚:同配网络里的核心更抱团、更难打散,传播一旦进核心就停不下来;异配网络更脆——打掉几个枢纽,网就散了。先选"随机图",把重连滑杆放在 0:r = −0.0333,"中性"。随机图本来就该是这样,这是一个自检。把滑杆拖到最右(同配方向):r = 0.9201,高—高之间的边从 28.7% 升到 52.9%。拖到最左:r = −0.6184,高—高边只剩 8.8%。注意最后一行读数:每个点的度数一个都没变。整个重连过程只做"边的两端互换",度分布严格不变,变的只有"谁连谁"。这正说明:度分布和同配性是两个独立的自由度,知道了度分布,对网络的连接模式仍然一无所知。现在换成"无标度(优先连接)",再把滑杆拖到最右。r 从 −0.2374 只升到 −0.1978——拖满了也翻不过 0。这不是算法不够努力,是做不到。马斯洛夫和斯涅波夫 2002 年指出:当度分布是重尾的,几个超高度数的点根本没有足够多的"其他高度数点"可以连,它们被迫去连低度数的点,于是 r 被结构本身按在负数区。这叫结构性异配。它的实践含义很重要:观察到一个无标度网络是异配的,不能直接说"这个系统偏好强弱搭配",因为一个完全无偏好的零模型也会给出负的 r。正确的做法是和保持度序列的零模型比,看实测的 r 比零模型的 r 更负还是没那么负——又一次,问题不在于量了什么,而在于和什么比。 新加的第二张图是同配系数 r 的定义本身。每条边画两个对称的点(两端互换),横轴是一端的度、纵轴是另一端的度;橙线是 k_nn(k):度为 k 的节点,它的邻居平均有多少度。r 只是这团点云的皮尔逊系数——一个数字,脑子里不会出现任何画面;而点云沿哪条方向拉长、k_nn(k) 是升是降,才是「同配」「异配」这两个词的字面意思。在 ER 随机图上把倾向滑杆从异配扫到同配,效果非常干脆:实测 r 从 −0.618 一路走到 +0.920,点云从左上—右下的反对角带旋成贴着对角线的带,k_nn(k) 从下降翻成上升——而读数会一直提醒你,每个节点的度一个都没变。接着请把网络换成「BA 无标度」,再把滑杆推到最同配的一端。这时会出现一件看起来像故障的事:r 只能从 −0.237 爬到 −0.198,怎么推都转不正。换成「假枢纽」那张图更极端,−0.885 到 −0.856 就到头了。这不是滑杆坏了,是这张图的度序列根本不允许它同配。道理并不难:要让高度数节点彼此相连,就得有足够多的高度数节点可供配对;而无标度网络的重尾意味着枢纽极少、且度数极大,一个度为 40 的节点想找 40 个同样是枢纽的邻居,网络里压根没有这么多枢纽,它只能去连一大堆小节点——在不允许重边的简单图里,这是一条硬约束。这个现象叫结构性异配(Maslov & Sneppen, 2002):重尾度分布会强迫网络显得异配,哪怕背后根本没有任何「强者偏爱弱者」的机制。所以在真实网络里量到 r < 0,第一件该做的事不是解释它,而是先问:同样的度序列随机重连之后,r 本来就该是多少?
这一页想说的
整体指标看不出的东西,局部指标能看出来:三角闭合把随机图变成小世界(聚集 4.3 倍,路径只长 11%);模体普查能认出网络里的功能模块;k-核找出的核心和度数最高的那群人可以完全不是一回事(度数 34 的明星,核数只有 2);同配系数把社会网络和技术网络分成了两类。但这一页有三个实验台在同一件事上给出了同一个警告:朴素零模型会让纯随机网络"显著富集" Z = 3.74;无标度网络的负同配性是结构逼出来的,不是偏好;优先连接对得上度分布,却造不出真实的核结构。局部指标本身没有意义,有意义的是"它比什么大、比什么小"。