陈振兴:京东图机器学习在智能反欺诈上的探索与实践
分享嘉宾:陈振兴博士 京东科技 算法工程师
编辑整理:李树桃 微博
出品平台:DataFunTalk
导读: 本文主题为怎样利用图机器学习,在智能反欺诈上做一些探索,主要内容包括:
- 业务背景介绍
- 反欺诈中常用的模型及图算法原理
- 在实际业务中如何应用这些图算法
- 总结和展望
01
业务背景介绍
什么是欺诈?
我国民法通则对欺诈的定义是:民事欺诈行为是指在设立、变更、终止民事权利和民事义务的过程中,故意告知对方虚假情况,或者故意隐瞒真实情况,诱使对方做出错误表示的行为。这里突出强调了,故意告知对方虚假信息,诱使对方做出错误的行为表示。
这里列举了在金融和电商场景中常见的几类欺诈风险,这些欺诈风险不但会给公司带来直接经济损失,还会造成难以估量的声誉损失。
C端不同场景主要面临的一些风险有:
- 在账号安全场景中,有机器注册和批量登录情况。
- 在营销场景中,有羊毛党和黄牛党。后者主要针对一些较为稀缺的商品进行抢购,抢购后,再通过其他渠道变现。
- 在信贷场景中,某些欺诈用户会恶意申请这些信贷产品并恶意逾期。
- 在交易场景,常见的是套现交易和虚假交易。对套现交易,例如,部分欺诈用户在线上商城用额度购买商品,再去线下卖掉商品变现,这类用户的逾期率比整体用户的逾期率要高很多。
- 在支付环节也会存在盗号风险。
与C端对应,B端有一些虚假交易、套现交易、赌博、洗钱等商户。在这些风险背后,经常有大规模的黑灰产业链,他们形成分工明确的上中下游:下游负责收集一些网络黑产资源,例如手机黑卡、代理IP;中游主要开发自动化脚本,利用下游提供的黑产资源,实施各种欺诈活动;上游主要负责把中游收集的“成果”通过某些渠道变现。
互联网平台侧主要通过三种方式应对这些欺诈:
- 黑白名单,例如将已经发现的欺诈用户、设备、手机号拉黑(加入黑名单),当他们再次出现时,直接拦截。这种方式非常简单,缺点是更新很慢,而且往往已经造成了一定损失后才会产生黑名单,所以它的成本非常高。
- 规则策略,提取欺诈用户的某些特征生成规则,用于识别这类欺诈用户。
- 机器学习模型,包括传统机器学习模型和深度学习模型,可以挖掘多维数据之间的隐藏关系。但是,其中的有监督学习需要大量标签,深度学习又有可解释性差的问题。
以上是反欺诈体系中三个不可或缺的重要组成部分。
02
反欺诈中常用的模型及图算法原理
1. 反欺诈模型体系
接下来,主要关注模型部分,向大家介绍一套反欺诈模型体系,包含:
① 异常检测和聚类为主的风险预警模型体系,主要通过时序异常检测或行为序列异常检测、行为聚类等模型,提前识别出一些新的风险模式。
② 以图和序列算法为主的风险识别模型体系,它的主要目的是在线上高精度识别一些已知风险。为什么以这两类算法为主呢?
- 图主要是在短的时间截面,或者说短的时间窗口上,通过关联关系发现和识别风险。
- 序列算法是从较长时间窗口内的行为序列上识别异常。
于是,短的时间截面和长的时间序列组合得到一个立体化的风险识别模型体系,能达到更高的覆盖范围。
③ 为了提升模型的可解释性,还专门探索了以规则学习、频繁项挖掘算法为主的模型,把模型的结果转化成更容易理解、更能直观看出、类似规则策略的形式。
2. 反欺诈建模痛点与图机器学习的优势
在反欺诈建模中,会面临哪些痛点呢?
- 标签难获取 。大部分标签需要凭借专家经验主动挖掘,很多风险如果没有主观挖掘到,就被遗漏了。此外,标签获取的成本很高,很多发现的正样本其实已经造成了实际经济损失。
- 孤立分析 。传统建模方法主要针对孤立的点样本挖掘相似的模式,并没有考虑这些样本之间的关联关系,而有关联关系的团伙欺诈是欺诈风险中很重要的部分。
- 类别不均衡 。在欺诈场景中,正负样本比例极不均衡,有些场景正负样本比在1‰以下,甚至更低。
- 大部分场景需要较强的 模型可解释性 。
图机器学习在应对这些痛点时有它自身的 优势 :
- 图机器学习支持无监督或半监督学习,在没有或只有少量标签时就能做模型训练。
- 图算法能综合利用节点的特征和关联关系。图上的节点往往出现了一定聚集性,而且这种出现聚集性的节点风险一般比整体水平风险高,在一定程度上改善了类别不均衡的问题。
- 图本身是一种可视化形式,相较于其他算法,有天然的可解释性优势。
3. 反欺诈中的常见图算法
接下来介绍反欺诈中常用的四类图算法的基本原理。
① 社区发现算法,主要基于图的拓扑结构,利用无监督学习挖掘一些关联紧密的团伙。
② 图表示学习算法,利用无监督或自监督学习的方式学习节点表示,再结合下游的分类或聚类任务,识别欺诈用户。
③ 图神经网络,综合利用节点的特征和拓扑结构,根据少量标签,利用半监督学习识别欺诈用户。
④ 概率图,通过概率图模型生成行为序列的生成概率,再根据生成概率找出异常行为模式。
下面具体介绍这四类算法。
① 社区发现-标签传播算法(LPA)
最经典的社区发现算法是标签传播,它简单有效,支持无监督、半监督学习。其输入为连接两个节点的边(边可以带有表示两个节点相似度的权重)和标签。
算法主要包括两个步骤,一是发送消息,每个节点标签可以按照相似度传播给它的邻居节点,二是接收消息,每个节点可以根据其相邻节点的标签来更新自己的标签,节点相似度越大,对当前节点的影响越大。算法会反复执行这两步,直到达到设定迭代次数或整个图收敛。迭代结束时,相似节点的概率分区趋于相似,可以划分到一类中。最终算法会为图中的每个节点生成一个标签。
对于无监督学习,每个节点在初始化时会初始化一个唯一标签,在半监督学习中,节点标签会初始化为其真实标签。
② 社区发现-InfoMap
社区发现算法InfoMap,将此问题归结为信息论里的最短编码问题——如果在一个图上随机游走,如何用最短的编码描述所走的路径?
一种方案是用Huffman编码,对高频出现的节点,采用短编码,对低频出现的节点,采用长编码。
InfoMap算法是采用两层结构的编码方式,即不同社群的编码不同,每个社群有一个唯一编码,且同一社群中每个节点的编码不同,但不同社群节点的编码可以复用。
于是,它通过优化最短编码长度,给每个节点一个社群编码。
③ 图表示学习-DeepWalk
社群发现算法只利用了图的结构信息,并没有将这种结构信息显式表达,而图表示学习就可以把这种图结构信息量化表达出来。NLP中一种经典的词嵌入表示学习方法是Word2Vec。DeepWalk的思想与Word2Vec类似,类似构建文本序列,它是在图里通过随机游走生成节点序列,然后通过Word2Vec中的方法(主要有Skip-Gram和CBOW),生成每个节点的向量表示。
④ 图表示学习-Metapath2Vec
DeepWalk处理的是同构图,即图里的节点类型和边的类型只有一种,而Metapath2Vec可以处理有多种节点或边类型的异构图。相较于DeepWalk,Metapath2Vec使用了预先设定的按不同节点类型拼接成的元路径,基于这种元路径,进行随机游走来构建每个顶点的异构邻域,再用Skip-Gram完成顶点的嵌入。
⑤ 图表示学习-DGI
上文提到的两种图表示学习方法,更侧重将图的结构信息反映到节点的向量表示中,并没有反映节点的特征。而DGI可以将节点特征融入到节点表示中。该模型的输入是图的节点特征矩阵X和图的邻接矩阵A。它首先通过某种随机变换对(X,A)构造对应的负例,然后通过同一个编码器得到(X,A)的隐表示H和的隐表示,再定义一个函数R,得到整个图的隐表示,最后通过优化基于互信息的目标函数来学习整个模型的参数。在目标函数里,主要为了区分原始的隐表示和负例隐表示相对于整个图隐表示的区分能力。
⑥ 图表示学习-GCN
提到图形网络,最经典的是GCN,它将卷积的概念引入图。离散卷积的本质就是加权求和,CNN中的卷积是用共享参数的kerel将中心像素节点与其它相邻像素点做加权求和构成feature map。类似的,GCN其实是将中心节点与其邻居节点的表示进行加权求和:
如果把以上式子展开,就能发现l+1层的隐表示其实是对 I 层隐表示和其邻居节点隐表示的加权求和。
⑦ 图表示学习-RGCN
GCN处理的也是只包含一种边类型的同构图,但实际业务中经常面临包含多种关系类型的异构图。RGCN一定程度上能解决这个问题,它是在GCN的基础上,再在不同的关系类型上做一次加权求和。
⑧ 概率图-HMM
概率图形式上是一种图结构的表示形式,也有节点和边,但是不同于前几种算法,该算法中的节点,表示一个随机变量,边表示随机变量之间的关系。这里主要介绍隐马尔科夫模型,它有四个组成部分:
- 观测序列,即实际可以观测到的状态序列;
- 隐状态,观测序列是由隐状态支配的,即观测序列背后有一个隐状态序列;
- 隐状态之间有转移概率;
- 隐状态到观测状态之间也有转移概率。
它们构成了概率图的主要组成部分,通过学习可以学习到不同的隐状态和它们之间的转移概率,以及隐状态到观测状态之间的转移概率。
这样,如果有一个观测序列,就可以基于学习到的模型给出当前观测序列的生成概率。
03
实际业务应用
1. 社区发现算法在营销场景中的应用
由于参与单次营销活动获利有限(例如,参加一次营销活动可能获利只有几毛钱或者几块钱),因此黑产为了获取规模利益,往往操纵批量账号来薅羊毛。此时,营销场景中就极易出现团伙攻击型风险。而参与营销活动需要设备、手机号、IP等介质,同时线上通常有基于单一介质的聚集性策略,这些策略已经构成了防御团伙攻击的第一道防线。但传统的聚集性策略很容易被黑产绕过,且难以利用隐式关联关系。通过图这一工具,构建以用户为节点,用户之间的介质以及其它隐式关联为关系的关联网络,再通过社区发现算法去挖掘其中关联紧密的团伙。
这个方案面临如下问题:
① 图中涉及用户和多种介质节点类型,以及其他隐式关联多种边类型,但是社区发现算法只能处理同构图,那么如何把异构图转化为同构图呢?我们做了如下处理:只保留用户节点,两个用户节点之间存在任意一种关联关系,都会去建立边。
② 如何确定不同关联关系各自的权重?这里首先把它们转换为边的有监督学习问题,即任意一条边上的两个节点,若同时出现风险,就认为这条边有风险。以这条边出现的关系类型为特征,以边上的两个用户是否有风险为标签,训练一个线性LR模型来确定每种关系的权重。
③ 如何提升模型的可解释性?通过规则学习和频繁项挖掘算法,将模型的结果转化为策略形式。例如,图中是通过模型发现的团伙,在验证其风险时,发现其订单上表现出相似的模式,且收货地址均为虚假地址,小区名字都是随意写的。利用频繁项挖掘算法,给出了这群人共有的一些属性,例如他们有使用相同设备这一特征,并利用规则学习自动总结出一些策略,来识别这一团伙。
2. 利用图表示学习在线下交易场景识别套现交易
在线下交易场景中,面临的问题主要是大部分线下欺诈用户在线上不活跃,于是能获取的数据维度非常少,由此给套现用户的识别带来很大挑战。其次,无论用户还是商户套现,其交易行为均表现出一定相似性。例如,用户不同时间在同一个商户交易。可用的解决方案是构建以用户、商户为节点、以用户与商户之间交易为关系的二部图,通过不同的元路径采样生成用户和商户的节点表示,此时相似节点表征相似的交易关系,即相似的交易行为。再通过为节点表示聚类以识别出套现团伙。
这个方案有如下问题:
① 如何衡量用户/商户交易行为的相似性?
构建用户-商户-用户、商户-用户-商户路径随机游走采样,再使用Skip-Gram生成节点表示,此时交易行为的相似性就转化为节点表示的相似性。
② 如何衡量同一商户不同时间在同一商户下交易的相似性?
拼接商户与交易日期作为唯一节点标识,即,将不同交易日期的同一商户视为不同的节点。
③ 如何建立边?
如果用户在商户下交易,就在用户与商户之间建立一条边,其交易金额作为边的权重。
3. 概率图在营销场景中的应用
现今众包式的团伙欺诈越来越普遍,组织者通过论坛、社交群(微信群/QQ群)分享攻略指导用户进行欺诈。此场景中用户使用的介质是分散的,仅依靠设备、IP聚集很难识别出他们,这就给通过介质关联构建的图模型带来挑战。但是这些用户的行为会表现出一定的相似性, 可以通过行为聚类的方式把它们识别出来。但仅依靠行为聚类,极易发生误识别/误杀。例如在大促活动中,很多正常用户也会在短时间内会表现出行为聚集。可以将行为聚类与概率图模型相结合进行风险识别,首先通过点击流序列,生成用户的行为表示,其中用到了一些传统NLP算法(例如TFIDF)以及对比学习算法;接着基于行为表示做聚类,把行为模式有聚集的用户找出来。如何确认这些行为模式是否有风险?通过正常用户的点击流序列训练一个HMM模型,给出每个行为序列的生成概率。
如果某个行为模式出现了一定聚集,但是其生成概率又很小,那么就认为这种行为模式很可能有风险。
04
总结与展望
图机器学习既支持无监督学习也支持半监督学习,可以综合利用节点特征和关联网络信息,在解决没有标签或者有少量标签的团伙欺诈问题中发挥重要作用,是智能反欺诈模型体系中不可或缺的一部分。
然而,随着用户隐私权限的收紧和黑产水平的不断提升,基于传统介质显示关联的图模型作用将会减弱,更多的隐式关联关系亟待挖掘。
此外,反欺诈还有实时对抗的需求,传统的静态图限制了图的应用效果,如何将时空演化信息融入到图,提升图的这种实时对抗能力,也是需要解决的一个问题。可解释性也是风控场景模型在应用过程中绕不开的问题,能否通过因果图来进一步提升模型的可解释性?
总之,反欺诈是一个动态博弈的过程,黑灰产的作弊手法也多变,他们的技术水平在不断提升,如何提升自动化对抗水平,是需要长期研究的问题。
05
问答环节
Q:概率图除了用时序类数据外,还能用其它数据来进行识别欺诈吗?
A:目前主要还是用序列型的数据。
Q:将图模型转化为策略的方法是人工进行专家归纳吗?
A:不是,是采用规则学习的方式。有一些规则学习算法,比如最简单的决策树算法,决策树上每一条路径组合后是一条策略,把模型识别的结果作为风险标签。用特征与风险标签训练决策树,用决策树上的一条路径来描述识别出的团伙风险特征,这就是策略。
Q:请问时间信息考虑到图中时间是到什么级别,比如是日、小时、秒?
A:现在是日级别的。
Q:如何定义一个账号或者行为是否是欺诈?
A:有一些欺诈用户的特征比较明显,例如上文给出的用户填了虚假地址。还有一些欺诈用户的特征相对不明显。这时,需要咨询业务同事,从业务的角度定义是否为欺诈用户。
Q:异构图转化为同构图时,异构图中不同类型的边是如何处理的?
A:若有些用户通过IP与其他用户关联,有些用户通过手机号与其他用户关联,即,不管用户之间通过什么介质产生关联,都会在两个用户之间连一条边。这样,原本含多种节点类型的图,就转化为了只含有用户节点的图。这时候又出现一个问题——边的类型没有区分,不清楚两个用户是通过IP还是手机号关联的,或者既通过IP又通过手机号关联。这时会训练一个有监督模型,给每种关联类型分配不同的权重,再把用户之间所有边的权重做累计求和,得到总权重。这样异构图就转换为只有含有一种用户节点和一种权重边的同构图。
Q:行为点击流是如何构图的?
A:把用户的点击流序列按时间排序,将其每个动作视为一个节点,然后按时间顺序连接下一个节点。
Q:异构图转换同构图是在线实时构图过程中进行的,还是离线完成的?
A:离线。
Q:是否有高校合作?如果有是什么形式?
A:现在没有,非常欢迎对这一块有兴趣的高校与我们合作。
Q:边的权重是如何分配的?会参考业务经验吗?比如说模型预测分配权重这一方面可以展开说一下吗?
A:在这方面也经过了一些探索。最初通过人为拍权重。比如两个用户通过设备或者IP关联,他们关联的紧密程度相对更强,就应该给设备关联的用户之间的边,更高的权重,这种方式从业务解释上说更合理些,但是它不一定是最优的。
之后我们把它转换为一个有监督学习问题去学习边的权重。比如在营销场景案例当中,存在多种类型的关联关系。假设图中有10种关系,会构建一个10维向量来对应这10种关系。如果两个用户在某一维关系上出现连接就记为1,没有连接记为0,这样就构建了一个10维的特征。怎么制作标签呢?如果这条边连接的两个用户同时存在风险,记为1,否则记为0。后期再通过训练一个逻辑回归模型,便可以得到每一维特征上的权重,这样就学到了每种关系的权重。最后把逻辑回归模型得到的结果作为最终同构图边的权重。由于两个用户之间可能存在多种关联关系,既有IP关联,也有设备关联,如果只将各种关系的权重累加求和,最终总权重相当于没有归一化。我们会把这三种维度对应的特征记为1,其它维度的特征记为0,然后带到训练好的逻辑回归模型中,得到总的关联权重。
分享嘉宾: