Press "Enter" to skip to content

如何防范用户共谋欺诈?Uber工程师利用关系图检测共谋

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

近年来,随着 Uber 在客户中越来越受欢迎以及规模的不断扩大,它也吸引了互联网金融犯罪分子的目光。共谋是一种典型的用户之间的合作欺诈行为,例如用户可以共谋,通过一个用户宣称信用卡被盗用,另外一个用户进行虚假旅行,让银行发起信用卡退款。在本文中,来自 Uber 的几位研究者应用了被称为关系图卷积网络(RGCN)的前沿深度图学习模型来发现这种共谋,他们希望反欺诈领域的其他研究者能有所借鉴,用之解决其他的问题。

 

选自eng.uber,作者:Xinyu Hu等,机器之心编译 ,编辑:力元、陈萍。

 

实际上,图学习方法已经广泛应用于欺诈检测和推荐任务。例如,Uber Eats 外卖服务部门已经开发了一种图学习技术,目的在于推荐最有可能吸引用户下单的食物。图学习已经成为提升 Uber Eats 上食物和餐厅推荐质量和相关性的有效方法之一。

 

检测共谋使用了类似的技术。如下面的用户图所示,红色节点代表欺诈用户,蓝色节点代表合法用户,用户通过业务信息彼此连接。从图中可以看出欺诈性用户通常处于连接和聚集的状态。在这里我们介绍了一个案例研究,展示了研究人员如何建立了一个关系图学习模型,来利用这个信息来发现共谋用户,并使用不同的连接类型来改善模型。

关系图学习

 

在本案例研究里,我们在小型数据样本上应用了 RGCN 模型,以预测用户是否在欺诈。在用户图中,通过信息连接的司机和乘客可以看作两类节点。每个用户可以被视为图中的一个节点,并通过嵌入向量表示。这个表示能够对用户及其邻居社区的属性进行编码,以用于机器学习任务,如节点分类和边预测。为了发现用户是否欺诈,我们不仅使用了用户节点自身的特征,还使用了几跳(hop)内邻居用户的特征。RGCN 是基于在图上运行的神经网络,专门为建模多关系图数据而开发。这种类型的图学习已经被验证可以显着地提升节点分类的效果。此外,我们发现,区分不同的连接类型会放大用于欺诈检测的信号。因此,连接的类型也被我们用于学习。

 

为了更好地理解我们是如何建模图用户数据并发现共谋,了解一些基础的 RGCN 知识是有帮助的。图卷积网络(GCN)已被证明在编码结构化邻域特征方面非常有效,其中,相同的权重被分配给连接到源节点的边。而 RGCN 会针对连接关系做变换,变换的方式取决于边的类型和方向。因此,为每个节点计算的内容会增加边类型的信息进来。

 

如下图所示,RGCN 模型的输入由节点特征和边类型组成。所有的节点特征先传递到 RGCN 层,然后通过聚合来自相连邻居的学习表示(被称为“消息”),将其转换为节点表示的向量。来自相连邻居的消息会根据边的类型做加权。具体而言,模型把相邻节点的消息进行加权和归一化求和,再传递到目标节点以学习一个 RGCN 层中的隐藏表示,然后将所有节点的隐藏表示传递到激活函数(如 ReLU)中完成非线性变换。RGCN 可以通过多层消息传递和图卷积来提取高阶节点表示。并最终通过将 softmax 层作为输出层和将交叉熵作为损失函数,来学习节点的评分。

相邻节点变换后的特征向量的值取决于边类型和方向。同时我们将自连接 (self-loop) 作为一种特殊的边类型添加到每个节点上,以便可以通过层 l 的相应表示计算层 l + 1 上的节点表示。第 l + 1 层的隐藏表示可以用下式计算:

其中,

是模型第 l 层中节点 i 的隐藏表示;

表示边类型为 r ϵ R 的节点 i 的邻居集合;W_r 为边类型 r 的权重;W_0 为自连接的权重;

是归一化常数。传入的消息被累积并通过逐元激活函数σ(·)计算;激活函数是 ReLU(·)= max(0,·)。

 

用于欺诈检测的 RGCN

 

Uber 有多种风险模型和多个检查点来发现欺诈用户。为了更好地让 RGCN 模型服务这些风险模型,一种想法是通过这个模型得出一个欺诈评分,并将其作为下游风险模型的输入特征。RGCN 模型会为每个用户给出一个欺诈评分,来表明用户存在欺诈的风险程度。

 

欺诈评分的学习流程如下图所示。通过最小化二元交叉熵损失值,模型学习用户图中每个节点的隐藏表示来预测用户是否欺诈。用户可以是司机,也可以是乘客,或者两者都是,所以会输出两个分数:一个为司机的得分,一个为乘客的得分。这两个分数作为两个特征提供给下游的风险模型。

