2022云栖精选—小图撬动大图:千亿规模用户群体网络的子图挖掘与应用

简介: 摘要:本文整理自阿里巴巴数据中台数据资产平台的何兴盛(河竹),在云栖大会“图计算及其应用”分论坛的分享。本篇内容主要分为四个部分:1. 业务场景中的“大”图2. 基于子图挖掘的设备识别解决方案3. 离线子图采样系统Graph View4. 总结

lQLPJxbcF2cqNBvMiM0FeLCMz4ifcSGHeANpqgFLAEAA_1400_136.png

一、业务场景中的“大”图

 

立足于数据中台,我们每天都需要处理超大规模的数据,当我们落地图计算时也不例外。这里的“大”图有两层含义,一是图的数量特别多,举一个典型的例子,我们每天都要从近千亿的采集日志中提取百亿级别的图,然后在规定的时间内完成分析和计算。那么在这个数据规模下,一些比较通常概念下的指标计算也变得非常棘手。

 

另外一个是单图的规模特别大。以用户商品交互网络为例,因为网络中的实体类型特别多,用户的行为又特别丰富。对于这种类型的图,我们经常会遇到几十亿的节点上沉淀了上万亿关系的边。

 

那么针对这两类问题我们是怎么解决的呢?

 

image.png

 

马老师曾经说过,“small is powerful”。我们的思路也很类似,都是从子图出发。对于“图的数量多”的情况,我们就需要看一下它的基本组成成分,以及是否有显著的结构特征,然后我们再设计高并发的算法。

 

对于“图的规模大”的情况,就需要有一个良好的子图抽样系统,从一个大图中提取出我们需要的子图,然后再完成后面的分析和计算。

 

二、基于子图挖掘的设备识别解决方案

 

下面我将就“图的数量多”和“图的规模大”这两类问题的典型场景展开讲述。

 

设备标识符是移动互联网领域中非常基础,同样也非常重要的一个信息,它的本质是对一个物理设备的具体描述。然后我们才能通过设备识别服务,对用户做一些个性化推荐、用户口径统计以及广告转化中的归因分析等等。

 

但实际上因为种种原因,整个移动互联网上有多种解决方案在市场上并行。那就会导致我们在采集日志中会对同一个物理设备采集到多个设备识别符。

 

下面举个例子,在正常的一个采集日志中,我们通常会采集设备标识符和用户行为商品信息等等,这里我们只需要关注设备标识符。如果两个设备标识符出现在同一条日志中,我们就认为它产生了连边。如果一条采集日志中有多个设备标识符,我们就认为它是一个全连接的结构。

 

汇总一段时间的数据,其实就可以可视化出一个结果。就是我们希望把所有属于同一台物理设备的设备标识进行聚合,满足广告外投、用户画像等下游需求。

 

从下图中我们可以看到它包含了多个连通分量,那联通分量是有多少呢?大家可以想一想整个移动互联网领域的设备有多少,问题的规模就会有多少,它们是成正比的。

 

image.png

第一是设备网络显著子图挖掘:基于采集特性,设备网络世界中是否存在显著的子图模式? 大簇是否存在超家族特性?第二是超大规模联通分量识别:在降本增效的大背景下,如何稳定高效支撑千亿规模的联通分量识别?第三是大簇分解问题:针对一个设备大簇,如何对其进行切割,使得分割结果准确&稳定?

 

那么如何解决以上三个问题呢?其实它们有一个共性,就是需要子图的匹配能力。也就是在一个给定的大图里面找到与一个给定小图同构的子图。

 

以下图为例,假设有两个需要查询的小图,和两个待查询的大图。从图中我们可以看到,T1中包含一个Q1T1包含一个Q2。简单来说这个算法的能力就是在输出T1包含几个Q1Q2,然后我们会记录下它的个数和实例。

 

image.png

 

针对这种问题我们自研了的基于ODPS的子图模式匹配算法,我们采取了一种分解再合并的算法思路。

 

比如下图中的例子,上面是一个小图,下面是一个待查询的大图。我们首先会按照一定的模式把上方的小图分解成多个三元组,然后通过类似的方式,把下面的大图也分解成三元组。接着对小图进行合并,使它回归到原始的结构。

 

image.png

 

