17、网络绘制、比较与有向网络分析

网络绘制、比较与有向网络分析

1. 网络绘制与比较

有四个网络,它们节点数量相同、密度相近(边的数量也相近),这使得它们很容易进行比较。以下是这四个网络的相关信息:

networks = {
    "generalized" : generalized_network,
    "pearson" : pearson_network_sign,
    "cosine" : cosine_network,
    "hamming" : hamming_network,
}
partitions = [community.best_partition(x) for x in networks.values()]
statistics = sorted([
    (name,
     community.modularity(best_part, netw),
     len(set(best_part.values())),
     len(nx.isolates(netw))
    ) for (name, netw), best_part in zip(networks.items(), partitions)],
    key=lambda x: x[1], reverse=True)

这四个网络的模块化相关统计信息如下表所示:
| 相似度类型 | 社区数量 | 模块化程度 | 孤立节点数量 |
| — | — | — | — |
| Generalized | 4 | 0.47 | 0 |
| Pearson | 4 | 0.20 | 0 |
| Cosine | 6 | 0.04 | 4 |
| Hamming | 7 | 0.00 | 6 |

从表中可以看出,广义相似度网络没有孤立节点,模块化程度最高,检测到的社区数量最少。其社区结构将创伤类型划分为数量最少、定义明确且规模相近的组,这些组紧凑且同质,稍加努力即可进行标注,如下表所示:
| 创伤类型 | 组标签 |
| — | — |
| SEXUAL_ASSAULT, SEXUAL_ABUSE, KIDNAP, PSYC_MALTX, WAR, PHYSICAL_ABUSE, PHYSICAL_ASSAULT | 个人暴力 |
| WAR_NOT_US, TRAUMATIC_LOSS, INJURY_ACCIDENT, MEDICAL_TRAUMA | 医疗创伤 |
| SCHOOL_VIOLENCE, COMMUNITY_VIOLENCE, EXT_INTERPER_VIOLENCE | 社会创伤 |
| IMPAIRED_CAREGIVER, FORCED_DISPLACEMENT, DOMESTIC_VIOLENCE, NATURAL_DISASTER, NEGLECT | 忽视与搬迁 |

2. 发现不对称关系

有向网络是至少有一条有向边的网络。有向边具有方向,它连接节点 X 到节点 Y,但反之不成立,从数学角度看,有向边所代表的关系是不对称的。许多现实世界中的关系是不对称的,理想情况下应建模为有向网络,以下是一些例子:
- 社交网络
- 友谊:Alice 可能认为自己是 Bob 的朋友,但 Bob 可能有不同看法。若两人是相互朋友,既可以将他们的友谊建模为无向边,也可以创建两条反平行的有向边。
- 从属关系:若 Alice 是 Bob 的下属,那么 Bob 不是 Alice 的下属。
- 某些家庭关系,如亲子关系:若 Alice 是 Bob 的父母,那么 Bob 不是 Alice 的父母。
- 语义网络
- 上位词(更通用的词)或下位词(更具体的词)关系:颜色是红色的上位词,因为红色总是一种颜色,但反之不成立。
- 其他网络
- 成员关系:Alice 可以是一个组织的成员,但组织不能是 Alice 的成员。
- 顺序关系:若 A 在 B 之后发生,那么 B 不在 A 之后发生。
- WWW 链接:从一个网页到另一个网页的链接并不意味着有反向链接。
- 流:任何从一个节点到另一个节点的流(包括货物、人员、金钱和信息的流动)都是不对称的,必须建模为有向边,例如交通网络中的单行道就是有向边。

3. 有向网络与符号网络的区别

有向网络的不对称性与符号网络的不对称性有所不同,它们建模的方面不同。符号边(和其他加权边一样)表示关系的强度,而有向边表示关系的互惠性。一条边可以同时是有向的和加权/带符号的。以下表格展示了有向性和权重如何捕捉简单人际关系的不同方面:
| | 正符号 | 无符号 | 负符号 |
| — | — | — | — |
| 有向 | Alice 和 Bob 是朋友 | Alice 和 Bob 是熟人 | Alice 和 Bob 是敌人 |
| 无向 | Alice 喜欢 Bob(但 Bob 不喜欢 Alice) | Alice 认识 Bob(但 Bob 不认识 Alice) | Alice 讨厌 Bob(但 Bob 不讨厌 Alice) |

4. 探索有向网络

有向边的存在极大地影响了几乎所有的网络度量和结构元素,以下是一些受影响的属性:
- :有向图 G 中的每个节点有三个度: G.in_degree() (入边的数量)、 G.out_degree() (出边的数量)和 G.degree() (所有边的数量),总度数是入度和出度的和。例如,在一个基于美国人口普查局州际迁移流量数据集构建的 2015 年每个州前三个首选迁移目的地的有向网络中,入度和总度数表明最具吸引力的目的地是加利福尼亚州、佛罗里达州和得克萨斯州,且所有节点的出度都为 3。

sorted(G.in_degree().items(), key=lambda x: x[1], reverse=True)[:3]
sorted(G.out_degree().items(), key=lambda x: x[1], reverse=True)[:3]
sorted(G.degree().items(), key=lambda x: x[1], reverse=True)[:3]
  • 邻居 :有向图中的节点有两种类型的邻居: G.successors() (通过出边可达的节点)和 G.predecessors() (通过入边可达的节点), G.neighbors() G.successors() 的别名。在迁移网络中,最终目的地(如加利福尼亚州)的后继节点是迁出迁移的首选目的地,即移民来自的州;前驱节点则是迁移到该州的州。
