谁是真正的MVP?用图形分析挖掘GOT真正的C位王者


640?wx_fmt=jpeg


全文共3739字,预计学习时长8分钟


640?wx_fmt=jpeg

图片来源:news.hexun.com


从《权力的游戏》完结到现在,还有很多人无法从结局的降维打击中恢复过来,尤其是龙妈的悲惨下场。我们看着一部影响全球观众日常作息,影响电视剧发展走向的神剧诞生,又眼睁睁看着神剧跌落神坛,甚至坠入深渊。


640?wx_fmt=png


其实,除了探讨宏大的剧情和无尽的遗憾之外,《权利的游戏》带给我们的宝藏还多着呢!比如,从《权力的游戏》元数据里学习丰富的知识并深入研究——听听!对于我们这群热爱学习的祖国未来花朵来说,是一件多么振奋人心的事情!(手动狗头)


640?wx_fmt=gif


今天,本文将以《权游》为例,对图算法进行深入研究。


我们将列举图算法在《权力的游戏》数据中的应用实例,以阐释图分析的入门方法。


文章部分内容摘自O’Reilly专著《图算法:基于Apache Spark和Neo4j的应用实例》(Graph Algorithms: Practical Examples in Apache Spark and Neo4j),该书籍可供读者免费下载。


传送门:https://neo4j.com/graph-algorithms-book/?ref=db-engines


Neo4j是为用户提供集合本机图形存储、计算与分析功能的一体化平台。该产品开发的目标是——运用连接优先的方法,帮助各大企业揭示人物、流程、地点和系统之间的相互关联性。Neo4j图形平台为处理人工智能、反欺诈、实时推荐和主数据等议题的应用程序助力。


640?wx_fmt=jpeg

运用和了解合并交易和分析处理技术


合并交易与分析处理技术之间的界限已经模糊了很长时间。联机事务处理(简称OLTP)操作属于典型的短期操作,这些操作包含订票或是账户借贷。该技术涉足大量低延迟搜索处理和高完整性数据。


联机事务处理与联机分析处理(OLAP)采用的方法大不相同,后者注重简化复杂搜索,强调针对多数据源、数据格式和类别进行历史数据分析。

现代的数据密集型应用则将实时事务操作和分析技术融为一体。合并两种处理方式的趋势,由软件技术的进步和低成本、高储存容量硬件的出现两种因素共同促成。分析技术与合并交易走向融合,让连续分析成为常规操作的自然组成部分。


目前人们得以运用单一的一体化平台运行两种不同的数据处理方式,简化现有的程序架构。这说明分析性搜索能利用实时数据的优势,精简分析中的迭代过程;这种技术又称作混合事务/分析处理(HTAP)。


640?wx_fmt=png


混合平台支持低延迟搜索流程,可以满足合并交易要求的高数据完整度,同时能够在大量数据中整合复杂的分析工具。


640?wx_fmt=jpeg图分析与算法的介绍


图形分析作为最高级别的数据分析,在理解或预测动态组的行为中有广泛应用。这一层面的图形分析,要求理解某一群体具备的联系及其拓扑结构。图形算法通过为关系使用专门开发的数学方法评估网络的本质。这种研究方法,让人们得以理解相连系统的结构,并以此构建流程模型。


通过适用图形,人们能建立多种多样的模型,这些模型的分析范围囊括从金融市场到信息技术服务等一系列动态环境;它们还可以为机器学习寻得更容易预估的因素,以对抗金融犯罪;或揭开社群的秘密,为个性化体验和推荐奠定基础。图形分析技术帮助人们推定关系、预测行为。


由于图算法中的数学计算专门用于处理关系问题,图算法也就成为分析相互关联的数据的最佳方法之一。


图算法类型众多,分类标准多样。根据图形自身的性质,划分出了最经典的三种图形算法类别:寻路算法、中心性算法和社区发现算法


∙ 寻路(和搜索)算法:是图分析算法的基础,它们探究节点间的路径问题。这些算法通常用于识别最佳路线、具体应用于物流规划、最低成本路线选择和博弈情境等领域。


∙ 中心性算法:帮助人们理解单个节点在图形中的地位和影响。中心性算法十分实用,因为它能识别最重要的节点,促进人们对于诸如信度、可及性、事物传播速度等群体动力学问题的理解,构筑了组群之间的桥梁。


