【干货】邓柯:为历史上的政治精英建立亲属关系网络

本文长度为2000字,建议阅读5分钟

本讲座选自清华大学统计学研究中心邓柯副主任于2015年12月23日在清华RONGv2.0系列论坛之 “社会关系网络与大数据技术”专场上所做的题为《为历史上的政治精英建立亲属关系网络》的演讲。

演讲全文:

邓柯:非常高兴,也非常感谢到场的嘉宾和同学来参加这样的活动。早上大家讲了很多Social Network的问题,但是基本上要假定我首先得有一个SocialNetwork,像Face Book这样在网上有一个东西在那里放着的。

有一些Social Network虽然我们没有办法直接知道,但是我们可以通过一些方式把一些局部的信息给拼接起来得到一个Social Network。我们讲到一些历史人物,但他们都死掉了,没办法上Face book把他们弄出来。我们有了这样一个Social Network之后,如何通过做具体的分析拿到一些有用的信息,这是我今天想讲的主题。

这是我自己的简历,在今天所有的演讲者里面,我还是非常资浅。我本科博士都是在北大读的,后来到哈佛统计系做博士后做了一些研究。当时机缘巧合和哈佛人文社科历史学里一个影响很大的项目结缘,他们主要做了中国历代人物传记资料的数据库,我在业余帮助做这个事,做了以后发现很多问题很有意思。

统计(学科)在信号很强或者说问题比较简单的时候,可能你不太需要统计,简单地画几个图,可能我想要的东西就拿出来了。但是一旦我的问题复杂起来,我的数据比较复杂,有很多噪声、干扰,我想问的问题稍微深入一点,这时候如果我们做很简单的画图可能不一定能很好的回答这个问题。

所以我们进去后,一开始觉得和我们的研究领域差得很远,后来发现有些东西很有意思。很多工作也是刚刚起步,但是后面怎么深入分析、提高效率,我们还是有很多工作需要去做。我们研究中心也是刚刚成立的,还成立了一个大数据中心。

我要讲两个方面,先讲第一个方面,拼图,从很多小的碎片化的信息里,怎么样把一个社会关系网络给生成出来,生成历史人物亲属关系网,这个比较具体,但是我们也希望我们发展的方法有更广泛的领域。

先介绍一下来由,这是我们和皮特教授的合作,他是非常有名的汉学家,在我们古代思想史研究方面有非常大的影响力。他本身还是哈佛社会科学系的主任,两年前是哈佛的副教育长,在学术上有很多的影响力。他在做什么事?20年前就开始提出他的理念,把所有的史书,还有更多的地方志、家谱、书信,能搜集到的资料和信息都搜集,搜集到之后也是非常庞大的历史资料数据库。

他们想做什么事?直观分析想做这么些事,当有丰富的历史资料以后,里面包含了很多历史人物的相关信息,这个人在哪里出生、爸妈是谁,哪年做的进士,在哪里当官,他的一生中跟什么样的人物有关联,其实就是想通过大数据的积累定量解决这个问题。我们希望通过这个分析,把各种各样的历史资料信息提取出来以后,变成一个历史人物的Face Book。

这个网络从客观方面来讲历史上也是存在的,但是这些历史人物已经去世一两千年了,那时候也没电脑,也不可能现在再活过来买电脑建自己的网络,所以这个网络我们不能假定它有,但是这些网络里的信息都在这个数据里。我们能不能用一个有效的方式进行提取和整理,变成这样的网络,变成这样的网络以后,我们就可以做各种各样非常有意思的分析了。

这里给大家一个例子,这是一个展示的例子,假设我们看历史人物,这里有六个历史人物,是清代的。比如说这个人很有名,是光绪皇帝的帝师,我们看清史传记时,每个历史人物都有自己的事,翁咸封有三个儿子、五个孙子、一个重孙子,从他的碎片化信息里提取到这些信息。但是再往后看就麻烦了,你知道他有三个儿子、五个孙子,但是你不知道哪个孙子是哪个儿子的儿子。可能还有一些别的信息不知道,所以你盯着看他第一个儿子的传记,发现这个儿子的爸是谁,有什么兄弟,有什么儿子和孙子。每个人都是一样的,你看他自己的传记、信息会得到关于这个人局部的信息。我们希望所有的这些信息都汇总到一块儿,最后得到的是这样的。