final_destination = sorted(G.in_degree().items(), key=lambda x: x[1], reverse=True)[0][0]
coming_from = G.predecessors(final_destination)
going_to = G.successors(final_destination)
  • 行走、轨迹和路径 :网络中的行走仍然是任何边的序列,使得一条边的终点是另一条边的起点。但有向边只有一个终点和一个起点,而无向边可以从其任意一个关联节点开始。由于这个额外的限制,一些无向行走可能会中断。
  • 中心性和其他距离 :有向图中的每个节点有三个度中心性( G.in_degree_centrality() G.out_degree_centrality() G.degree_centrality() ),基于同名的度。其他类型的中心性(接近中心性、中介中心性和特征向量中心性)的计算方法与无向网络相同,但结果通常不同,因为邻域和路径不同。图的中心、直径、半径、离心率和外围也是如此。
  • 组件 :有向网络有两种类型的组件:
    • 强连通组件:其中任何成员节点都可以从任何其他成员节点到达。
    • 弱连通组件:如果所有边都转换为无向边,任何成员节点都可以从任何其他成员节点到达。
sorted(nx.weakly_connected_components(G), key=len, reverse=True)
sorted(nx.strongly_connected_components(G), key=len, reverse=True)
  • 反转和扁平化 :可以使用 G.reverse() 方法反转有向图,该函数返回一个每条边都反转的原始图的副本。新图中的入度、出度、后继节点和前驱节点分别是原始图的出度、入度、前驱节点和后继节点。两个图具有相同的弱连通和强连通组件。还可以使用 G.to_undirected(reciprocal=False) 方法将有向图转换为无向图。如果 reciprocal 参数为 True ,则只有当两个节点已经由一对反平行有向边连接时,才会用无向边连接它们;否则,有向边会降为无向边,并且任何可能产生的平行边对会合并。

以下是有向网络相关操作的流程图:

graph LR
    A[开始] --> B[创建有向网络]
    B --> C[计算度、邻居等属性]
    C --> D[检测组件]
    D --> E[反转或扁平化网络]
    E --> F[结束]

网络绘制、比较与有向网络分析

5. 对有向无环图应用拓扑排序

有向无环图(DAG)是一种特殊类型的有向网络,它是无环的,即不包含任何循环。从视觉上看,DAG 可以是树、森林、星型或线性图。有向无环图描述了层次结构,其中组件根据某些属性进行排序,任意两个组件 A 和 B 要么无关,要么 A 明确从属于 B,要么 B 明确从属于 A。而在有循环的有向图中,从属关系是模糊的。

有向无环图的边通常表示支配层次或从属关系,边的源节点是“老板”,目标节点是“下属”。例如,鸡群中的啄食顺序就有效地执行了拓扑排序,导致了社会分层。

NetworkX 中有几个专门用于 DAG 的函数:
- nx.is_directed_acyclic_graph(G) :检查 G 是否为 DAG。
- nx.transitive_closure(G) :计算 G 的传递闭包 T,即一个与 G 具有相同节点的图,使得 T 中两个节点相邻当且仅当 G 中这两个节点之间存在路径。可以将传递闭包看作是所有可能的从属关系(直接和间接)的图。

可以对 DAG 进行序列化,将所有节点排列成线性顺序,使得下一个节点可能是前一个节点的下属,但前一个节点永远不是下一个节点的下属。这个操作称为拓扑排序,一个 DAG 可以有多种不同的排序方式,得到不同的“啄食”排名。 nx.topological_sort(G) 函数返回一个随机选择的排名,作为节点标签的列表。

以下是一个简单的示例代码,展示如何使用这些函数:

import networkx as nx

# 创建一个有向无环图
G = nx.DiGraph()
G.add_edges_from([(1, 2), (2, 3), (1, 4)])

# 检查是否为 DAG
is_dag = nx.is_directed_acyclic_graph(G)
print(f"Is the graph a DAG? {is_dag}")

# 计算传递闭包
T = nx.transitive_closure(G)
print("Transitive closure nodes:", T.nodes())
print("Transitive closure edges:", T.edges())

# 进行拓扑排序
topological_order = list(nx.topological_sort(G))
print("Topological order:", topological_order)
6. 总结

本文主要围绕网络的绘制、比较以及有向网络的相关知识展开。首先对四个节点数量相同、密度相近的网络进行了绘制和比较,通过模块化相关统计信息发现广义相似度网络具有最佳的模块化结构,能够将创伤类型划分为明确的组。接着介绍了有向网络的概念,指出其存在不对称关系,并列举了社交网络、语义网络等多个领域中的不对称关系示例。同时对比了有向网络和符号网络,明确它们建模的不同方面。

在探索有向网络时,详细阐述了有向边对网络度量和结构元素的影响,包括度、邻居、行走、中心性、组件等属性,并给出了相应的代码示例。最后,介绍了有向无环图(DAG)的特点和应用,以及如何对其进行拓扑排序。

以下是对本文内容的一个总结表格:
| 内容 | 要点 |
| — | — |
| 网络绘制与比较 | 四个网络节点和密度相近,广义相似度网络模块化最佳 |
| 发现不对称关系 | 有向网络存在不对称关系,多领域有相关示例 |
| 有向与符号网络区别 | 符号边表示关系强度,有向边表示互惠性 |
| 探索有向网络 | 有向边影响度、邻居等多种网络属性 |
| 有向无环图拓扑排序 | DAG 无环,可进行拓扑排序确定节点顺序 |

通过这些内容的学习,我们可以更好地理解和处理各种类型的网络,为实际应用提供有力的支持。

以下是整个知识体系的流程图:

graph LR
    A[网络绘制与比较] --> B[发现不对称关系]
    B --> C[有向与符号网络区别]
    C --> D[探索有向网络]
    D --> E[有向无环图拓扑排序]
基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析仿真验证相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值