∙ 社区发现算法:用于评估节点集合,它意在寻找组内成员关系建立数量较多的社群。识别相关社区有利于揭示不同节点集群,孤立族群和网络结构。社区发现算法有助于推断同龄群体的相似行为或偏好、估算弹性,并为其他分析工作准备数据。


640?wx_fmt=jpeg

用图形分析解读《权力的游戏》


现在我们将一部为人熟知的奇幻剧集《权力的游戏》作为本文的数据集,深入探讨图形算法的应用问题。


构建NEuler——图形算法乐园


使用NEuler图形算法乐园应用实现数据分析。NEuler直观的用户界面无需输入任何编码,就能执行多种图算法。NEuler是一个Neo4j研究室项目,它致力于帮助人们快速熟悉图算法,探索充满乐趣的数据世界。


一旦NEuler安装完毕,需要载入《权力的游戏》样图,如下方截图所示:


640?wx_fmt=png


该数据集基于Andrew Beveridge权力游戏网络,包含剧集人物和他们在不同季度剧集中的互动情况。


分析《权力的游戏》


1、社区发现算法


数据集载入完成后,开始进行分析。分析的重点在《权力的游戏》第2季,但也会对其他季度的剧集数据结果稍作展示作为对照。


社区发现算法用于发掘维斯特洛大陆上的用户集群,中心性算法用作发现最重要、最具影响力的人物。


Louvain模块度算法能够根据最大启发式模块度得分侦测网络中的社群(模块度得分分布在-1到1之间,作为社区内外相对关系密度的衡量标准)。运行《权力的游戏》第2季的数据集,选择可视化输出格式后,我们得到如下图表:


640?wx_fmt=png


如图所示,位于图示的左上角的龙母丹妮莉丝·坦格利安一族孤立无依,与世隔绝。集群中的成员未与其他人物互动。

难道是数据或是算法出现问题了?


我们来运行另一种社区发现算法——连通区域算法(Connected Components),来验证结果。


连通区域算法是一种根据用户之间是否存在路径,来识别用户集群的社区发现算法。运行该算法后,出现如下可视化结果:


640?wx_fmt=png


这里出现了两个社群:左侧的龙母社群,和右侧的其他多数人。这佐证了之前Louvain模块度算法得出的结果;再回顾第2季剧情不难发现,龙母居住在一座远离其他主要人物的孤岛上。


分析社群结构的另一种方法是计算某一用户所属的三角形数量。

图中的三角形表示,A人物于B人物有互动,B人物于C人物有互动,而C人物又与A人物有互动。如下:


640?wx_fmt=png


运行三角技术算法,选中表格输出格式后,得到下方结果:


640?wx_fmt=png


可以观察到,这类算法返回结果包含一个系数得分。这种聚类系数负责测量邻里间的实际关联程度与其最高关联程度的差异。得分为1说明每一个邻里都互相联系。所以尽管乔弗里·席拉拜恩的三角形总数较多(也就是粗略邻里互动数较大),但“小指头”培提尔·贝里席和珊莎·史塔克的邻里关系具备更高的相互关联率(即聚类系数较大)。


接下来将运用中心性算法寻找重要角色。


中心性算法


最简单的中心性算法是程度中心性算法,后者负责测量与某个节点相连的关系数量。使用这种算法能够找出互动数量最多的权游人物。


运行此算法后,得到以下输出结果:


640?wx_fmt=png


与乔弗里和提利昂·兰尼斯特互动的人物数最多,这说明第2季剧情主要围绕这两个人物进行,也许他们并不是全剧集影响力最大的人物,但他们肯定是台词最多的!


中介中心性算法(Betweenness Centrality algorithm)可以检测一个节点给图形信息流施加的影响力。一些节点常常为图形的一部分构筑通往图形另一部分的桥梁,起到非常重要的连接作用。


这种算法能帮助我们寻找与维斯特洛大陆上的子社区相连的人物。运行算法,选择输出格式后,得出如下结果:

640?wx_fmt=png


条件允许的情况下,尽量选择柱状图格式展示数据;因为当排名比实际得分重要时,柱状图更适宜观察许多中心性算法的结果。


