摘要:2019年1月18日,由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学,本次技术沙龙上,阿里巴巴资深技术专家钱正平为大家分享了大数据技术背景下图数据的应用前景,以及阿里巴巴在图数据的建模、查询和系统优化等方面做出的初步探索。
以下内容根据演讲视频以及PPT整理而成。
一、什么是图数据?
下面的关系网络展示了一个点和边构成的数据模型,点表示实体,边表示两个实体间的关系。关系网络极具灵活性,能够在统一视图里展示异构信息,其中的边可能来自不同表。比如,下图中的边表示了两个明星间的关系,可能由若干张表通过join操作形成。
如今,机器学习的数据分析pipeline可应用于各行各业各个门类的数据,来帮助企业更好地决策。图数据的价值在于它能够显式地表达出数据间的复杂关联结构,以辅助机器学习的数据分析过程,帮助机器学习算法更好地挖掘出数据背后的结构特征,提供更精准更可靠的决策支持。图数据的这种能力对一些领域格外重要。
Google早期使用的搜索算法pageRank就利用了图数据的这种能力,它利用网页间的相互链接信息来决定网页的重要程度。具体来说,被越多网页链接的网页越重要,被越重要的网页链接的网页也越重要。Google利用图数据重新定义了搜索,取得了非常卓越的成功。
图数据对阿里巴巴同样意义重大。以阿里巴巴的应用生态为例,天猫包含了用户的在线交易信息,高德地图包含了用户的出行信息,优酷土豆等包含了用户的观影信息,以人为维度将这些信息关联起来可以得到关于某用户的完整信息,以理解用户偏好。图数据模型能够将许多分散的图场景整合起来,形成一个庞大的图结构。阿里巴巴的图结构包含几十亿个点,成百上千亿条边,同时阿里应用巨大的日交易量也使得图结构千变万化,这些都为图数据的计算带来了严峻的挑战。
图应用与具体场景相关,阿里巴巴针对不同的应用场景设计了不同的图数据处理算法。以一个很长的数字序列为例,对其进行数据分析的第一步是“看”,即观察该序列可能存在的特征,此外,可能使用特征统计分析该序列包含某数字的个数。更进一步,模式匹配可以探寻该序列中可能存在的模式子串。最后,机器学习算法比如神经网络能帮助挖掘数字序列背后的规律。对该序列进行数据分析能够帮助在线预测相关信息,比如数字序列的下一位数字等。图数据分析方法能帮助洞察图数据,阿里巴巴在图数据方面的应用包括五类。
第一类是“看”,下图展示了经敏感信息处理后的阿里巴巴内部使用的可视化平台。真实环境中,商业问题可能存在多方面因素,研判业务问题非常困难。将图结构应用于可视化平台能够整合多维度数据,动态地将多维度数据关联起来,以帮助用户更好地决策。
第二类图数据应用是图算法。比如,pageRank算法利用图结构计算每个节点的权重值、连通分支等。连通分支可用于计算具有不同ID的实体,比如手机号、e-mail以及浏览器cookie等是否同属于一个自然人,从而提高企业的广告投放准确率。举例来说,淘宝用户使用浏览器购买商品后,浏览器将记录用户的cookie,下一次用户浏览新浪时,新浪可以根据该cookie获取用户的淘宝ID,从而获取用户的偏好以投放相关广告。连通分支将用户在不同应用的相关信息关联起来,从而更好地了解用户偏好,实现个性化应用。
第三类图数据应用是模式,比如基于子图模式的异常检测。图结构将不同表数据关联起来,从而暴露出日志信息无法表露出来的问题。比如,左图揭示了各个用户转账行为间的关联,第二幅图揭示了三个用户与四个商品间频繁的交易模式,这些信息仅依赖系统文本文件中的日志都无法获得。据报道,仅有百分之一的安全漏洞问题能通过日志分析检测出来,日志的单规则信息是不全面的,利用图结构信息关联不同数据非常必要。左图展示了简单的淘宝刷单模式,刷单人为商家刷单后,商家通过支付宝即时支付刷单费用,形成了图结构中的“环”,阿里巴巴通过检测“环”以检测简单的刷单行为。提供刷单服务的公司,大多运营大量的虚假账号来满足刷单请求,每个虚假账号可能同时为多个商品提供刷单服务。阿里巴巴使用图结构来表示用户与商品间的购买行为,k1个用户在一定较短时间内与v2个商品发生完全购买的行为,意味着k1个用户中可能存在大量虚假账号。图结构增强了系统对用户行为的捕捉能力。
第四类图数据应用是机器学习,比如利用基于图的机器学习应用实现淘宝推荐。为了计算某个用户对某个商品的兴趣度,阿里巴巴利用商品的重要属性比如标签等计算商品间的相似度,同时对用户的重要属性建模。也就是说,通过用户对相似商品的感兴趣程度预测用户对当前商品的兴趣度,从而实现商品推荐。这些信息无法单纯依赖某张表得到。比如,某用户喜欢夏季羽绒服,同时喜欢某品牌,单纯依赖表信息的商品推荐不会给该用户推荐相关品牌的冬季羽绒服,而连接了两方面信息的图结构则可能推荐该商品,提高了商品推荐的准确度。图结构信息还有利于解决冷启动及结果可解释性等难题。
第五类图数据应用是知识图谱,比如基于知识图谱实现在线推理,提供在线智能服务。左边的例子展示了双11期间淘宝的凑单应用,即为用户推荐凑单商品以帮助用户获得满减折扣。阿里巴巴利用商品相似性图,能够方便地计算商品A的所有相似商品,从而实现相似商品推荐。当然,相似商品往往具有相同功能,而已经购买了某商品的用户很可能不愿意重复购买类似商品。因此,阿里巴巴又引入了随机游走机制,通过在商品相似图中以一定概率随机游走来选择推荐商品,平衡商品的相似性和多样性。应用图结构构建知识图谱的另一个例子是天猫精灵。天猫精灵通过构建多种类型的知识图谱来回答用户提出的各种问题,比如娱乐图谱能够展示电影的导演、演员,以及他们的其他电影作品等信息。“李未央”是某电视剧的角色名,假设用户提问“李未央还演了什么电影”,天猫精灵将通过分词得到“李未央”,知识图谱算法允许从“李未央”出发探究相关演员,从而进一步探究相关电影,这是普通的问答系统无法做到的。相比谷歌、微软等公司基于互联网数据构建知识图谱,阿里巴巴利用自身结构化数据来源的高数据质量优点,能够构建出更优质的图谱以实现在线推理。
二、大数据系统趋势与挑战
早期,大数据技术采用IOE模式,依赖单点运行的Oracle机器等高成本硬件。2009年,MaxCompute使用更低成本的机器集群来解决相同规模的计算问题,提高软件的容灾能力。2012年,实时风控、大屏、视频分析等应用向大数据技术提出了更高的计算时延要求。如今,更丰富的数据使用场景需求使得机器学习与异构信息网络图技术比如关联分析、MaxGraph等得到了发展。不断演化的需求加速了大数据技术的发展。
关联分析背后的逻辑架构依赖于一个从一系列数据源构建得到的图模型(Graph model),数据科学家基于该图模型完成离线的数据挖掘任务,业务操作员基于该图模型实现在线推理、提供在线服务,此外,该图模型还根据系统事件实时更新。总的来说,关联分析需要满足多维度的需求。
下图展示了基于图结构的开源解决方案。第一幅图展示了图的遍历,用于查询图中各项内容。第二幅图展示了图算法,包括pageRank等。第三幅图展示了模式匹配,第四幅图展示了机器学习。图结构解决方案的开源化追求可扩展性,以处理大规模数据计算任务。
构建图应用要求组合多个系统的能力,比如图数据的存储、离线计算引擎以及在线计算服务器等,构建复杂度和运维难度都极高。
MaxGraph产品通过实时或离线方式构建关系数据并存储为图结构,从而利用统一的分布式“瞬时计算”引擎来支持辨别、计算、匹配与机器学习等功能。基于MaxGraph提供的功能,一些上层图应用以及智能应用包括关系网络分析等才得以实现。
三、图建模与存储
下图展示了一个图模型,由点和边构成,并且允许点和边都携带属性。
图建模时需要关注数据间的关联。以“电子邮件通信中的异常检测系统”为例,该系统要求在若干个相互发送e-mail的用户行为中检测风险。最直观的图建模方式是将用户建模成图的点,用户间相互发送的e-mail建模成图的边,但这样建模的问题在于图模型中没有体现e-mail这个实体,无法表达“用户自己给自己发送e-mail”等行为。
正确的图建模方式应是将e-mail建模成图的点,同时实现e-mail与该e-mail发送者、收件人间的关联。在表达“用户自己给自己发送e-mail”时,将e-mail建模成一点,该点关联的发送者和收件人都指向相同用户。好的建模方式能够在系统规模、问题复杂性提升的情况下依然很好地捕获所有关键信息,满足用户需求。
使用这样的建模方式来表达“对回复邮件的回复”行为时,“回复邮件”与“回复邮件的回复”都是e-mail,都应该被建模为图的点,“回复邮件”与相关的“回复邮件的回复”存在回复与被回复关系,应建模为边。判断图建模合理与否的关键在于判断图模型能否表达相关需求,比如,本示例中的图模型能否表达“热烈的邮件讨论”行为等。
阿里巴巴采用分布式图存储来存储图模型的相关数据。
四、图查询语言简介
寻找具有某特点的“点集合”或者“边集合”是图数据查询的常见应用。图查询语言“Gremlin”可用于遍历图,寻找相关“点集合”或“边集合”,并基于获得的集合进行“groupby”等操作来构造最终查询结果。
阿里巴巴优化了图查询语言,使得系统可以快速地实现复杂数据结构的查询。最新的竞品分析显示,“Gremlin”图查询语言具有数据加载快、可扩展与低延迟德等优点。
五、全图计算与分析-高层语言
除了图查询,全图计算与分析也是图应用的难点,阿里巴巴提供了类似SQL的抽象语言FLASH来降低全图计算的难度。
阿里巴巴的抽象语言FLASH引入了循环语句,具有比SQL更强大的表达能力,将FLASH应用于连通分支算法,仅需几行代码就可以实现该算法功能。
相比之下,使用C++语言实现连通分支算法所需要的代码量更大。
下图展示了目前已验证的FLASH抽象语言可表达的所有算法。
另外,阿里还使用Flink评估了FLASH语言的表达能力。左表第二列是使用Gelly语言实现相关算法使用的代码行数,第三列是使用FLASH语言实现相同算法所用的代码行数。总的来说,FLASH语言实现相同算法所需要的代码行数仅为Gelly语言的1/10甚至1/20,但两种实现语言带来的系统开销是几乎一致的。
六、场景示例
阿里云网络安全引入图结构以构建知识图谱,包括域名、主机IP、域名服务器等信息。引入图结构有利于在海量信息中及时发现网络中的隐藏模式,从而发现漏洞和威胁。相关实验显示,将海量数据预先构建成图再实时查询仅需500毫秒,相反,不预先将海量数据构建成图而采用SQL查询所需的时间高达80分钟,图结构能为查询带来数量级的性能提升,从而给业务带来质的变化。
图技术在美国同样引起了广泛关注。最新数据显示,76%的FORTUNE 100语言都采用了图技术,排名前25的金融企业中有20家都利用图技术呈现交易信息。
总的来说,图计算是大数据计算的有效工具,图数据能够提供更精准、更可靠的信息,以增强大数据分析能力,图计算将变得越来越重要。成功的图应用离不开建模、查询和系统优化等多个方面,大规模的动态图计算还存在许多问题尚未解决,未来阿里巴巴将致力于在这些方面做出贡献,为图应用开发者们带来福音。阿里巴巴发展图计算依赖于“横向”和“纵向”两个方面的合作,一方面,“横向”需要和阿里巴巴内部的硬件、网络等团队合作,以利用现有技术优化图计算的性能,从而给业务带来质的突破。另一方面,“纵向”需要和行业内领域专家紧密合作,利用图结构解决企业真实问题,使技术为业务赋能、创造更多价值。
欢迎加入MaxCompute开发者社区钉钉群,一起交流大数据技术。