你会把这些所有的信息整合起来,有些信息是冗余的。比如说这个孙子是这个儿子的儿子,就不需要再接了,但是有些地方你知道他有两个孙子,但是这个孙子是哪个儿子的儿子?你搞不清楚。所以最后通过我们的分析可能会得到这张表,得到这张表以后信息更丰富。这些图都是分散的,而且有很多信息的冗余,给数据库存储带来很大的困扰,但是一旦整理了以后我们就有一个清晰的认知。这个例子看起来蛮简单的,但是实际上做的时候不是太容易,为什么?因为实际上人物很多。比如说我们一开始接触到这个数据库大概有几十万个历史人物,而且这里面还有一个很大的问题,你知道这个人叫这个名,但这个人和那个人是不是同一个人?有时候你不知道。

再看一个数据,宋代的王安石,家在这个地方,抚州,他爸叫王益,弟弟叫王安礼,儿子叫王旁。再看王安礼会发现,他有一个哥哥,有一个弟弟。还有另外一个信息源,他叫王荆公,出生地等等都不知道,但是你发现他有一个弟弟是王安国,你也有一个弟弟叫王安国,这个也叫王安国,这个王安国的儿子叫王念孙。我们看到的数据不是这四个,是好几十万条,很多的信息归结到一块儿。

我们需要进行有效的识别,这个王安国和这个王安国是不是同一个人?这个王安石和王荆公是什么关系?需要分析。从这些例子里看,这五个人是连在一块儿的。但是另外这个王安国却又是另外一个人,因为他们的出生年月差了好多,这样就变成两个Social Networks了。

现在有那么大的数据量不可能全部由人去做,我们需要一个计算机的算法去实现。现在有一些计算的方式和方法,我们也想了很多办法怎么去做,通过一个例子给大家展示。我们提出了一个可行的数据库操作的方法,叫IO整合和优化的过程。这是我们原始的数据,有四个碎片局部的网络,每个网络都有一些信息,我希望能够自动地对这些网络进行整合。

怎么做?

第一件事,先把每个网络里的人排序号,这里有四个人,他们是怎么样的,通过这样的信息,我把每个人的信息都进行补全,你知道王安石有一个爸爸叫王益,王益的儿子叫王安石,通过这个信息去补全,补全了之后就可以填补这些人的关系,这样每一条的四个关系就变成了四个网络。

有了这个过程之后下一步就要做网络优化了,因为你发现在这里面存储了很多信息,很多信息是冗余的,当你把冗余的信息进行整合以后就发现我不需要这么多数,我只需要很简单的表示,这个人有一个父亲、一个儿子。当你把间接的亲属关系都变成直接的亲属关系,在数据库的存储和表达上就变得很简单了。

父亲、儿子、夫妻这几类是属于最简单的直接亲属关系,这些可以在结构上进行简化。简化完了以后就会发现,原来很多的信息冗余的数据库变成了只存储直接信息的简单数据库。有了这个信息以后,下面我们需要进行网络的融合。这相当于三个小的拼图一样,这里面有一些很相同的关系,比如说这个王安石有一个弟弟,这个弟弟叫王安礼,你发现这里面有一个王安石,他有一个弟弟也叫王安礼。

这边的王安礼有一个弟弟叫王安国,通过把信息拼起来以后,你发现这一拨人的几个人不仅名字相同,亲属关系也是一样的。通过一些关系的分析,你会发现这些人有很高的概率是同一个人,但是你需要做一些定量的计算来评价概率到底有多高。评价了以后我们有一定的算法,具体不说了,我们就开始进行数据拼接了,三个网络的人拼接成一个网络。联合了以后,网络数变少了,但是网络内部的关系还是挺复杂的,有很多这样间接的关系。

下一步我们需要怎么做?

再做一步简化,我把这里面一些复杂的,带有很多间接关系的信息整合优化成一个仅包含直接关系的信息。这个数据库看起来很复杂,而这个数据库看起来就简单多了,我们通过两步的迭代和优化就能逐步实现整个儿网络结构的调整。

大体是这样的一个过程,这里给大家展示这样一个具体的例子。但是我们实际做的过程中,有十几万的碎片,有很多的人物,处理起来还是有很多细节需要分析的。

分析最困难的地方就在亲属关系的表示上,原始数据库里A和B是什么样的关系,从我们来分析,最基本的直接亲属关系大概就这六种:父亲、母亲、儿子、女儿、丈夫、妻子,但是由此引申很多间接的关系,比如说兄弟、姐妹、表亲。这些亲属关系直接、间接的,而且后面还有一些所谓的修饰符,比如说父亲是继父,古代娶一个老婆,他们有姻亲的关系,但是还没娶过门这个人死了,死了之后对方还认这个标记,所以在真正处理原始数据的时候,会有很多很复杂的结果。

