“通过一个人来维持亲密关系的人数最多可达到150人。”这曾经是人类学家罗宾·邓巴引以为豪的科学结论之一。
不过随着网络社交平台的出现以及日渐繁荣,很多人觉得“邓巴理论”在纷繁复杂的虚拟世界并不适用,如今我们切身感受到的实际情况又如何呢?
事实上,如果一个人要同更多人建立并完成互动,可想而知,势必会削弱在其他非目标人群身上花费的精力,但这种人际关系的亲疏远近会随着时间推移而不断变化。
试想一下,如果能够准确识别人与人之间的关系并下定义,诸多行业领域的新方向探索就会变得乐观起来,例如常见的诈骗团伙识别。我们可以做到通过诈骗团伙分子的通话关系网络来识别可能存在的不良关系,最后将所有坏人一网打尽。
基于此,联通大数据技术专家闫龙将从“本体论”聊起,深入谈谈联通大数据关系图谱的构建与应用。
从本体论出发“开个头儿”
万维网之父Tim Berners-Lee教授在1998年将语义网络(Semantic web)带入人类的视线,目的是赋予网络理解词语、概念以及它们之间逻辑关系的能力,使人机交互变得更有效率。
而本体论(Ontology)做为语义网的核心,是研究实体存在及其本质的通用理论。早在1993年Thomas Gruber教授提出了本体论最广为认同的定义:共享概念模型的明确的形式化规范说明。
其中实际提出了四个概念,即:“概念模型”(Conceptualization)指通过客观世界中一些现象的相关概念而得到的模型;“明确”(Explicit)指所使用的概念及其约束都有明确的定义;“形式化”(Formal)指Ontology是计算机可读的;“共享(Share)”指本体论中体现的是共同认可的知识,反映的是相关领域中公认的概念集。
然而本体论最初是形而上学的一个分支,对于形而上学的理解,这里有一个例子(如:图1)
图中中文的“猫”与“猫咪”,英文的“cat”,“猫的图片”都可以用来描述“猫”这个实物;那么在哲学层面,“猫”这样一个实物就是亚里士多德口中的“实体”,巴门尼德口中的“存在”,以及本体论中所说的“本体”,而上图这些描述均指的是“猫”这个“本体”的符号。
这里,我们能看出“本体”这个概念在哲学层面上是形而上的,是只可意会不可言传的,因此对于一个实体,所有的描述都是这个“本体”的外在符号,我们感受到的、听到的、看到的,都成为符号到本体的某种映射。
解释完本体哲学层面的意思,是否对语义层面的本体有更好的理解呢?
其实,主要目的就是要建立这样一种映射,例如:{“猫”,“猫咪”,“喵咪”,“cat”}这个符号集都映射到“猫”这个“本体”上来。当我们建立了本体的集合,本体间的逻辑关系就是存在的(如:IF A⊆B and B⊆C,THEN A⊆C)。
本体的逻辑层提供了公理和推理规则,进而实现相应的逻辑推理,这有可能是“属性-本体”的关系,也有可能是“子类-本体”的关系,更有可能是“本体-本体”的对立或者是近似关系。
本体论最终的目的是去实现知识表达,构建知识库,实现知识推理,即借由本体论中的基本元素:实体与实体间的关联,作为描述真实世界的知识模型。
这种知识模型究竟有什么用?
Google在2012年提出Knowledge Graph,就是为了将传统的keyword-based搜索向基于语义的搜索升级。知识图谱可以用来更好的查询复杂的关联信息,从语义层面理解用户意图,改进搜索质量。
这里借用本体的概念给出我个人对知识图谱的理解:知识图谱就是用来描述真实世界中存在的各种实体,以及他们之间的关系,而实体本身会有多样实例,属性。就像之前“猫的例子”(如下图2),当我们查询“喵喵喵喵喵”时,返回的不会是抖音上很红的《学猫叫》,而是“猫”这个实体。
同时,在其他知识的补充下我们可以知道“猫”有一个实例是“茄子”,而“茄子”的主人是我,我和小胡都就职于联通大数据,并且通话关系很密切。当我们知识库中的实体、关系、属性、实例等的量级非常大时就能绘制成一个巨型的网络关系拓扑图。有了这样的知识库,搜索引擎就能洞察用户查询背后的语义信息,返回更为精准的信息。
换言之,知识图谱引入了更多的含义,对事物进行搜索,像人类一样去思考、联想、关联,这也印证了Google knowledge graph的初衷:“The world is not made of strings , but is made of things.”
(图2)
另外,如果我们把各种语言的“猫”都映射到“猫”这个本体上,再基于与名词主体、动词主体构建的逻辑关系或动宾短语等,通过反映射就可以实现简易的机器翻译。
关于图数据库,也有可说的事儿
2018年9月,【联通大数据】官方微信公众号发表了一篇题为《专家课堂|NoSQL还是SQL》的文章,关于NoSQL or SQL, Why NoSQL之类的话题本文就不再赘述了。从上一节的图中,我们可以清晰地看出,通话记录就能以实体及关系的方式存储,这是运营商数据的固有优势,在我们的场景里不用花太多时间去做基于nlp技术的实体抽取、关系抽取。
我们关注的重点则是通话关系网络中,如何保证海量的动态更新的通话节点及关系载入图中、哪些人有哪些通话行为特征、这些图中挖掘出的特征如何贡献在现有的场景模型中等。例如在风控领域,我们正在应用图发现相关方法探索样本号码或ID是否在一个诈骗社区,是否有稳定的通话社交圈,与黑产号码存在几度的关联,关联系数是怎样的,是否有多个电话组内关联等,这些都将是风控、反欺诈类模型的新特征。
此外,测试数据集选用三个月全网用户的通话记录,节点属性包括是否联通号、手机号码对应职住经纬度等;边属性包括号码间三个月的主被叫通话次数、主被叫次数,天数,时长等。数据集大小约为750G,载入图数据库结果如图3。
(图3)
载入后根据每台机器VertexCount和EdgeCount可以看到图数据库共加载了约17亿节点(号码),340亿边(通话关系)。其中NumOfSkippedVertices表达了一个去重的过程,即:每个节点只加载一遍。因此,partition size的总和只有590G左右,实际上是对数据进行了压缩。
做一个简单的号码关系查询(如图4),在百亿级边的图数据库里可以实现毫秒级响应。值得注意的有两点:1. 查询返回为json格式;2. 查询语言为类sql语言。
(图4)
我们可以将查询语言以文件形式存储,通过install/run query进行查询;同时,在后台install一个查询还会生成一个REST端点,这样就可以通过http来调用参数化查询。
如图5,通过查询语言进行图遍历,寻找两个号码间的最短距离。这样就能实现我们熟悉的六度空间理论(小世界理论),即世界上任何两个人最多只需通过6个关系就能找到对方。
(图5)
如果我们定义号码与号码间的通话频次为关系权重,每个人的通话人数为通话活跃度。试想,一个人和你没有通话记录,但是和你的好朋友通话比较频繁,你是不是也有可能认识这个人呢?这个查询就是从图中挖掘你可能认识的人。查询输入是待查号码与最可能认识的k个手机号,返回是查询号码和输入号码的距离(如图6)。
(图6)
最后,给出一个真实的场景案例,是否能够通过企业少数员工号码、imei或其他ID,寻找企业员工群体,并对该群体进行分析,来反应企业实际经营地址、活跃度等情况呢?这里给出【2步邻居子图】的概念(以手机号做节点为例),即输入号码联系人及联系人的联系人(如图7,这里使用可视化交互界面展示通话关系)。
(图7)
在模型搭建过程中,我们对通话时间段、时长、频次进行分析,评估可能存在的同事关系,并基于现有职住模型以及栅格技术挖掘企业真实经营地址。
以我自己手机号为例(如图8),可以看到返回企业员工主要聚集的工作地(数字表示工作地在相应栅格内的人数),即联通大数据公司两个办公区(职住数据取自2018年12月)、联通集团。
(图8)
基于对人群行为的洞察,该模型能够帮助工商部门动态的、客观的对企业真实位置、企业活跃情况进行评估与判断,为相关监察监管提供数据支撑。
值得一提的是,基于联通大数据关系图谱,在十亿级节点、百亿级边的大型网络结构中,查询6步邻居子图也只需要不到1秒(如图9),可视化交互界面如图10(中间白色点为我的手机号)。
(图9)
(图10)
为了更细节的洞察网络中的关系,将展示阈值缩小(如图11)。经查验,中间环形结构上的每个点相互间都是同事关系,社交网络中环形结构上的点往往存在某种隐含关联,同事关系、亲疏关系、团伙关系、资金流向等。基于不同样本、不同场景的应用,相较于传统数据库类型,图数据库可以最大程度挖掘样本间的关联关系。
(图11)
另外,大量经典的图挖掘算法,如:社区发现,Pagerank,LPA等也已ready,为传统机器学习模型入模特征增加更多的图特征。
总之,本体、知识图谱、图数据库都是用节点和关系为真实世界的各个场景直观地建模,运用“图”这种基础性、通用性的“语言”、“高保真”地表达这个多姿多彩世界的各种关系,并且非常直观、自然、直接和高效。联通数据拥有“节点”、“关系”优势,正促使我们坚定地进行图发现的探索中!
参考文献:
【1】http://www.kmcenter.org/zhishibiaoshideyishu/
【2】http://www.woshipm.com/it/1088237.html
【3】https://www.jianshu.com/p/07eef40a950d
福利
扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!
2、公众号后台回复:工具,获取开源云监控工具详细资料!
推荐阅读: