热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Matlab】评估网络节点重要性

centrality

衡量节点的重要性

全页折叠

语法

C = centrality(G,type)

C = centrality(___,Name,Value)

说明

示例

C = centrality(G,type) 为图中的每个节点计算由 type 指定的节点中心性。

示例

C = centrality(___,Name,Value) 使用一个或多个名称-值对组参数指定的其他选项。例如,centrality(G,'closeness','Cost',c) 指定遍历每条边的成本。

示例

全部折叠

6 个网站的网页排名

尝试此示例

View MATLAB Command

创建并绘制一个包含六个虚拟网站的图。

s = [1 1 2 2 3 3 3 4 5];
t = [2 5 3 4 4 5 6 1 1];
names = {'http://www.example.com/alpha', 'http://www.example.com/beta', ...
         'http://www.example.com/gamma', 'http://www.example.com/delta', ...
         'http://www.example.com/epsilon', 'http://www.example.com/zeta'};
G = digraph(s,t,[],names);
plot(G,'NodeLabel',{'alpha','beta','gamma','delta','epsilon','zeta'})

【Matlab】评估网络节点重要性

使用 centrality 函数计算每个网站的网页排名。将此信息作为图节点的一个属性附加到图的 Nodes 表中。

pg_ranks = centrality(G,'pagerank')
pg_ranks = 6×1

    0.3210
    0.1706
    0.1066
    0.1368
    0.2008
    0.0643

G.Nodes.PageRank = pg_ranks;
G.Nodes
ans=6×2 table
                   Name                   PageRank
    __________________________________    ________

    {'http://www.example.com/alpha'  }    0.32098 
    {'http://www.example.com/beta'   }    0.17057 
    {'http://www.example.com/gamma'  }    0.10657 
    {'http://www.example.com/delta'  }    0.13678 
    {'http://www.example.com/epsilon'}    0.20078 
    {'http://www.example.com/zeta'   }    0.06432 

还可以使用 centrality 确定哪些节点是枢纽节点和权威节点,并将得分附加到 Nodes 表中。

hub_ranks = centrality(G,'hubs');
auth_ranks = centrality(G,'authorities');
G.Nodes.Hubs = hub_ranks;
G.Nodes.Authorities = auth_ranks;
G.Nodes
ans=6×4 table
                   Name                   PageRank       Hubs       Authorities
    __________________________________    ________    __________    ___________

    {'http://www.example.com/alpha'  }    0.32098        0.24995    7.3237e-05 
    {'http://www.example.com/beta'   }    0.17057        0.24995      0.099993 
    {'http://www.example.com/gamma'  }    0.10657        0.49991      0.099993 
    {'http://www.example.com/delta'  }    0.13678     9.1536e-05       0.29998 
    {'http://www.example.com/epsilon'}    0.20078     9.1536e-05       0.29998 
    {'http://www.example.com/zeta'   }    0.06432              0       0.19999 

随机图的度中心性

尝试此示例

View MATLAB Command

使用随机稀疏邻接矩阵创建并绘制一个加权图。由于有很多边,请使用非常小的 EdgeAlpha 值使边几乎透明。

A = sprand(1000,1000,0.15);
A = A + A';
G = graph(A,'omitselfloops');
p = plot(G,'Layout','force','EdgeAlpha',0.005,'NodeColor','r');

【Matlab】评估网络节点重要性

计算每个节点的度中心性。使用边权重指定每条边的重要性。

deg_ranks = centrality(G,'degree','Importance',G.Edges.Weight);

根据节点的中心性得分,使用 discretize 将节点放入 7 个等间距 bin 中。

edges = linspace(min(deg_ranks),max(deg_ranks),7);
bins = discretize(deg_ranks,edges);

使每个节点在绘图中的大小与其中心性得分成正比。每个节点的标记大小等于 bin 编号 (1-7)。

p.MarkerSize = bins;

【Matlab】评估网络节点重要性

明尼苏达州道路的接近性和中间性

尝试此示例

View MATLAB Command

加载 minnesota.mat 中的数据,其中包含代表明尼苏达州道路网络的图对象 G。图节点具有 xy 坐标,这些坐标包含在 G.Nodes 表的 XCoord 和 YCoord 变量中。

