背景
EasyGraph是复旦大学网络大数据实验室开发的一款基于Python语言的网络分析开源工具箱。它包含较为全面的结构洞占据者检测方法的开源库,同时覆盖了网络嵌入和其他一些传统的网络分析方法。EasyGraph支持多种网络数据类型,具有良好的兼容性。此外,它利用混合编程和并行计算提高了大多数经典网络分析算法的运行效率。
本文将介绍使用EasyGraph对结构洞经典指标有效大小(effective size)、效率(efficiency)、约束(constraint)和层级(Hierarchy)进行测量的流程
EasyGraph源代码
快速安装:pip install Python-EasyGraph
有效大小(effective size)
effective size源代码
当某个节点的联系人相互连接,它的自我中心网络(以某个节点为中心的一级网络)就具有冗余性。节点的自我网络的有效大小就是它的关系中的非冗余部分的度量
e
(
u
)
=
∑
v
∈
N
(
u
)
∖
{
u
}
(
1
−
∑
w
∈
N
(
v
)
p
u
w
m
v
w
)
e(u) = \sum_{v \in N(u) \setminus \{u\}} \left(1 - \sum_{w \in N(v)} p_{uw} m_{vw}\right)
e(u)=v∈N(u)∖{u}∑
1−w∈N(v)∑puwmvw
p
u
w
p_{uw}
puw指u和w之间的归一化权重,而
m
v
w
m_{vw}
mvw指v和w之间的归一化权重除以v与其邻居节点最大的归一化权重。
使用样例:
from easygraph.datasets import get_graph_karateclub
import easygraph as eg
G = get_graph_karateclub()
导入数据集并建图
sz=effective_size(G)
for node,val in sz.items():
print(node,val)
输出一个字典表示每个节点的有效大小
效率(efficiency)
efficiency源代码
效率是结构洞理论中的一个概念,指一个节点的有效大小除以它的度数,归一化地度量一个节点的关系的非冗余程度
使用样例:
ef=efficiency(G)
for node,val in ef.items():
print(node,val)
输出一个字典表示每个节点的效率
约束(constraint)
这一指标衡量某一节点被其社交网络所约束的程度。一个节点附近较高的约束意味着较高的网络密度和较低的结构洞数量
c
(
v
)
=
∑
w
∈
N
(
v
)
∖
{
v
}
ℓ
(
v
,
w
)
c(v) = \sum_{w \in N(v) \setminus \{v\}} \ell(v, w)
c(v)=w∈N(v)∖{v}∑ℓ(v,w)
一个节点的constraint是它与所有邻居节点local_constraint的总和
ℓ
(
u
,
v
)
=
(
p
u
v
+
∑
w
∈
N
(
v
)
p
u
w
p
w
v
)
2
\ell(u, v) = \left(p_{uv} + \sum_{w \in N(v)} p_{uw} p_{wv}\right)^2
ℓ(u,v)=
puv+w∈N(v)∑puwpwv
2
使用样例:
cons=constraint(G)
for node,val in cons.items():
print(node,val)
输出一个字典表示每个节点的约束
层级(hierarchy)
层级指示了所有的约束集中在一个连接的程度。当一个节点的层级等于1.0,意味着所有的约束集中在一个连接上
hierarchy源代码
hier=hierarchy(G)
for node,val in hier.items():
print(node,val)
使用实例与总结
effective_size,constraint和hierarchy这三个指标都暗示了结构洞存在的位置,以下是使用karate club数据集作的示例:
此图像中,红色标志了effective_size最大的5个节点;黄色标志了constraint最小的5个节点,而蓝色标识了hierarchy最小的五个节点。
可以看出,effective_size最大的5个节点有4个与constraint重合,体现了这些经典指标与结构洞的高度关联,为信息的最大化传播指明了方向。