在小图的合并过程中我们发现,下面两个节点相同,且上面两个节点不同的进行了合并,合并后可以看到们它们回归到了原始的结构中。对于大图分解后的结构,我们按照这种条件进行合并,如果合并成功了,那就说明大图中也有一个相同的实例。

 

那么对于一些比较简单的结构,一次迭代可能就可以完成。对于一些稍微复杂的结构,通过两次迭代也几乎能够满足所有结构。

 

下面来说下显著模式挖掘与子图匹配算法。由于采集日志中一条数据最多采集的设备ID类型是有限的,因此需要考虑的子图规模具有上限。对于节点规模比较小的子图,我们可以穷举出它所有的结构。对于节点<=4motif,一般只保留p1-p8这八种结构。对于size 56 motif,仅考虑全连接结构。最终我们需要考虑的图结构也就是从p1-p10这十种结构。

 

image.png

 

下图是基于某个真实业务统计的结果,首先看下链式的结构。长度为2,节点个数为3的链式结构,占p1-p10所有结构的7.8%;长度为3,节点个数为4的链式结构占比骤降到了1.3%;长度为4,节点个数为5的链式结构占比几乎到了0。这就可以说明整个链式结构在设备网络中是很难出现的。

 

image.png

 

所以就进一步证明了,一个大簇的网络直径一旦超过5,它就一定是有问题的,我们要对其进行拆解。

 

接下来我们再来看一下全连接的结构。从图中我们可以看到p3-p6的全连接结构占比已经超过了60%,这就说明这个设备网络的连接其实是偏稠密的。

 

对于size56的全连接结构,虽然它的总体占比比较低,但是如果我们只考虑size 5motif,这种全连接的结构占比就高达98.4%。所以对于这种类型我们只需要考虑全连接结构,不需要再去穷举出其他size 5motif类型。

 

接下来介绍下该怎么去识别超大规模的图连通分量。这个问题的特点是,第一,整个网络中全连接的子图比较多,它会有非常多全连接的小簇。在大簇中它又包含了很多全连接的子图。

 

第二,小图占比比较大。小簇代表了一个比较正常的物理设备,在非孤立簇中小簇的占比为84%。也就是如果我们能把连通分辨先识别出来,那么整个设备识别问题,我们就已经解决84%了。第三,操作的时效性要求特别高。这一步操作是所有下游任务的基础,我们必须在保证的时间内完成计算。

 

那么我们的思路是什么呢?首先要对全连接子图这种比较稠密的结构进行化简,在不影响连通性的情况前提下把复杂的结构转变成简单的结构。

 

第二步,我们可以先把这些小簇识别出来。这样就不需要再让它进入下一步联通分量识别的任务,减轻下游的压力。第三步,我们会把一些大簇难以识别的问题交给一些成熟的图计算平台。

 

刚才第一步提到的化简,我们是采用了一种叫做Star Compression的算法。它的目的是在不改变连通性的前提下,对图中的边进行压缩,这是一个迭代式的算法。它的核心是把一个稠密的连接,通过几步迭代的方式,最终转变成星状的结构,所以叫做star compression。通常对于节点为5左右的小簇,经过两次迭代,可以保证收敛。稀疏子图的匹配要比稠密子图匹配更高效,方便利用GPS的能力。

 

image.png

 

先看一下第一行数据,可以想一下双十一期间整个淘宝的流量有多大,平常我们就可能要面临千亿级别的采集日志,在其基础上做连通分量的识别。在过往的时间内,调度高峰期计算资源紧张的情况下,其实没有现成的图计算引擎接口,可以hold住这么大的吞吐数据量。

 

所以我们必须要给下游的图计算引擎减轻压力,经过Compression图压缩,子图识别之后,可以发现其实已经过滤掉约87%的边了。剩下交给第三方图计算平台的压力就小了很多。

 

image.png

 

通过这种方法,大约有一百多亿的边进入下游的图计算引擎,从而保证联通分量识别的稳定性和可靠性。对于一些比较小的业务,通常通过一轮的迭代就可以达到比较好的结果。

 

