81327767 2017-08-01
大数据文摘作品,转载要求见文末
作者 | Milan Janosov
编译 | Aileen、康璐、大力
导读:中欧大学的一位真爱权游的博士生用网络科学的算法预测了《权力的游戏》这部分分钟杀主角的神剧中下一个挂掉的会是谁。为了不剧透小编就不多说了,大家自己来看看他的预测和你的是否一致吧。刚追完最新一集GOT的小编还在各种震惊中,表示这个Flag我算是认了!(我什么也没说~)
新一季的《权力的游戏》终于开!播!了!
和各位望眼欲穿的粉丝一样,我也无比好奇,黑脑洞的编剧在这一季又安排了哪些角色去领盒饭。所以我决定,做一个按照角色死掉可能性进行高低排序的排名算法。
本文的全部分析结果在新一季开播前已经完成,如与剧情雷同,纯属巧(牛)合(逼)。
《权力的游戏》的世界和人物关系非常复杂,社会地位和真正的朋友显得格外重要,所以我用网络科学(Network Science)工具来量化每一个角色的社会互动模式,用机器学习的方法预测他们的命运。
我在一个粉丝网站上(https://genius.com/search?q=game+of+thrones)收集对话格式的剧中字幕作为数据源。不幸的是,第二季和第三季的多数剧集都是缺失的,但是剩下的四季,包含将近600个场景,都能够用统一格式获取。
首先,我建立了剧中社交系统的集成网络。在这个网络中,每个节点都代表一个故事中的角色,每两个点之间的连线粗细代表他们的关系强度。我把剧中的场景作为衡量社交互动的基础单位(每集平均有大概20个场景)。这代表两个人物在同一个场景中出现一次(n次)就会有一个强度为1(n)的关系联结,并且在一个场景中出现的任意两个人都会互相联结。换句话说,场景就是完备图(complete graph),或者团集(clique),在其中出现的任意一对人物都会让自己的关系强度增加。通过计算这些场景级的完备网络,并且把他们集成起来,我们会得到维斯特洛大陆上Westeros的全局社交网络(与全景相链接),这张网络有将近400各结点和超过3000条边。
在网络可视化中,不同大家族中的成员用不同的颜色表示(例如,蓝色—史塔克家族Starks,红色—兰尼斯特家族Lannisters,黄色—马泰尔家族Martells),其他非大家族成员都用灰色表示。
结点的大小与角色的联系人个数成比例,最核心的角色名称标注在了结点旁边。度(下文会解释什么是节点的度)较低的、不那么有趣的节点被过滤掉了。
我们可以发现什么都不懂的琼恩.雪Jon Snow的周围是个独立的社交群体,这表示北境长城附近的角色与王国内其他角色的联系极少。小恶魔Tyrion有一个独立的角色:他将龙妈Daenerys Targaryen与社交网络的的中心包括君临城联系起来。这个中心主要包括两个大型集群,即史塔克家族Starks和兰尼斯特家族Lannisters以及他们影响和交互过的区域,譬如像史塔克Stark和徒利Tully家族(狼妈家)的结盟,以及兰尼斯特家族Lannisters和马泰尔家族Martells之间的冲突,这些在故事的核心形成了一张紧密的网。
下面我们了解一下数学原理。节点的重要程度有多重度量方法。我们认为这些度量指标能够表明一个角色在这个社交生态系统中的重要性。这些指标包括:
(1)节点度—一个角色有多少联系人;
(2)加权度—节点边权值的和;
(3)群集性—各对联系人节点互相联系的频率;
(4)中间中心性—通过度量一个节点出现在另外节点对之间最短路径上频率,衡量它在多大程度上是一座信息沟通桥梁。
除了更好地解谁重要谁不重要之外,我们也能从前六季中哪些角色领盒饭的数据中吸取经验。我们目标是把网络位置和幸存者联系起来:位置是否能预测幸存概率?换句话说,我们希望训练一个算法,来弄清楚哪个网络指标能够预测一个角色是否死亡。
表1:六个随机角色的特征集(基于网络分析)和目标变量(前六季中角色是否死亡)
横坐标:小乔大帝、班杨史塔克、希恩葛雷乔伊、琼恩雪、梅丽桑卓
纵坐标:度、加权度、网页排名、群集性、特征中心性、紧密中心性、中间中心性、死亡与否
有94个角色值得我们关注。他们都可以用七个不同的基于网络的指标来描述,这些指标代表了不同维度的社交重要度。我们也知道哪些角色已经死了(其中的61个)。基于这些指标,通过下面的方法,对于哪个角色会在接下来死去我们可以形成有根据的推测:了解还活着的人有哪些和已经死去的角色有相似的特征。这个问题类似于众所周知的流失问题,多种基于分类的算法能解决这类问题。在这个分析中我们使用SVM(支持向量机),这也是最准确的模型。如果你想自己在家尝试的话,它在Python中有一个很容易上手的应用 (http://blog.yhat.com/posts/predicting-customer-churn-with-sklearn.html) 。
机器学习算法会把所有特征计算在内,并预测目标变量可能的值。在这个例子中,数据被多次随机分为测试和训练集,所有分组数据都能生成预测值,并进一步得到最终结果。
在这种交叉验证中,SVM分类器有72.3%的概率预测到正确的分类结果(死了或者活着),考虑到数据的类型和规模这个结果是合理的。为了说明模型准确度,模型认为有八个角色不应该死掉,但是在故事中他们死了—模型无法预测到他们的死亡。比如小玫瑰Margaery Tyrell—似乎皇后死亡比皇帝死亡可能性小,还有Janos Slynt(前都城卫队司令),他被从君临城流放到了北境长城,导致他极有势力的朋友无法救他,尽管模型建议他们去救。
需要说明的是,有其他一些手段可以增加预测的准确性,例如引入其他特征类型(比如:性别、是否是贵族、对话情感分析等等),拥有更完备的数据集,对比电视剧和原著小说等。这个模型也忽视了一些差异性,如琼恩雪Jon Snow死而复生、班杨史塔克Benjen Stark介于活与死之间。
使用SVM模型我们得到了答案——每个重要角色死亡的概率。因为网络指标经常相关性很高,我们无法找到单独一个或两个能非常准确预测结论的指标,但似乎高中间中心性,低群集性和高节点度的角色更不容易被杀害。
不论在哪种情况下,机器学习在大量的特征中准确的找到了隐藏的关系。在预测中,我使用五折交叉检验,并且把这个过程重复了100次来获得统计值和概率误差的估算。最后,下面是按照最终预测模型显示的存活率升序排列的角色列表:
表2:在一百次概率值重复预测(五折交叉检验)后,获得的《权力的游戏》的角色和他们基于网络中心模式的死亡概率及误差。
横坐标从上而下分别为:Tyene(红毒蛇的小女儿)、龙妈、灰虫子、劳勃艾林(乖罗宾,新任鹰巢城公爵)、波德瑞克(小恶魔前侍从)、艾德慕徒利、大琼恩安柏、贾坤、波隆、艾丽娅史塔克、猎狗桑铎克里冈、美人布蕾妮、梅丽桑卓、老玫瑰奥伦娜提利尔、雅拉葛雷乔伊、次子团团长达里奥纳哈里斯、詹姆兰尼斯特、詹德利(劳勃拜拉席恩的私生子)、布兰登史塔克、三傻史塔克、八爪蜘蛛瓦里斯、小恶魔提利昂兰尼斯特、小指头培提尔贝里席、科本学士
纵坐标:死亡概率、误差
预测死亡概率最高是这位妹子…我说什么好…(我什么也没说!剧透可耻!)
这个死亡概率列表告诉我们很多有趣的事:
由于和很多死亡嫌疑人的网络重叠,龙妈Daenerys很可能马上会挂,但小恶魔Tyrion和琼恩雪Jon Snow是相对安全的。
一直受欢迎的艾丽娅史塔克Arya Stark和不太友好的猎狗,之前已多次面临死亡,现在也都在非常危险的位置上。
令人惊讶的,现在正坐在铁王座上的瑟曦Cersei,和正在努力争取坐上去的小指头Baelish,看起来安全的多。
看起来乔拉莫尔蒙爵士Jorah Mormont将会找到灰鳞病的治疗方法,尽管希恩葛雷乔伊历尽艰难,却可能会幸存。(咳咳!剧透可耻!)
可惜的是,鹰巢城艾林家族的命运就很难说了。
恩…是很有趣…各位怎么看?
原文链接:https://cns.ceu.edu/article/2017-07-08/network-science-predicts-who-dies-next-game-thrones