二部图Decay Centrality定义及Python实现方法咨询
Decay Centrality相关问题解答
二部图场景下的Decay Centrality定义
目前没有公开的、被学界广泛认可的二部图专属Decay Centrality标准化定义。
通用单分图场景下的Decay Centrality核心逻辑为:以衰减系数为基础,给距中心节点不同最短路径长度的其他节点赋予随距离增大指数衰减的权重,所有节点的权重累加值即为当前节点的中心性得分,节点的短路径连接越多,得分越高。
现有公开的中心性参考资料仅覆盖单分图的Decay Centrality计算规则,未针对二部图的节点异质性、仅跨类连边的特性给出专属定义。学术场景下使用二部图Decay Centrality时通常采用两类适配方案:
- 先将二部图投影为对应类别的单分图,再套用通用Decay Centrality公式计算
- 不做投影,直接在二部图上计算最短路径,针对两类节点的连接特性调整衰减系数,仅统计有效跨类路径的权重贡献
Decay Centrality的Python实现情况
目前没有成熟的、开箱即用的Decay Centrality官方Python实现。
主流图计算库NetworkX仅内置度中心性、接近中心性、介数中心性、特征向量中心性等常见中心性度量接口,未提供Decay Centrality的内置计算功能。公开渠道可查的第三方实现均为开发者基于通用定义自行编写,未做二部图场景适配。
以下是基于NetworkX的通用Decay Centrality最小可用实现,可根据二部图的具体定义调整逻辑适配场景:
import networkx as nx import math def decay_centrality(G, decay_delta=0.5): """ 通用Decay Centrality计算函数 参数: G: NetworkX图对象,支持无向图、有向图、二部图 decay_delta: 衰减系数,取值范围(0,1),数值越小距离带来的权重衰减越快 返回: 节点到中心性得分的映射字典 """ res = {} for n in G.nodes(): shortest_paths = nx.single_source_shortest_path_length(G, n) score = 0 for target_node, dist in shortest_paths.items(): if target_node == n: continue score += math.pow(decay_delta, dist) res[n] = score return res
如果需要适配二部图专属计算规则,可在上述代码基础上修改:比如新增节点类型判断逻辑、给不同类型节点的路径设置差异化衰减系数、过滤同类型节点的无效路径等。
内容的提问来源于stack exchange,提问作者Eshan Jain
相关产品推荐
相关产品推荐