所以我们这个系统实际上就有这些元素共同拼接出来对于复杂系统关系的表达方式。所以在这里就可以发现,你把这些东西组合起来可以形成一些很让人抓狂的关系。比如说这个是他兄弟女儿的未婚夫的父亲,第二个是老婆妈妈的表姊妹的儿子。在真实数据里面这个关系链有时候会很长,实际上你就是要处理这种东西。

我们想设计一个代数结构,做亲属关系的运算、定义符号、系统全部都可以用这个来计算,在这个计算的前提之下还得用我们前面说的方法去运行,我们试了一下,效果还不错。

总共有四百多种各种复杂的亲属关系,这是排名前三十的亲属关系,还有很多比较复杂的关系。

这个问题里面最难的问题在哪里?经常有错。你的数据很干净,关系很清楚,没有错误的这个比较好处理。但是我们发现这里面有很多的问题,不同的数据源不一样,这个数据源说A是B的父亲,那个数据源说A是B的叔父,而且有些信息源可能会有错误,比如生卒年月搞错了,处理这些错误的时候就比较困难。

大家可以想象系统运转的时候完全依靠亲属关系的比对,但是有时候比对要合并、拼接,这时候你一旦发现里面的信息是有错的,你拼接的时候就会产生一些错误。比如说A是B的儿子做得好好的,突然到另外一个地方说A不是B的儿子,B是A的儿子这样就弄反了。

我们也想了很多方法来做这个事情,你会发现性别什么的经常搞错,有些人按照那个信息去算生卒年月,你会发现他的年龄甚至是负的,或者说活了三百多年,就会出现各种各样奇怪的事情,所以花了很多的精力设计一些概率分析的方法做这件事。这一块有一些难的地方,当然我觉得我们这边有很多的专家可能解决过类似的问题。

这是最终算法的途径,开始在一个小的数据上试了,有13万个不同的历史人物,总共有这么多条“边”,有一万多个小的碎片,按照我们的方法一遍一遍的做,扫了九遍以后数据有收敛。第一遍发现大概有七千多个历史人物可以进行合并,合并了之后进行优化,这样小的碎片就变成大碎片,然后一点一点的往里合。第二步你会发现经过几步,这个系统就会收敛了。

这是我们比较早做的版本,现在数据量变得很大了,从十几万已经变成五十几万了,所以“边”里面的关系也会变得很复杂,我们也在不断地改进我们的方法。但是我觉得我们做完了以后里面还有很多有意思的问题值得做,包括合并的规则怎么判定,概率模型怎么设置,怎么有效的规避错误。这些还有很多可做的地方,如果有兴趣也欢迎大家跟我们一起探讨。

再讲第二个方面,我们有一个合作者是做社会学的,很关心政治人物和历史人物之间的社会网络和政治能力之间有什么关系,这也是很有意思的课题,我们当时也在这边做了演示我们做了什么事?

这是十八届中央委员会有376位中央委员和中央候补委员,其中105个中央委员,171个中央候补委员,我们想看这些人到底是什么样的关系。当然没有任何揭秘的东西,我们所有的信息都是公开的,比如说从新华社、百度百科都可以搜到的。

汇总起来以后我们这里可以织一些网,实际上我们想定义几种不同类型的Social Link,比如说谁和谁是同乡,这是一种重要的关系。还有一种是看谁是同学,你们两个在同一个学校念过书,不见面不行,至少在学校里有两年的时间。还有一种关系是work home,A在B的家乡工作,或者是反过来,这是一种关系。再一个是两个人在同一个地方工作过。

而且还要求层级之间不能差太多,比如说A是部长,C是科员,连不上。但是A是部长,C是厅级干部,还是有很多接触的机会。然后是系统,我们国家的政治体系有公检法系统、国务院系统等不同的系统,可以补全地方省份的不足,这个也是一样,两个人要同时工作两年以上,层级之间不能差得太远。

我们为什么要抓这个东西,这个东西在社会关系上还是有一个名字叫弱连接,两个人同一个省出来的不代表这两个人一定会有关系,这两个人在同一个系统工作,也不见得有这样的关系。所以这是一个非常弱的连接,与那种强连接是很不一样的,什么是强连接?他们的关系是很紧密的。以前很多人研究中国政治在强连接上做了很多工作,弱连接没有仔细看。

我们合作者有这样的想法,我们帮他实现,从弱连接来看能不能看到一些很有意思的现象。

从弱连接入手我们当时也做了很艰苦的数据整理,每一个人处理起来都是一个小碎片,你要把那些东西接起来,接的过程非常复杂。因为我们国家地理行政区的划分,中央政府部门经常在变,变来变去你说这两个人到底在不在一个系统里,整理这些很多、很细的数据还是很艰苦的。可以看到这个图中是三十个省,山东、江苏的人挺多的,然后是学校,中央党校,大家都在中央党校联系比较紧密。然后你要看省和家乡的联系,也可以去看不同的连接代表不同的信息,我们也希望把这些信息加权平均起来,会得到整体综合各种信息的网络,这个网络看起来也会更丰富一点。

我们想做什么事?很多做社会学的专家以前在这上面都会有分析,一个政治人物在社会网络当中的位置、结构,对他的政治影响力很有可能会有影响。所以我们提出一个核心的假设,在社会网络中你处于什么样的位置,可能会对你的政治影响力产生影响。

在做这个事我们也要有一些度量,网络复杂,到底怎么刻划?我们用最简单的指标,这个做得比较粗浅,我们提出了中心度这样一个指标,通过中心度刻划一个人物在网络当中的重要性。你这个人有多少朋友,你是跟100个人还是10个人连,“边”是有权重加和的,如果一个人的“边”越多,有越多直接联系的朋友,“边”权重也会比较重。我们看所谓的Closeness,你和任何一个人相连起来,最短的路径是多少?

通过最短的路径就可以定义Closeness。还可以定义Betweenness,如果我一个人落在了两个人的最短路径上,那也很重要,因为A想找到B至少要通过我。所以一个人如果有越多人的最短路径,说明你这个人也越重要,我们测试了好几种这种指标。

有了这样一个度量以后,我们就可以大概看到网络的基本结构,网络整体讲还是非常稀疏,同学的网络大概只有2%,工作系统会高一点是18%,总的来讲还是很稀疏的。像这个网络“边”比较多,平均的中心度也比较高,互相联系的联通性也比较好。当然我们也发现有些“边”跟谁都不联系的,有一些宏观特性我们可以简单看一下。

谢谢大家!

编辑:卢苗苗

原文发布于微信公众号 - 数据派THU(DatapiTHU)

原文发表时间:2017-03-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

深度学习动手实践:用 TensorFlow 打造“会看”的机器人

(文/Lukas Biewald)物体识别是当前机器学习最热门的方向。计算机早已能够识别如人脸、猫之类的物体,但识别更大范围里的任意物体对人工智能来说仍是难题。...

48760
来自专栏PPV课数据科学社区

不懂这几个问题,怎么学好数据挖掘!

关键词:数据挖掘、DataMining、OLAP、Data Warehousing 正文如下: 1、DataMining和统计分析有什么不同? 硬要去区分Dat...

36050
来自专栏顶级程序员

基于Python实现的微信好友数据分析

源 / 数盟 最近微信迎来了一次重要的更新,允许用户对”发现”页面进行定制。不知道从什么时候开始,微信朋友圈变得越来越复杂,当越来越多的人选择”仅展示最近三天的...

53340
来自专栏新智元

【AI VS人类】医生水平大PK: 人工智能四胜三平一负绝对领先

【新智元导读】IEEE Spectrum 日前公布了一个“记分牌”,显示了在医疗领域的各个子类中,AI 和人类医生谁更占优势,其中涵盖了心脏病、中风、自闭症、脑...

28160
来自专栏算法+

集 降噪 美颜 虚化 增强 为一体的极速图像润色算法 附Demo程序

在2015年8月份的时候,决心学习图像算法。 几乎把当时市面上的图像算法相关书籍都看了一遍, 资金有限,采取淘宝买二手书,长期驻留深圳图书馆的做法, 进度总是很...

78170
来自专栏AI科技大本营的专栏

基于Python实现的微信好友数据分析

本文转自微信公号5厘米的理想 作者 | 飞鸿踏雪 最近微信迎来了一次重要的更新,允许用户对”发现”页面进行定制。不知道从什么时候开始,微信朋友圈变得越来越复杂,...

59050
来自专栏大数据文摘

网购评论是真是假?文本挖掘告诉你

18770
来自专栏玉树芝兰

如何用Python做情感分析?

商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地。本文帮助你一步步用Python做出自己的情感分析结果,难道你不想试试看?

27320
来自专栏量子位

OpenAI推出开源机器人模拟软件Roboschool(附代码)

李林 编译自 OpenAI 量子位 报道 | 公众号 QbitAI 今天,马斯克和YC总裁Altman等硅谷名流共同创办的人工智能非营利组织OpenAI发布了一...

38790
来自专栏用户2442861的专栏

DL4J与Torch、Theano、Caffe、TensorFlow的比较

https://deeplearning4j.org/cn/compare-dl4j-torch7-pylearn

34220

扫码关注云+社区

领取腾讯云代金券