这是设备识别,它是一个比较稠密的网络。其实我们还实现了在一些偏sparse的网络,比如说分享关系。两个用户分享了同样一个商品,我们就给他建立一条边, 也就是ab分享,bc分享,ac还有分享,对于这种稀疏的分享关系,只需要利用子图识别的能力,就可以得到很大数据量的下降。

 

接下来是设备大簇拆解问题。现实世界中这个情况总是非常复杂的,整个移动互联网领域也是这样,我们每天的流量中包含了用户各种复杂的行为,比如换机、恶意的流量、山寨机,甚至不是物理设备,是一些软件生成的流量。

 

这些行为就会产生非常多的噪声边,就可能把很多无关设备连接到了一起,形成大簇。这里我们就希望能找到一种可解释、稳定的方式对大簇进行拆解,得到背后真正的物理设备。

 

这是一个图例,假设这是一个规模还可以的大簇。我们将它拆解成若干个具体的物理设备,这些拆解结果就直接影响了你整个移动设备的口径统计,以及不同系统对接时转换的准确性。

 

image.png

 

那么设备大簇拆解的挑战又有有哪些呢?第一,设备大簇是非常多样的。即使节点数量相似,结构相似,但排列组合不同,大簇也可能存在一定的差异。

 

第二,设备大簇的规模非常庞大。以一个业务单日新增的大簇来看,如果把大簇定义为20以上,那么单日新增的大簇就会有约20万个,这就影响了百万个具体物理设备的聚合结果。如果拉长时间周期,就有可能直接影响了上亿的设备识别结果。

 

那么对于大簇要如何拆解呢?我们的思路是,大簇并不是无序随机产生的,而是多个超家族成员通过异常的连边产生的组合。那么这个问题就变成怎么识别哪些节点属于正常结构,哪些节点属于异常的连接边。

 

image.png

 

这就需要我们对整个网络进行角色定义,对网络中的节点进行特征提取。这是一个问题的一体两面,一个合适的定义,它影响着我们怎么给节点抽取特征,抽取特征的好坏就影响着分类的结果。最终通过多轮的迭代,我们把大簇拆解的问题转变成了一个对图中节点分类的问题。

 

回到大簇的问题,我们定义了三种角色。第一个叫做D-CoreClique,是指一个紧密连接的团体;被多个更大的团体所共享;团体内成员的边权重大于他们与团体外成员的边权。

 

第二个叫做Peripherals,是指与多个同类共享同一个CoreClique。第三个叫做D-Connector,在一个图中起桥梁作用;通常连接多个CoreClique。如果能够把这些角色识别出来,再基于一些策略的拆解就变得比较容易起来。

 

刚才在跑联通分量识别的时候,我们已经用了GPS子图匹配的能力。所以对于每个节点我们已经保留了该节点的结构信息,那么这个信息在这里其实就发挥了用处,我们可以把每个节点它自身及它邻居的结构信息汇聚起来去做分类任务。

 

image.png

 

三、离线子图采样系统Graph View

 

离线子图采样系统主要用于从一个大图中抽样出一个易分析的子图。在推荐领域图上法可以提效的核心原因,是通过扩散机制为下游人物汇聚更多的信息。在数据中台沉淀了如此多关系数据的情况下,当今降本增效的大环境下,我们第一步要做的就是存储统一和结构统一。

 

存储统一是指整个团队关系数据的使用仅此一份,从而避免下游因为各种需求的微小修改,而把数据备份多次,造成的巨大存储浪费。结构统一是指所有关系数据的存储范式必须是一致的,这样方便我们后续做一些模块接口的开发。

 

image.png

 

当我们做完结构统一和存储统一之后,其实我们背后就有了一张非常规范的异质信息网络。在平常的任务中,我们并不需要去总览这个大图的信息,我们只需要根据指定的路径找到一些我们感兴趣的小图就好了。

 

GraphView里,我们根据自己的业务特性,设计了三种模式。第一个是Path 模式,它可以从源节点出发,按照你指定的路径得到一个比较完整的图结构。第二个是Pair模式,它最终只输出头节点和尾节点的映射关系。第三个是End模式,只输出尾节点。

 

image.png

 

