几年前,我疯狂地阅读 系列丛书,发现自己很难记住所有角色。(这并不奇怪——该系列中有超过 150 个有名字的角色!)我不断地在各个章节之间来回浏览,或者不断地查阅 维基百科来记住情节。我需要一张思维导图——肯定有更好的方法来 这些角色吧? 《权力的游戏》 《冰与火之歌》 形象化 基础 下图是 ,展示了维基百科编辑对不同语言的贡献。通过这个例子,我们可以了解一些图论概念的基础知识(或者,如果你已经熟悉的话,可以快速复习一下): 维基百科的一个示例网络图 圆圈代表文章所用的语言,是图的“顶点”(可互换称为“节点”)。 “边”是连接每对顶点的线。图中的每条边都是通过将一对顶点映射到一条边的关联函数确定的。 在这个例子中,每条边(通过线宽或厚度)表示为该线连接的 语言做出贡献的编辑者数量。这就是我们所说的无向简单图。“无向”表示 {en--> fr} 和 {fr --> en} 相同,“简单”表示每对顶点之间只有一条边连接。该图也是“加权的”,这意味着边的厚度与顶点之间的关系 有关。在这个例子中,加权关联函数可能看起来像这样: 两种 强度 虽然以这种方式对图形进行可视化表示是一种直观的方法,可以快速显示关系以便于理解,但将数据集表示为图形对象可以让我们获得更丰富的见解。 获取汉密尔顿数据集的数据 “在数据科学中,80% 的时间都花在准备数据上,20% 的时间都花在抱怨需要准备数据上。” 数据科学家可能不会在所有事情上达成一致——但我们一致认为,任何项目中最困难的部分是获取数据。幸运的是,这篇文章已经解决了这一问题。Kaggle 上有一个干净的 ,您可以轻松下载并开始绘制图表。 汉密尔顿 歌词 数据集 探索性分析 这就是 数据集的样子。 汉密尔顿 每个角色/歌曲/歌词都有一行记录。 ——指歌曲的名称。 标题 ——指的是唱特定台词的角色。 说话人 ——指歌曲中的特定歌词。 歌词 构建邻接矩阵 为了构建所有 发言人的网络图,必须定义以下内容: 汉密尔顿 节点(发言者名单) 边缘(连接每对扬声器) 关联函数将每对顶点映射到一条边(带有可选权重) 我选择的关联函数是 。我的假设是两个角色一起出现的歌曲越多,他们的关系就越强。 每对说话者一起出现的歌曲数量 Weight {speaker,x, speaker,y} = #songs that feature both speaker,x and speaker,y 使用 R 的 dplyr,我可以将原始数据集转换为 实体,然后将其转换为邻接矩阵。然后我可以使用 中的 graph.adjacency 从此邻接矩阵创建一个“图形对象”,然后我可以将其用于绘图和其他分析。 **{src, dest, weight}** R 的 igraph 包 可视化网络图 可以使用 函数可视化 graph_obj。由于此函数有许多自定义布局可供选择,因此我首先使用“星型”布局渲染同一张图。 plot.igraph 从技术上讲,结果是一个网络图。但有可能做得更好吗?上面的图表似乎表明所有顶点和边都具有同等重要性——但这破坏了可视化社交网络的整个意义。有些角色确实更“重要”,有些说话者与其他人的关系更密切。 该图表如何反映这一点? 这就是 和 发挥作用的地方。我首先尝试使用 函数的参数,使 (即图中边的粗细)与权重相关,使 (即顶点的字体大小)与度相关。 边权重 顶点 度 plot.igraph edge.width vertex.label.cex 好多了!等级越高的角色在视觉上就越大,而且从线条的深浅也可以看出强弱关系之间的区别。这种迭代更加直观,让观众可以立即掌握角色之间的关系。考虑到乔治国王的歌曲总是(非常有趣的)独白,所以他是一个孤独的节点也是很合适的。 您还可以使用 R 中的 库来制作 网络图。该库可以放大和缩小图形的多个部分(对于特别大的图形尤其有用),并且支持 Shiny。 visNetwork 交互式 中心性度量 是图论中的一个关键概念,用于识别节点的重要性: 中心性 :这是衡量连接到每个节点的边的数量的指标。 度中心性 :这是衡量一个节点的“连接性”程度、连接共享的链接数等的指标。它识别对整个网络有影响力的节点,而不仅仅是直接连接到网络的节点。 特征中心性 这实际上是给定节点与其他节点 距离,以及充当各种网络集群之间的“桥梁”的程度。它是衡量每个顶点对网络其余部分的“影响力”的指标。 中介中心性: 之间的 我可以使用 igraph 的 degree()、betweenness() 和 eigen_centrality() 函数来获取生成的图的中心性: 在我们的图表中,Aaron Burr 似乎具有最高的 (“桥梁”),而 Hamilton 具有最高的 (“影响者”)。您可以自行决定。 中介中心性 特征向量中心性 结论 网络图的商业应用有很多: 社交网站利用网络图来创建相似用户的社区并提供有针对性的推荐。“推荐好友”功能背后的算法的基本实现可能如下所示:“Alice 的十个密友中有九个也是 Bob 的朋友 -> 向 Alice 推荐 Bob 作为潜在朋友。” 绘制从地点 X 到地点 Y 的最短距离的应用程序(例如地图、拼车服务、送货卡车的供应链和物流等)可能会使用“最短路径”算法的变体,在计算机科学中通常称为 。 旅行商问题 网络理论是自然语言处理 (NLP) 中词汇和语义处理的关键组成部分,而聊天机器人和虚拟助手(如 Alexa、Cortana、Siri,甚至 IBM 的 ,这是一款远非简单的双关语和文字游戏。 Watson 赢得了 Jeopardy!) 像 这样的名人派对游戏就使用了网络图。 “六度空间之凯文·贝肯” 在流行病学中,中心性测量可用于识别流行病或“超级传播者”事件的起源。 如果你仔细想想,互联网就是一个由不同网站组成的庞大网络。搜索引擎利用 测量来返回与特定搜索查询最相关的页面。 知识图谱 尽管网络图很有趣,但值得注意的是,在生产中使用网络图并非没有缺点。例如,它们可能占用大量资源。与任何矩阵运算一样,可扩展性和性能有时会受到影响。还有一个“冷启动”问题——如果您的数据集太稀疏或实体之间没有太多关系,网络图就不是一种有效的解决方案。然而,如果在正确的环境中正确使用,它们对企业来说是有价值的。 • 代码: https://github.com/iswaryam/hamilton/ 数据集来源: https://www.kaggle.com/lbalter/hamilton-lyrics# 如果您是一名 Potterhead,请查看我的 GitHub - 我也使用类似的方法绘制了 的人物图表。 哈利波特