Neo4j 数据分析—附薅羊毛教程

Neo4j 数据分析—附薅羊毛教程

编者按:本文作者 @景天天。本期博文介绍 Neo4j 图算法应用及可视化工具,文末还有福利环节哦~


欢迎扫码关注数据科学公众号

扫码关注:数据科学一线

Neo4j 是由 Neo4j, Inc 开发的图形数据库管理系统,在众多图数据库中处于领导地位。 在近5年的 DB-Engines 的欢迎度排名中,Neo4j在图数据库中一直位列榜首,可以说它是目前使用最广、用户最多、商业化最好的图数据库。

其实严格地来说,Neo4j不仅仅是数据库,而是一套基于图数据库的图平台。下面这张图呈现了Neo4j图平台的特点和覆盖的功能模块。很多关于图数据库的介绍都侧重在其作为数据库的性能和操作层面,今天我们就从数据科学家和商业分析师的视角来看一看 Neo4j 在数据分析上的应用。

Neo4j Graph Platform

在开始之前先来看一下普通用户如何获得 Neo4j。Neo4j分为社区版和企业版,普通用户想使用或体验的话可以下载 Neo4j Desktop 或者使用 Online Sandbox版本。目前 Neo4j 已宣布其和 Google Cloud达成战略合作,用户可以在GCP(Google Cloud Platform)上看到 Neo4j 企业版的Engine。

图算法应用

相信小伙伴们都看了之前介绍图算法的博文

博文中提到的 O’Reilly 新书 《Graph Algorithms》的作者 Amy Holder 和 Mark Needham其实都是 Neo4j的员工,理所当然,书中的案例也是主要基于 Neo4j 所编写。

编者按:O’Reilly 官网上原本提供了两个版本的《Graph Algorithms》,除了在图算法博文中介绍的,还有Neo4j version。现在的官网只保留了Neo4j version

Neo4j的使用主要基于 Cypher语言,其图分析算法的实现主要由 Graph Algorithm 插件支持。目前这个插件除了囊括了上篇博文中介绍的路径分析、中心度分析和社群分析三类图算法函数,还包括了相似度计算、链接预测、数据预处理等模块,具体算法的使用可以参考 The Neo4j Graph Algorithms User Guide v3.5。能够感受到的是,无论是在函数的丰富程度方面还是文档的编写方面,Neo4j对图算法的支持还在飞速进化中。

那么 Neo4j 中的图算法是如何应用于数据科学任务的呢?我们以链路预测(link prediction)问题为例来一探究竟。

链路预测问题

2004年 Jon Kleinberg 和 David Liben-Nowell 在其关于社交网络的论文中抛出了这样的问题:

如果我们有某个时点的社交网络,是否能够推断成员之间在未来是否会发生新的链接?

提出这样问题的一个假设前提是网络不是静态的,而是会发生变化的,并且推断的成员之间当前没有链接。在互联网界,链路预测最具代表性的应用是 Facebook的朋友推荐和 Amazon的商品推荐;在学术界,则可以根据学者们过往合作论文的关系来预测或推荐未来的合作者。

除了预测未来的链接,链路预测还可以寻找到网络中隐藏或缺失的链接,如用来完善恐怖组织人员网络,进而更好地对犯罪分子进行抓捕等。同样在2004年,硅谷最神秘的独角兽 Palantir Technologies 成立,主要为美国政府机构和军方提供数据分析和软件服务。Palantir的传奇故事有很多,其中最出名的传闻是 Palantir 软件在抓捕本·拉登的行动中扮演了重要的角色,而图的应用正是其软件的主打特色。

当然身处和平年代,抓恐怖分子这样的事情基本不用我们吃瓜群众操心,有时间有精力不如多交一些良师益友。还是来看看怎么找朋友吧~

链路预测算法

之前的博文对图算法已经介绍的很详细,在此之外,图分析中还有一些主要针对链路问题的算法和指标。Neo4j 图算法中的链路预测模块共支持六个算法函数,这些函数能够对每对节点算出一个分数,分数反映的是两个节点之间的接近程度(proximity),分数越高,该对节点之间产生链接的可能性就越大。下面我们就来介绍链路问题中几个比较典型的算法。

Common Neighbors

Common Neighbors 可以算是最简单也最直观的方法,它计算的是共同好友数,对图来说就是计算两个节点共有的相邻节点数。下图中A和D有两个共同的朋友B、C,而A和E只有一个共同的朋友B,因此A和D之间更容易产生链接。


Common Neighbors

方法虽然简单,但是很实用。最常见的是 Linkedin 在推荐好友时,会显示共同好友人数,通常会把共同好友人数相对较高的人排在前面,而如果一个人和你没有共同好友,Ta被推荐给你的可能性就很低了。

Preferential Attachment

这个指标的计算也很简单,它的思想是如果A和B都是两个朋友很多的人,那他们俩认识的可能性就会很大。它的计算就是两个节点的 degree 相乘。下图中A、B和C的degree分别为5,2和6,AB的得分10小于AC的得分30,那么在这个方法下,AC之间产生链接的可能性会更高。

Preferential Attachment

Adamic-Adar

也叫 Frequency weighted Common Neighbors 算法,这个算法首先找出两个人的共同好友,计算他们共同好友的degree,取对数的倒数后再相加。相比于Common Neighbors中对共同好友的直接累加,取对数的倒数相当于给每个共同好友计算了一个权重,一个共同好友的degree越大,则权重越低。可以理解为如果一个共同好友的朋友太多,那Ta介绍两个人认识的概率就比较低了。

Adamic-Adar