下面是个真实的案例,现在要给指定的人群做商品召回,召回逻辑就是先通过这个人群去找到他好友人群,然后我们看到这些好友人群买了什么商品,以及这些商品的相似商品是什么,这就是一个U2U2I2I的召回逻辑。在最新的GraphView版本上,我们测试了1万个用户,我们发现只需要约3.8分钟就可以得到最终的商品召回,其实也是对应了我们刚才介绍的End模式。

 

image.png

 

四、总结

 

今天跟大家介绍的主要是我们自建的一些图引擎。其实依托于阿里生态的一些比较成熟的计算平台,比如ODPSGraphScope。我们根据自己的业务特点,提出了一些比如说连通分量识别,子图匹配、子图抽取这样一些不含业务语义的计算引擎。这些计算引擎其实和下游的比如说一些GNN推荐是无缝衔接的。最终在下游结合一些业务特征,我们就可以做出一些比较有意思的数据资产。

image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1天前
|
存储 安全 算法
网络安全与信息安全:防范漏洞、应用加密技术与培养安全意识
【5月更文挑战第10天】在数字化时代,网络安全与信息安全已成为维护社会稳定、保障个人隐私和确保企业资产的关键。面对日益复杂的网络威胁,本文深入探讨了网络安全漏洞的成因与影响、加密技术的基本原理与应用,以及提升全民网络安全意识的必要性和方法。通过分析当前网络安全形势,提供了一系列针对性的技术解决方案和管理策略,旨在为读者构建一个全方位的网络安全防护体系。
|
2天前
|
安全
AC/DC电源模块在通信与网络设备中的应用的研究
AC/DC电源模块在通信与网络设备中的应用的研究
AC/DC电源模块在通信与网络设备中的应用的研究
|
2天前
BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究
BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究
BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究
|
3天前
|
监控 安全 算法
网络安全与信息安全:防范漏洞、应用加密技术及提升安全意识
【5月更文挑战第8天】 在数字化时代,网络安全与信息安全已成为我们不可忽视的问题。本文将深入探讨网络安全漏洞的产生原因及其危害,加密技术的种类和应用,以及提升个人和企业的安全意识的重要性。通过对这些方面的知识分享,旨在帮助读者更好地理解网络安全的重要性,提高防范意识,保护个人信息和数据安全。
|
4天前
【评分标准】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷 无线网络勘测设计
【评分标准】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷 无线网络勘测设计
【评分标准】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷 无线网络勘测设计
|
4天前
|
网络协议 安全 Linux
【题目】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷
【题目】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷
【题目】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷
|
5天前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言神经网络模型金融应用预测上证指数时间序列可视化
R语言神经网络模型金融应用预测上证指数时间序列可视化
|
6天前
|
存储 安全 网络安全
网络安全与信息安全:防范漏洞、应用加密技术与提升安全意识
【5月更文挑战第5天】 在数字化时代,数据成为了新的货币,而网络安全则是保护这些“货币”的金库。本文深入探讨了网络安全领域中的关键要素:网络漏洞、加密技术以及个人和组织的安全意识。通过对网络漏洞的识别与防护策略的分析,我们揭示了黑客攻击背后的机理及其防御手段。同时,文章详细阐述了加密技术的工作原理、种类以及它们如何成为维护信息安全不可或缺的工具。最后,我们讨论了安全意识的重要性,并提出了一系列提升个人和企业安全意识的策略。本文旨在为读者提供一套全面的网络安全知识框架,以应对不断增长的网络威胁。
24 6
|
7天前
|
机器学习/深度学习 人工智能 监控
【AI 场景】如何应用人工智能来增强企业网络的网络安全?
【5月更文挑战第4天】【AI 场景】如何应用人工智能来增强企业网络的网络安全?
|
7天前
|
机器学习/深度学习 人工智能 运维
智能化运维:AIOps在未来网络管理中的应用与挑战
【5月更文挑战第4天】随着人工智能和大数据技术的飞速发展,智能化运维(AIOps)正逐渐成为IT运维领域的革新力量。本文探讨了AIOps在现代网络管理中的关键作用,分析了其在故障预测、自动化处理、以及提升决策效率方面的潜力。同时,文章还针对AIOps实施过程中面临的技术挑战、数据隐私及安全性问题进行了深入讨论,并提出了相应的解决策略。通过实际案例分析,本文旨在为读者提供一个关于AIOps在网络管理领域应用的全面视角。