load minnesota.mat
xy = [G.Nodes.XCoord G.Nodes.YCoord];

在图中添加与道路长度(使用每条边的端节点的 xy 坐标之间的欧几里德距离计算得出)大致对应的边权重。

[s,t] = findedge(G);
G.Edges.Weight = hypot(xy(s,1)-xy(t,1), xy(s,2)-xy(t,2));

使用节点的 xy 坐标绘图。

p = plot(G,'XData',xy(:,1),'YData',xy(:,2),'MarkerSize',5);
title('Minnesota Road Network')

【Matlab】评估网络节点重要性

计算每个节点的接近中心性。调整节点颜色 NodeCData,使其与中心性得分成正比。

ucc = centrality(G,'closeness');
p.NodeCData = ucc;
colormap jet
colorbar
title('Closeness Centrality Scores - Unweighted')

【Matlab】评估网络节点重要性

还要计算加权的接近中心性得分(使用边权重作为遍历每条边的成本)。使用道路长度作为边权重可以提高得分质量,因为距离现在等于遍历的所有边的长度总和,而不是遍历的边数。

wcc = centrality(G,'closeness','Cost',G.Edges.Weight);
p.NodeCData = wcc;
title('Closeness Centrality Scores - Weighted')

【Matlab】评估网络节点重要性

计算图的加权中间中心性得分,以确定在两个节点之间的最短路径上出现频率最高的道路。使用因子 (n−2)(n−1)2 对中心性得分进行归一化,以使得分表示旅行者沿两个随机节点之间的最短路径经过给定节点的概率。该绘图表明进出这座城市有几条非常重要的道路。

wbc = centrality(G,'betweenness','Cost',G.Edges.Weight);
n = numnodes(G);
p.NodeCData = 2*wbc./((n-2)*(n-1));
colormap(flip(autumn,1));
title('Betweenness Centrality Scores - Weighted')

【Matlab】评估网络节点重要性

输入参数

全部折叠

G - 输入图
graph 对象 | digraph 对象

输入图,指定为 graph 或 digraph 对象。可使用 graph 创建一个无向图,或使用 digraph 创建一个有向图。

示例: G = graph(1,2)

示例: G = digraph([1 2],[2 3])

type - 节点中心性的类型
'degree' | 'outdegree' | 'indegree' | 'closeness' | 'incloseness' | 'outcloseness' | 'betweenness' | 'pagerank' | 'eigenvector' | 'hubs' | 'authorities'

节点中心性的类型,指定为下表中的选项之一。表中还列出了适用于每个类型的兼容的名称-值对组。每个节点中心性变体为衡量节点在图中的重要性提供了一种不同的方法。

选项

图类型

说明

名称-值对组

'degree'

无向

'degree''outdegree' 和 'indegree' 中心性类型基于每个节点连接的边数:

  • 'degree' - 每个节点连接的边数。一个自环记为与节点连接的两条边。

  • 'indegree' - 每个节点的入向边数。一个自环记为一条入向边。

  • 'outdegree' - 每个节点的出向边数。一个自环记为一条出向边。

如果指定 'Importance' 边权重,则算法使用边权重之和,而不是连接边的条数。

'Importance'

'indegree'

'outdegree'

有向

'closeness'

无向

'closeness''incloseness' 和 'outcloseness' 中心性类型使用图中从一个节点到其他所有节点的距离的总和的倒数。如果并非所有节点都可达,则节点 i 的中心性为:

c(i)=(A iN−1)21Ci .

 

Ai 是可从节点 i 到达的节点数(不计 i),N 是 G 中的节点数,Ci 是从节点 i 到所有可到达节点之间的距离之和。

  • 如果从节点 i 不能到达任何节点,则 c(i) 为零。

  • 对于 'incloseness',距离测量值是从所有节点到节点 i

  • 'Cost' 边权重指定边的长度。

 

'Cost'

'incloseness'

'outcloseness'

有向

'betweenness'

无向或有向

'betweenness' 中心性类型衡量每个图节点出现在图中两个节点之间的最短路径上的频率。由于两个图节点 s 和 t 之间可能存在多个最短路径,因此节点 u 的中心性为:

c(u)=s,t≠unst(u)Nst .

 

nst(u) 是从 s 到 t 且穿过节点 u 的最短路径数,Nst 是从 s 到 t 的最短路径总数。

  • 如果是无向图,则从 s 到 t 与从 t 到 s 的路径只记为一条路径(将公式除以 2)。

  • 'Cost' 边权重指定边的长度,帮助确定节点 s 与 t 之间的最短路径。

 

'Cost'

'pagerank'

无向或有向

'pagerank' 中心性类型来自网络的随机查询。在图中的每个节点处,按照概率 'FollowProbability' 从当前节点的后继节点集(无向图中的相邻节点)中选择下一个节点。否则,当一个节点没有后继节点时,将从所有节点中选择下一个节点。中心性得分是指随机查询期间在每个节点上花费的平均时间。

  • 如果某个节点存在自环,则算法可能会遍历该循环。因此,自环会增加所连接节点的 PageRank 中心性得分。

  • 在相同的两个节点之间具有多条边的多重图中,具有多条边的节点被选择的可能性更大。

  • 'Importance' 边权重影响算法选择后继节点的方式。重要性越高的节点,被选择的可能性越大。

 

'Importance'

'FollowProbability'

'Tolerance'

'MaxIterations'

'eigenvector'

无向

'eigenvector' 中心性类型使用与图邻接矩阵的最大特征值对应的特征向量。得分经过归一化,因此所有中心性得分的总和等于 1。

  • 如果有多个未连通分量,算法将分别计算每个分量的特征向量中心性,然后根据图节点在该分量中的百分比来折算分数。

  • 未连接节点的中心性得分为 1/numnodes(G)

  • 指定 'Importance' 边权重以在计算时使用加权的邻接矩阵。

 

'Importance'

'Tolerance'

'MaxIterations'

'hubs'

'authorities'

有向

'hubs' 和 'authorities' 中心性得分是两个链接的递归中心性测量值。一个节点的枢纽得分是其所有后继节点的权威得分之和。同样,权威得分是其所有前趋节点的枢纽得分之和。所有枢纽得分之和等于 1,所有权威得分之和也等于 1。

  • 这些得分可理解为与邻接矩阵的最大奇异值对应的左侧(枢纽)和右侧(权威)奇异向量。

  • 未连接节点的中心性得分为 1/numnodes(G)

  • 指定 'Importance' 边权重以使用加权和,而不是将所有后继/前趋节点的得分简单相加。这相当于使用加权的邻接矩阵的奇异向量。

  • 如果有多个未连通分量(在弱连通意义上),该算法将分别计算每个分量的枢纽得分和权威得分。然后根据图节点在该分量中的百分比来折算分数,从而使总和依然为 1。

 

'Importance'

'Tolerance'

'MaxIterations'

注意

centrality 函数假定所有边权重都等于 1。要更改此设置,请指定边权重与 'Cost' 或 'Importance' 名称-值对组一起使用。

示例: centrality(G,'degree')

示例: centrality(G,'hubs','Tolerance',tol)

转自:https://ww2.mathworks.cn/help/matlab/ref/graph.centrality.html


推荐阅读
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 在 Windows 10 环境中,通过配置 Visual Studio Code (VSCode) 实现基于 Windows Subsystem for Linux (WSL) 的 C++ 开发,并启用智能代码提示功能。具体步骤包括安装 VSCode 及其相关插件,如 CCIntelliSense、TabNine 和 BracketPairColorizer,确保在 WSL 中顺利进行开发工作。此外,还详细介绍了如何在 Windows 10 中启用和配置 WSL,以实现无缝的跨平台开发体验。 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
  • 经过半年的精心整理,我们汇总了当前市场上最全面的Android面试题解析,为移动开发人员的晋升和加薪提供了宝贵的参考资料。本书详细涵盖了从基础到高级的各类面试题,帮助读者全面提升技术实力和面试表现。章节目录包括:- 第一章:Android基础面试题- 第二章:... ... [详细]
author-avatar
小P美容2000
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有