摸着良心说话,Neo4j毕竟靠数据库起家,对于图算法支持的完善程度还是有一定提升空间的。不过对于数据科学任务来说,算法只是工具,不在于全面和复杂,能够贴合实际解决问题才是关键。

Beyond 图算法

回到链路预测,此类问题很多时候可以看作是一个二分类的预测问题。对于该类问题,很容易想到监督学习的方法。结合监督学习,解决的思路就是将图算法生成的 Common Neighbors、Adamic-Adar甚至是之前博文中介绍的 PageRank等等指标作为监督学习模型的输入变量,用于模型的训练。这时,图算法可以被看作一个特征抽取器,作为机器学习任务的一个环节,提升并优化了机器学习任务的流程。

目前对于机器学习任务,最常用的编程语言非 Python和 R 莫属。Neo4j 现已官方提供了Python接口,也支持和 R 的交互。下图中列出了Neo4j支持交互的其他语言,可以说几乎涵盖了主流的编程语言,在这一点上,Neo4j比其他的图数据库胜一筹。


Neo4j 可视化

可视化的目的是为了更好地传递信息和表达想法,通常可以按照是否支持交互分为两类。不支持交互的可视化更侧重设计和构思,而可交互的可视化更侧重让受众去探索,网络的可视化大多属于后者。虽然可视化不算图分析的核心,但绝对是图分析的魅力所在。Neo4j官方罗列的支持的可视化工具就有不下十种,这些工具的设计大多是为了能够让非技术人员探索数据、理解数据。

Neo4j 原生可视化工具

Neo4j本身就自带一定的可视化功能,不过需要 Cypher 查询语句实现。查询得到的图配色清新,支持拖拉拽,且能够清晰的显示节点、关系和属性的信息,对中文的支持也非常友好,在查询节点不多的时候非常实用。不过当想要显示的点很多的话,就会显得有点挤。话不多说,上图:


Neo4j 自己主推的可视化工具叫做 Neo4j Bloom,可以通过关键词搜索来探索网络。不过只有商业版,想使用的话需要付费。根据官方宣传的图片,默认的风格跟上面的比较接近,但自由调整的余地大了很多:


Neo4j 对其他可视化工具的支持分为三类,分别为内置连接的可视化库、没有直接连接的可视化库以及单独的第三方产品。找几张官宣图来看一看吧

内置连接的可视化库Neovis.js:


没有直接连接的可视化库Sigma.js:


这里我们重点介绍一个单独的第三方产品 GraphXR,因为它比较酷~

GraphXR

GraphXR 是一个基于网页的图可视化平台,于2018年12月发布,现可作为插件在 Neo4j Desktop 中安装。GraphXR 可以使用关键词搜索和 Cypher语言构建图,其最大的特点是支持 VR(Virtual Reality),并且是目前唯一的能够同时支持二维数据可视化和VR功能的工具。其实数据可视化从二维到三维并不难,但是三维下的数据可视化往往被认为比较鸡肋。在VR环境下,三维可视化让人们有了更多期待。

抛开VR,GraphXR也算是可圈可点。它的界面绚丽,并提供地图支持地理空间映射和时间序列的动态可视化。官方给出的图例也还算走心。

风险投资人关系分析:



虚拟货币XRP交易分析:


不过GraphXR也不是尽善尽美,毕竟还在发展初期。在GraphXR中,当网络中的两个节点中有多个关系时,只会显示一条关系,且中文在网络中有时会显示不出来,另外当节点比较少时,网络的颜值会显得比较低。

说到网络的可视化,不得不提及Gephi。Gephi主打的就是网络的可视化探索。在颜值方面,GraphXR 几乎是目前为数不多地能够跟 Gephi平分秋色地可视化工具。

福利—免费T恤和证书

Neo4j的开发者们为了鼓(hu)励(you)更多技术人员加入社区也是很舍得下血本。最近在学习Neo4j的过程中发现,只要通过一个免费的Neo4j Certification考试,Neo4j就会免费赠送官方纪念T恤,T恤很实在的区分了男款和女款,还支持免费的国际邮递。所以上一句话的重点就是免费。怀揣着一颗买菜大妈的少女心,很开心的刷完了这个证书,从刷完到收到T恤寄到手中大约花了50天,都免费了慢一点算啥!下面就奉上攻略,详情可见neo4j.com/graphacademy/

薅羊毛攻略

首先你需要通过 Neo4j Certification 考试,考试包含80道选择题,答对64道就算通过。考试的内容包括图模型、Cypher语言特性、图数据库的特性等等。当然在考试之前需要进行一定的学习,学习的资料基本都来源于Neo4j官网的文档和视频。当然一点都不想学也不是不行,因为考试不限次数,答了两次,发现考题几乎是固定的。

通过考试后你就会收到一个电子版证书和一封 Order your t-shirt的邮件,点开邮件中的链接就可以选衣服的大小和填写收货地址啦。大约过了一个月后终于从一个不知名的城市发货了,又经过了二十天左右,寄到了上海,同时寄来的还有一个电脑贴纸。

Neo4j社区还是很活跃的,每周都会有online meetup来介绍不同行业的图分析案例,而meetup的常驻主持人正是算法书的作者Mark Needham。

总结

今天的博文更多的是介绍和一些经验分享,实际生活中经常会有人质疑图分析真的有用吗?别急,下半年将会带你 Unlock Secrets,敬请期待吧!

References:

neo4j.com/

cs.cornell.edu/home/kle

medium.com/neo4j/link-p

be.amazd.com/link-predi

statweb.stanford.edu/~o

coursera.org/learn/pyth

en.wikipedia.org/wiki/P

palantir.com/

bilibili.com/video/av14

kineviz.com/graphxr/

socialflow.com/breaking

编辑于 2019-05-15 16:16