可以看出,乔弗里从程度中心性算法结果的第1名跌至现在的第6名,而艾莉亚·史塔克从第5名上升至第1名。在第2季中,艾莉亚踏上征途,她将扮演“桥接节点”的角色,把与她互动的人物和王国中的其他人相连。


如果向前对比第7季,就知道剧情发生了多大变化:


640?wx_fmt=png


现在,琼恩·雪诺以压倒性优势,成为中介中心性算法推算的最重要的人物。他的得分比仅次一名的丹尼莉丝还多出一倍。算法掐指一算,他很可能承担着黏合剂的角色。


除此之外,测量重要性的另一种算法是PageRank算法,它常用于计量节点的总体(包括间接)影响。PageRank算法不仅能找出本身重要的角色,还能发现与其他人互动最多的人物。


640?wx_fmt=png


上图中出现了许多熟悉的面孔——乔弗里和提利昂在程度中心性得分中排名较高,艾莉亚则位居中介中心性排名榜首。这里需要注意的是,对于其他数据组,尤其是那些包含复杂关系的数据组而言,中心性排名很可能出现更多变化。


现在我们再回到之前的数据,将上图结果与运行PageRank算法后的第1季权游输出数据进行比对,第1季数据如下:


640?wx_fmt=png


奈德·史塔克无疑是现阶段影响力最大的角色,但不幸的是,好景不长!


通过比对碎片数据结果(碎片数据或许以时间,或许以地理位置,抑或以人口统计为基准),我们得以揭露更深层的内容。


最后,通过结合社区发现算法和中心性算法得出可视化格式结果,以此总结本文。


根据节点的Louvain模块度集群,以及所在的PageRank得分,分别离合出不同的颜色和大小,如图:


640?wx_fmt=png


在这张图中,我们不仅能看到不同的集群,还能察觉到每一特定集群里最重要的人物。不难料到,龙母是孤立集群里最重要的角色。同样,我们还能看到其他熟悉的角色,包括蓝色集群中的艾莉亚和泰温(兰尼斯特家族族长),黄色集群中的提利昂、瑟曦(兰尼斯特家族长女)和乔弗里,以及绿色集群中的琼恩。


大家“共聚一堂”,交错出复杂的集群网,争夺“真正C位王者”的宝座。


640?wx_fmt=jpeg

图片来源:www.sohu.com


640?wx_fmt=jpeg

留言 点赞 发个朋友圈

我们一起分享AI学习与发展的干货


编译组:夏伊凡、廖馨婷

相关链接:

https://dzone.com/articles/applying-graph-analytics-to-game-of-thrones

如需转载,请后台留言,遵守转载规范


推荐文章阅读


ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017 论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾


长按识别二维码可添加关注

读芯君爱你


640?wx_fmt=gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVP(Model-View-Presenter)是一种在Android开发中常用的软件架构模式。它的原理是将应用程序分为三个主要模块:模型(Model),视图(View)和展示器(Presenter)。这种架构模式的目的是将业务逻辑与界面逻辑分离,使得代码更加可维护和可测试。 在MVP架构中,模型(Model)负责处理数据和业务逻辑。视图(View)负责展示界面并与用户进行交互。展示器(Presenter)充当模型和视图之间的中间层,负责协调数据的获取和展示,并处理用户的交互逻辑。 使用MVP框架,你可以按照以下步骤进行: 1. 创建模型(Model):定义数据和业务逻辑,例如从数据库或网络获取数据的方法等。 2. 创建视图(View):定义界面的接口,例如显示数据、响应用户交互的方法等。 3. 创建展示器(Presenter):实现展示器接口,并在其中编写业务逻辑。展示器通过调用模型的方法获取数据,并将数据传递给视图进行展示。同时,它还监听视图的交互事件,根据事件触发相应的操作。 4. 将视图与展示器关联:在Activity或Fragment中创建视图和展示器的实例,并将它们关联起来。通过接口回调或依赖注入等方式,将展示器的实例传递给视图。 通过以上步骤,你就可以使用MVP框架来组织你的Android应用程序,实现业务逻辑与界面逻辑的分离,提高代码的可维护性和可测试性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值