ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Cytoscape.js 归一化度中心性(degreeCentralityNormalized / dcn)完全指南

Cytoscape.js 归一化度中心性(degreeCentralityNormalized / dcn)完全指南 数据可视化【免费下载链接】cytoscape.jsGraph theory (network) library for visualisation and analysis项目地址https://gitcode.com/gh_mirrors/cy/cytoscape.js点击查看免费下载导读归一化度中心性normalized degree centrality是图分析中最常用的节点重要性度量之一它把每个节点的度中心性除以图中所有节点的最大度中心性将结果压缩到0 ~ 1区间从而可以在不同规模、不同边权分布的图上横向比较节点的重要程度。本文以 Cytoscape.js 的eles.degreeCentralityNormalized()简写dcn()为核心完整讲解其 API 签名、返回值结构、带权/无向/有向等各场景的语义并结合 源码实现 与 单元测试 说明其归一化原理与边界行为。读完本文你将能够直接在项目中调用dcn()识别图中最具连接影响力的节点并理解它与未归一化的degreeCentrality()dc()之间的换算关系。一、方法概览与别名degreeCentralityNormalized是 Cytoscape.js 集合collection层的图算法方法位于 src/collection/algorithms/degree-centrality.mjs。源码在定义完elesfn后提供了三组等价别名elesfn.dc elesfn.degreeCentrality; elesfn.dcn elesfn.degreeCentralityNormalised elesfn.degreeCentralityNormalized;即dcn与degreeCentralityNormalised英式拼写均为degreeCentralityNormalized的简写调用效果完全相同cy.$().dcn()等价于cy.$().degreeCentralityNormalized()cy.$().dc()等价于cy.$().degreeCentrality()这些方法通过 src/collection/algorithms/index.mjs 中import degreeCentrality from ./degree-centrality.mjs以及后续degreeCentrality导出注册到集合原型上因此任何 Cytoscape.js 集合cy.$()、cy.nodes()、cy.elements()等都可以直接调用。二、返回值结构归一化的核心契约根据官方文档 degreeCentralityNormalized.mddcn()的返回值根据directed选项分为两种形态。2.1 无向图options.directed: false返回一个对象内含一个函数{ /* 指定节点的归一化度中心性 */ degree: function( node ){ /* impl */ } }2.2 有向图options.directed: true返回一个对象内含两个函数{ /* 指定节点的归一化入度中心性 */ indegree: function( node ){ /* impl */ }, /* 指定节点的归一化出度中心性 */ outdegree: function( node ){ /* impl */ } }2.3 与未归一化版本dc()的返回结构对比未归一化的degreeCentrality()在无向模式下返回{ degree }在有向模式下返回{ indegree, outdegree }见 degreeCentrality.md。两者返回结构完全一致区别仅在于dc()返回的是原始值节点实际连接数/边权和而dcn()返回的是相对最大值归一化后的0 ~ 1数值。三、参数详解与底层实现dcn()的默认参数由 degree-centrality.mjs 中的defaults定义const defaults util.defaults({ root: null, weight: edge 1, directed: false, alpha: 0 });参数默认值类型说明rootnull元素/集合/选择器指定中心性计算的目标节点。在dcn()内部会被自动覆盖为遍历到的每个节点因此通常无需显式传入weightedge 1函数边的权重函数入参为一条边元素返回数值作为该边权重。返回1即退化为无权图只统计连接数directedfalse布尔是否为有向计算。true时分别统计入度/出度alpha0数字度与边权之间的调节参数0 ~ 1源自 Opsahl 等人提出的带权度中心性推广公式详见下文从源码可以清晰看到dcn()的完整归一化流程degree-centrality.mjs取调用集合的所有节点this.nodes()记录节点数numNodes遍历每个节点将options.root临时设为该节点并调用一次this.degreeCentrality(options)获得其原始度中心性同时维护全局最大值maxDegree无向或maxIndegree/maxOutdegree有向将每个节点的原始值除以对应最大值作为闭包中返回函数的计算结果若最大值为0空图或全零权重则返回0以避免除零。3.1 归一化公式无向场景下每个节点v的归一化度中心性为dcn(v) dc(v) / max_{u ∈ V} dc(u)有向场景下则分别对入度和出度归一化indegree_norm(v) indegree(v) / max_{u ∈ V} indegree(u) outdegree_norm(v) outdegree(v) / max_{u ∈ V} outdegree(u)正因为每个节点的值都以图中所有节点的最大值为分母所以数值最大的那个节点其归一化值恒为1孤立节点度为零的归一化值为0其余节点落在(0, 1)之间。3.2 节点参数支持字符串选择器返回的degree/indegree/outdegree函数接受两种入参元素对象element或选择器字符串。源码中通过is.string(node)判断后执行cy.filter(node)将选择器解析为集合degree-centrality.mjs。因此文档示例dcn.degree(#j)中#j是合法的 ID 选择器写法等价于传入 ID 为j的节点元素。四、底层dc()的度中心性算法归一化的上游要真正理解归一化值需要先理解其上游的原始度中心性degreeCentrality()实现degree-centrality.mjs它实现了 Opsahl 论文Node centrality in weighted networks: Generalizing degree and shortest paths中的 Degree 定义。4.1 无向带权公式无向模式下取根节点与调用集合的交集中的连接边计算degree k^(1 - alpha) * s^alpha其中k 与根节点相连的边数连接数s 这些边的权重之和alpha 调节参数。由此可得两个极端情形alpha 0时degree k只看连接数完全忽略边权alpha 1时degree s只看边权和完全忽略连接数0 alpha 1时两者兼顾。4.2 有向带权公式有向模式下将连接边拆分为入边edge.target().same(root)与出边edge.source().same(root)分别计算indegree k_in ^(1 - alpha) * s_in ^alpha outdegree k_out^(1 - alpha) * s_out^alpha其中k_in/k_out为入/出边数量s_in/s_out为入/出边权重和。注意有向模式下连边统计同样受调用集合限制callingEles.has(edge)即只统计调用集合内部包含的边这一点对局部子图分析非常关键。4.3 测试验证的数值示例test/collection-algorithms.mjs 中的测试构造了一个包含a~f六个节点、9 条带权边的图并覆盖了无权/带权、无向/有向、alpha 0/1共 8 组用例。以带权无向alpha 1为例各节点degree期望值为a 4、b 12、c 14、d 17、e 18带权有向alpha 1时e的indegree 18、a的outdegree 4等。这些断言可直接作为理解dc()/dcn()数值语义的基准样例。五、示例从官方文档到可直接运行代码官方文档 degreeCentralityNormalized.md 给出的核心示例为var dcn cy.$().dcn(); console.log( dcn of j: dcn.degree(#j) );其流程是先在图上用 ID 选择器#j定位一个名为j的节点选择器语法详见 selectors.md然后对整图调用dcn()得到归一化结果对象最后把#j字符串传给degree函数即可得到该节点的归一化度中心性。为了让示例可直接运行这里给出一个完整的可执行版本结合测试图结构扩展import cytoscape from ./src/test.mjs; // 开发环境入口或替换为构建产物 const cy cytoscape({ elements: { nodes: [ { data: { id: a } }, { data: { id: b } }, { data: { id: c } } ], edges: [ { data: { id: ab, source: a, target: b } }, { data: { id: bc, source: b, target: c } }, { data: { id: ca, source: c, target: a } } ] } }); // 无向归一化 const dcn cy.$().dcn(); console.log( dcn of a: dcn.degree(#a) ); // 1两个邻居与 b、c 并列最大 // 有向归一化 const dcnDir cy.$().dcn({ directed: true }); console.log( indegree of a: dcnDir.indegree(#a) ); // 1a 只有一条入边 c→a而 b、c 也各一条均为 1 console.log( outdegree of a: dcnDir.outdegree(#a) ); // 1a 只有一条出边 a→b各节点均 1 条出边 // 带权归一化weight 取边 data 中的 weight 字段alpha1 表示只看边权和 const dcnWeighted cy.$().dcn({ weight: edge edge.data(weight), alpha: 1 });5.1 各场景调用要点速查使用场景推荐写法无权无向图归一化cy.$().dcn()无权有向图归一化cy.$().dcn({ directed: true })带权无向图归一化cy.$().dcn({ weight: e e.data(weight) })带权有向图归一化cy.$().dcn({ directed: true, weight: e e.data(weight) })兼顾连接数与边权cy.$().dcn({ alpha: 0.5 })子图内部归一化先筛选出子图集合如cy.$(#subgraph).dcn(...)六、实际应用场景与注意事项6.1 典型应用关键节点识别归一化后可直接按数值排序找出图中连接能力最强值为1的枢纽节点用于网络鲁棒性分析、传播源定位等跨图比较不同规模、不同边权的网络其原始度中心性不可直接比较归一化到0 ~ 1后具备可比性有向网络分析社交媒体关注网络等场景下indegree受欢迎程度与outdegree活跃程度分开归一化可分别刻画两种角色带权网络结合weight与alpha可建模连接数量 vs 连接强度的权衡。6.2 注意事项分母是全局最大值而非总节点数归一化除以的是最大度值因此最大节点的值恒为1这与除以节点数 N的另一种归一化定义不同解读结果时需留意孤立节点/全零权重返回 0源码中对maxDegree 0等情况显式返回0degree-centrality.mjs避免除零异常调用集合决定统计范围无向模式下连接边统计为root.connectedEdges().intersection(callingEles)有向模式为callingEles.has(edge)即dcn()只基于调用它的集合所包含的边进行计算子图调用得到的是子图内部的归一化中心性内部时间复杂度为 O(N) 次dc()dcn()会为每个节点调用一次degreeCentrality()degree-centrality.mjs在大图上重复计算会有一定开销可结合 performance.md 中的调优建议使用。七、相关资源官方 API 文档degreeCentralityNormalized.md、degreeCentrality.md源码实现src/collection/algorithms/degree-centrality.mjs注册导出src/collection/algorithms/index.mjs测试用例test/collection-algorithms.mjs概念定义degree / indegree / outdegree / total degreedegree.md中心性算法族整体说明documentation/md/collection/algorithms.md赞分享数据可视化【免费下载链接】cytoscape.jsGraph theory (network) library for visualisation and analysis项目地址https://gitcode.com/gh_mirrors/cy/cytoscape.js点击查看免费下载相关推荐MXNet Gluon 归一化层完全指南从数据归一化到 BatchNorm、LayerNorm 与 InstanceNormMXNet Gluon 归一化层完全指南从数据归一化到 BatchNorm、LayerNorm 与 InstanceNorm 归一化Normalizatio人工智能深度学习机器学习MXNet Gluon 归一化块实战指南数据归一化、BatchNorm、LayerNorm 与 InstanceNorm 完全解析MXNet Gluon 归一化块实战指南数据归一化、BatchNorm、LayerNorm 与 InstanceNorm 完全解析 本教程以 MXNet Gl深度学习机器学习人工智能终极指南BatchNorm、LayerNorm与InstanceNorm在fastai中的应用对比终极指南BatchNorm、LayerNorm与InstanceNorm在fastai中的应用对比 fastai是一个强大的深度学习库提供了丰富的工具和功能人工智能深度学习上一篇300ms加载优化Bilibili-Evolved的终极按需加载策略与实现下一篇如何用Bandit快速发现Python代码中的安全漏洞5分钟终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表