模型使用两个输入源:节点(用户)特征和边类型。我们使用一个流行的图深度学习库,DGL(Deep Graph Library),来构建可放入内存(in-memory)的司机 – 乘客关系图。欺诈的标签是:用户是否在一个时间范围内退款。我们利用特征工程来进一步帮助模型学习。例如,司机 – 乘客图只有两种类型的节点:司机和乘客。每个节点类型可能具有不同的特征。为了解决这个问题,我们采用零填充的方法来保证输入的特征向量具有相同的维度;另外,我们定义了不同的边类型,并在模型训练中学习每种类型的不同权重。

 

为了评估 RGCN 模型的性能和欺诈评分的效用,我们使用历史数据对模型进行训练。该数据的跨度为 4 个月,直到特定的日期为止。然后,我们用分割日期后 6 周的数据测试了模型的表现。具体来说,我们为用户输出欺诈分数,并计算精确率、召回率和 AUC。

 

在实验中,我们通过在现有生产模型中添加这两个欺诈评分作为特征,发现精确率提高了 15%,而只是假阳性有小幅增加。如下图所示,两个欺诈得分在下游模型的 200 个特征中的重要性分别排在第 4 和第 39 位。

数据管道

 

数据获取

 

在之前的一篇博文「Food Discovery with Uber Eats」中,我们解释了如何利用离线图生态系统生成一个城市级别的用户 – 餐厅关系图。而在本案例中,我们主要的需求是构建一个巨大的图,而不是几个较小的城市级图。我们重用了许多组件,比如 Spark 上的 Cypher,以生成一个多关系用户图。数据提取框架将源 Hive 表转换为节点和关系表。节点表存储用户的特征,而关系表存储用户之间不同类型的边。

 

图分区

 

这个案例里的图的尺寸非常大,因此需要使用分布式的方式进行训练和预测。原始图被划分为几个相对较小的图,以便能放入工作节点机器的(worker machine)内存。我们只对最近使用过 Uber 平台的用户的 x 跳子图感兴趣。并为这些最近的「种子用户」随机分配一个分区号(0 到 n)。每个种子用户的 x 跳子图也被放到到相同的分区中。一个用户可能是多个分区的一部分,而不活跃的用户可能不在任何分区中。每个分区都被映射到一台训练或预测工作节点机器。

 

我们扩充了 Cypher 语言,添加了一个分区子句来创建图。下面的示例查询将自动生成由分区列分割的多个图。每个分区将包含种子用户和他们的单跳邻居(one-hop neighborhood)。

超级节点

 

图生成过程的一个巨大挑战是处理超级节点,超级节点是一个具有极高连接量的节点。我们分两个阶段对这些节点进行处理:

在创建关系表时,过滤具有高度连接的实体。例如,通过 1,000 个共享实体连接的两个用户将生成 10,00 个用户 – 用户关系。但是,我们只构建 1 条连接,而将连接数作为特性添加到节点上;
在图分区阶段,有一些用户在他们的子图中具有非常大的关系数量。这增加了分区大小的差异,有些分区变得非常大。因此我们根据阈值限制这些用户的每一跳的邻居数量。这些异常情况的用户就可以通过这些规则进行处理了。

训练以及批次预测

 

数据管道和训练管道如下图所示。数据管道的第一步是从 Apache Hive 表中提取数据,并以包含节点和边信息的 Parquet 文件导入 HDFS。每个节点和边都有时间戳进行版本控制。最新的节点和边构成的图将在给定日期的情况保留,并使用 Cypher 格式存储在 HDFS 中。在使用 Apache Spark 运行引擎中的 Cypher 查询语言送入模型之前,我们会先对图进行分区。图分区直接送入到 DGL 编写的训练和批次预测程序中。生成的评分会存储在 Hive 中,用于后续任务和离线分析。

数据管道(顶行)和训练管道(底行)用于学习欺诈评分,以提升后续欺诈检测的表现。

 

未来发展方向

 

图学习在学术界和工业界都受到了广泛的关注,它提供了一种令人信服的欺诈检测方法。虽然图学习在检测质量和相关性方面有了显着的改进,但是还需要进一步的研究来提高系统的可扩展性和实时性。我们也正在探索一种更有效的方式来存储更大的图,并进行分布式训练和实时预测。此外,由于司机 – 乘客图是密集连接的,为了提高信息传递的效率,我们将探索基于注意力的图模型,这些模型会利用掩码自注意力层,对邻居中的不同节点赋予不同的重要性。例如,GAT 模型和能进一步关联遥远邻居的 GAT 的扩展模型都和我们的场景相关。

 

原文链接: https://eng.uber.com/fraud-detection/传送门:DGL (Deep Graph Library),https://www.dgl.ai/

 

在此,感谢亚马逊云科技上海人工智能研究院资深数据科学家张建老师对此文章的修改建议。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注