实战教程
首发于实战教程
AI Talking:复杂网络在风控领域中的应用

AI Talking:复杂网络在风控领域中的应用

在金融领域的风控中一般有两种风险类型,一种是信用风险,一种是欺诈风险。信用风险指的是一个人信用有问题,评估的是他的偿还能力或者偿还意愿问题,但这个人并没有欺诈的意图。而欺诈风险是指这个人,他的主观目的是进行欺诈。以团伙欺诈的形式进行欺诈的,一般称之为黑产,比如平常所说的羊毛党、网贷诈骗。


网络的兴起

其实,风控有很多传统方法,比如银行的评分卡、一些规则类型的模型都是可以完成一些风险评估的。网络则提供另一种视角,传统的方法可能是从一个人或者一个设备这样单一的视角进行评估,扩展到网络的话,则是从社交以及各种关联事物的多维角度来评估。


近两年,复杂网络在风控中的应用很火,最近异军突起的知识图谱更是风生水起。为什么火呢?因为使用网络能够通过个体及其关联的设备或者人,找到更多的行为特征,通过获取到更高的数据维度,来综合反映这个人或者团体的信用风险。


一般来说,我们目前使用的网络有多种,比如最常见的是社交网络。它可以用来做推荐,也可以做信用评估,它的节点一般是人为主,边是他们之间的关系,像父母、朋友这样含有语义的关系。还有的网络构建则是基于事件的,比如薅羊毛,它的点可能是某个事件,比如注册事件、登录事件。


网络种类很多,针对不同的风控类型,选择合适的网络。但不管是什么网络,都离不开物以类聚,人以群分的思想。就是说好人和好人聚在一起,坏人和坏人聚在一起。当然,这种“聚”不仅仅是体现在网络结构上的,还要体现在网络特征上的区别。一个信用好的人,他的朋友,同事可能信用也还不错。一个坏的人,他的朋友信用可能要差一些。另外,比如中介这种类型,在一个网络中,每个中介之间可能相差较远,但是他们会呈现比较相近的网络特征。

我们也希望通过关联网络来发现一些异常。比如养卡套现的行为,通过一个人的注册、交易、个人信息等看上去很正常。可是通过关联网络来看,发现这个人与很多商户存在交易关系,而且他和各个商户之间的交易金额都非常平均。像这种在网络中看起来比较异常的行为,在风控中是要引起注意的。


网络特征


我们的风控模型一般有两种,一种是特征+机器学习,另一种是特征+规则的方式。网络会为我们展现节点的更多特征。那我们就来聊一聊,平时在复杂网络分析的过程中会从哪些角度去分析每个节点,然后提供了哪些复杂网络结构特征或者说图特征。


基本的三个方面:

1、节点度量,这个节点在网络中的重要程度或者它周围邻居的分布;

2、节点的相似度;

3、社团分割来看这个人所处的团伙的一些特征。


最常见的网络特征就是度,比如说你有几个朋友,直接关联的我们称为一度。和你通过中间人才能达到的,称为二度。还有比如入度(收到的)和出度(发出去的)。

度很重要,因为通过一阶关系圈、二阶关系圈可以很直观的反应一个人。比如可以了解他有几个朋友,父母是否离异,朋友圈的学历如何等等。其实一个节点的基本信息描述是有很多的。而复杂网络在风控中应用一个最基本的点就是通过不同的方式,根据业务需求去描述一个节点的基本信息以及它周围邻居的分布。


节点的重要性指标

节点的重要性指标是在我们做评价的时候,如何评估一个节点在网络中的重要性。比如说你构建了一个评估黑产的网络,然后在这个网络中比较活跃的人可能就是从事黑产的人。那么这时候你需要一些指标去评估什么样的人才算是活跃的人呢?


我们一般有以下几种角度去评价节点的重要性:

  1. 度中心性
  2. 介数中心性
  3. 接近中心性
  4. 特征向量


度中心性:比如是一个人,他的一阶关系非常多,也就是说他的朋友非常多,社交关系非常复杂;如果是一个设备,就是通话次数很多,通话频率很高。那么这些节点就会是我们重点关注的,很有可能存在风险。

介数中心性:介数中心性(betweenness centrality)一般是指最短路径介数中心性(shortest path BC)。简单地讲,它刻画了节点对网络中沿最短路径传输的网络流的控制力,很好地描述了网络中节点可能需要承载的流量。类似于中介性质,比如下图中的F节点。应用的话,一是识别一些中介,比如图中的一些节点是很多借款的担保人、引荐人的话,那么他很有可能就是一个中介。还有比如引流平台,为很多其他的平台提供一个流量的入口,那么它很有可能是一个引流平台。

接近中心性:接近中心性(closeness centrality)反映的是节点在网络中居于中心的程度。它的基本思想是如果一个节点能很容易地与所有其他节点进行互动,那么它就处在网络的中心位置,也就是说它到其他所有节点的距离要足够短。因此,接近中心性可以用最短距离来刻画。比如说平常大家都可能收到的那种小广告,那种广告平台就属于直接的流量中心,能够非常容易的给其他节点群发广告短信。还有类似于仓储中心,就是物流网的中心,离物流网络中的其他节点都比较近。

特征向量中心性:特征向量中心性(eigenvector centrality)是评价网络中节点重要性的一个重要指标。前面介绍的几种方法把周围的邻居节点视为同等重要,仅仅从邻居节点的数量上来考虑节点的重要性。而特征向量中心性同时兼顾了邻居节点的数量和质量对节点重要性的影响,认为一个节点的重要性不仅取决于该节点邻居的数量,而且取决于每个邻居节点的重要程度。这里我们主要讲一下Page Rank,Page Rank是谷歌提出来反应网页页面重要性的。在风控里面,其实也挺重要的。在你的网络里面,一些风险比较高的节点,你会发现他的Page Rank值也会比较高,因为它是一个比较综合的反映。一般情况下使用这个特征,效果都会比较好。

节点重要性指标能够帮助我们在构建网络的时候有所侧重,而不是盲目的;第二是可以让一些节点做为标杆节点(重要节点或者有标签的点),然后计算其他节点与标杆节点之间的相似度。


相似度判断

相似性也有三个方面:

1、路径的相似

2、邻居的相似

3、个性化的Page Rank


路径相似:主要谈一下比较好用的一点——最短路径。比如到中心节点的最短路径,直接刻画了你与中心节点的相似性。当然,还有一些其他的算法,可以看看极验的文章:《Graph Learning》| HIN-基于元路径的相似度

邻居相似:比如你和另外一个人,你们两个之间有好几个共同的好友,那么可以说你们之间是相似的。也就是说你们两个在信息的传播上面,由你到达他的可能性是比较大的。

个性化的Page Rank:一般,我们是在分过团之后来做的,我们想知道分团之后,这个网络中的一个节点对剩下节点的影响,尤其是已经拥有一些黑色标签的节点。这是一种比较综合性的相似。个性化的Page Rank的目标是要计算所有节点相对于节点u的相关度。节点u开始游走,每到一个节点都以1-d的概率停止游走并从u重新开始,或者以d的概率继续游走,从当前节点指向的节点中按照分布随机选择一个节点往下游走。很多算法的具体细节,就不在这里介绍了。


社团分割

有了上面的这些还不够,有时候一个节点的基本信息,或者他的一阶关系,二阶关系都十分的正常,他的链路我们可以扩展到三阶、四阶。


我们来看一个社团分割的例子,比如养卡套现。就单独看他的个人基本信息的时候,是很正常的。还有像那种洗钱的案例,他自己的交易链,二级、三级都是很正常的,根本发现不了什么毛病。但是如果把他扩展变成一个大的团伙后,就能够发现他们中间的这些交易是存在一些端倪的。

这个时候,我们一般会对网络做一个团伙的划分。划分团伙的算法有很多,比如基于模块的方法、基于标签传播的方法、基于密度的算法等等。今天我主要给大家介绍两种比较快,效果也还可以的方法。


第一种就是层次化团检测(Fast Unfolding)。网上有很多开源的包可以直接拿来用。这个算法速度很快,在大图上面使用效果也很好,关键是它还可以有层次化的。在做社团分割的时候,有一个比较困难的问题是怎么去评价我们的社团分的好不好。模块儿度的评价,只是体现一个社团分割的紧密度,并不代表团伙划分得好不好,符不符合业务要求。有时候,用模块度评价可能没有坏处,但有时候,单纯的模块度的话,可能会使得团伙分的非常大,一个团伙好几万个,几十万个点,最后分析的时候影响非常大。

而层次化的社团检测,是从底层构建的。刚开始是由一个节点作为一个单独的团伙,然后慢慢将周围的邻居节点纳入进来。如果在构建的过程中,你有一些自己的经验或者指标,可以借助Louvain划分的一些结果来帮助优化你的社团分割算法。


在做大图的时候,Louvain实现的效率是非常快的,不会受到性能上的影响。根据我自己的经验,一亿个节点或者十几亿个节点甚至几十亿个节点的话,这种算法都还可以。像Spark Louvain这些开源的算法,都可以很快实现的,可以用来迭代一个新的图。


还有一个更快一些的算法,标签传播算法。标签传播算法本质上是一个半监督式的机器学习算法。其基本思路是用已标记节点的标签信息去预测未标记节点的标签信息。标签数据就像是一个源头,可以对无标签数据进行标注,节点的相似度越大,标签越容易传播。在每一次迭代的过程中,节点会选择周围标签最多的那个点,由此我们可以进行社团分割。

团伙这一块我没有展开将,这确实也是目前我们实际操作中的难点。因为没有一个统一的标准,产品不同,业务不同,对于团伙的要求和定义就不一样。我想这一块还有很多值得我们去探索的,当然也非常欢迎大家能够一起探究出更加实用的东西。


Embedding

这一块我们讲一下embedding,因为这实在太火了。前面我们说的这些方法呢,不管是个体特征还是邻居分布,团伙特征,都是需要我们根据业务方向,去手工提取一些特征,去筛选特征。但是embedding呢,是希望能够一次性解决所有问题。具体来说,是希望通过深度学习来学到一个低维向量,而这个向量是能够反映这个网络特征和节点属性特征的一个综合性的值。embedding的种类有很多,比如我们说的DeepWalk、GCN等等。

这里我就举一个例子,叫node2vec。这种方式实现起来比较快速简单,网上也有开源的代码。


node2vec这种embedding的方式呢,是在DeepWalk上面加了一些策略。通过Random Walk产生序列,然后用W2V的方式得到节点的embedding。然后得到每一个节点的向量,反映一个一阶到n阶的综合性的相似度。

这种算法在我们实践中,有些图的效果很好,有些图又很一般。具体原因,可能还需要具体分析。就我们来看,这种比较新的方法跟传统方法比起来,有两个缺点:一是可控性不是很强,二是可解释性不是很好。而且他还要调比较多的参数,对这个网络的上下文或者语义信息要求很高,而调参本身也是很难的,有时候很难调出比较好的参数。


总结

在拿到一个图应用于风控领域的时候,需要特征和模型,今天我们的侧重点在特征。特征讲了节点特征以及团伙特征,通过这个特征分析可以反映节点的拓扑结构,在网络中的重要程度以及节点所处团伙的行为特征,以及团伙的紧密度特征等等。

发布于 2018-12-10

文章被以下专栏收录