本文由索信达控股旗下的金融人工智能实验室团队,微信公众号(datamargin)将不定期推送原创AI科学文章。我们的作品都是由实战经验丰富的AI科学技术人员或资深顾问精心准备,志在分享结合实际业务的理论应用和心得体会。
本文作者: 董弋嵩 / Josie
在银行的风控领域中,研究对反欺诈的研究一直是经久不衰。Brett King在《银行4.0》一书中提到,目前全球每年只有约3%的欺诈案例被识别。传统的经验规则筛选无法带来更多的提升空间,在此情境下,索信达AI创新中心尝试利用人工智能模型来找到更多欺诈样本,并提出新的思路来解决问题。
目录
1. 银行内部欺诈问题综述
1.1 问题背景
1.2 内部欺诈的特点
1.3 监管难点
2. 以某银行飞单问题为例的技术应用新思路
2.1 过往案例分析
2.2 特征工程
2.3 无监督模型异常检测
2.4 无监督异常检测的实施
2.5 无监督-Louvain算法进行社区检测
2.6 半监督算法-图卷积神经网络
3. 结论与不足之处总结
3.1 结论
3.2 不足之处
1. 银行内部欺诈问题综述
1.1 问题背景
欺诈问题一直是金融机构面临的最严重风险问题之一,以威胁源作为分类标准,我们可以大致将欺诈问题分为内部欺诈与外部欺诈。近年来,随着商业银行规模效益的快速增长,内部欺诈问题的严重性呈反弹趋势。根据国外风险公司Watermark Risk Management的研究,全球企业遭受的欺诈问题中,来自于内部的欺诈问题占比超过一半。若将目光聚焦至银行业,虽然目前笔者仍没有找到一份专门统计内部欺诈问题占全部风险问题严重性的研究报告,但是我们依然可以从一些侧面数据,感知到内部欺诈问题在银行风险中的重要性。放眼全球银行业,根据美国国土安全局科学技术部以及CERT内部威胁研究中心共同发布的报告,自2005年至2017年,诸多风险问题造成的损失中,内部欺诈问题是最为严重的,着眼我国银行业,根据2017年银联发布的《中国信贷风险专题分析报告》,银行内部欺诈事件中,涉及千万元资金的案件数量占总案发事件的55%。可见,在银行业风险控制的诸多问题场景中,内部反欺诈策略是不可或缺也极具研究价值的一块重要内容。
1.2 内部欺诈的特点
内部欺诈问题与外部欺诈有极大的不同,根据卡耐基梅隆大学的《金融服务内部欺诈》(Insider Fraud in Financial Services)以及对国内银行内部欺诈研究的相关论文,我们可以将内部欺诈问题总结出如下几个特点:
1.作案手段多变
由于风险源的不同,内部欺诈中的手段一般都是来自于内部员工或者对业务了解密切的前员工。总结起来,银行业内部欺诈手段主要包括:
利用职位便利,或者与其他内部员工勾结,盗取挪用银行资金
内部员工与外部人员勾结,通过伪造票据等方式进行诈骗
窃取银行公章、伪造文件等方式,骗取银行资金
理财人员以销售理财产品为名,非法集资,另作他用(如飞单)
2.交易金额小额且持久
根据卡耐基梅隆大学的研究,周期较短的欺诈行为通常更容易被检测出来,因为欺诈者行为若有突然且短暂的变化,更容易被检测到。那些难以被发掘,且对银行造成巨额的内部欺诈问题,周期通常都是长久的,小额并且持久的欺诈策略使得行为无论在数据体现还是监管者眼中都难以侦查出异常。这份报告对132起严重内部欺诈事件进行了研究,发现持续时长在32个月以下案件损失金额平均为382750美元,32个月以上的损失金额平均为479000美元。
3. 欺诈技术手段低
内部欺诈的实施者通常并不掌握任何的技术手段,他们可以通过职务轻易的发现银行内部体系的漏洞。全球内部欺诈案件中,71%的内部欺诈者是直接通过与技术手段无关的职务权限进行欺诈的,81%的案件是与技术手段完全无关的。
4. 内部欺诈员工职级较高
研究表明,内部欺诈者主要来源于两类职级群体,第一类是以支行行长占主体的高级职位群体,在内部欺诈案件中占比51%,第二类占比49%的,是以放贷经理、理财经理为主题的初级职位,通常与受托人身份挂钩。
1.3 监管难点
通过上一小节内部欺诈的手段以及特点的总结和分析,我们可以发现,很多内部欺诈手段,如提到的窃取公章、伪造文件等,只能通过人为监督手段来规避,但同时也有一些场景,如小额且持久的利用职务便利挪用资金,或飞单问题,是通过数据驱动的监控方法能更好甄别的。
银行传统的监管方式也有基于数据驱动的方法,一般是基于规则的方法,但是这些传统方法存在以下4个不足,简单来说体现在:
基于规则的筛选方式通常造成较高的假报警率
由于正样本量(既确定为欺诈的样本)数量往往非常少,有监督模型难以在这里使用
欺诈行为多样,在数据上难以对特征进行总结,这个问题同样也导致很多有监督方法难以使用
传统的方法只关注了用户数据之间的距离,而忽视了关系圈数据中可以发掘到的图形拓扑关系
本文旨在引入AI技术的新思路,来针对性对在数据上有所体现的内部欺诈场景提供解决思路,并有效解决这里提到的四个传统方法遇到的问题,在后文中,我们将借助在某银行实施过的“理财经理飞单问题监管”方案,来说明更细节的解决方法。
2. 以某银行飞单问题为例的技术应用新思路
上一节中我们从宏观上介绍了当前内部欺诈问题在银行业中的严重性,以及这一问题的特点和难点,这一节中,我们会以在某银行实施过的理财经理飞单问题监测项目,较为完整的描述解决思路。
2.1 过往案例分析
在正式进入AI模型解决问题的步骤前,我们需要先获取可用的数据,银行内部的数据系统存有关于理财经理的诸多维度数据,我们首先通过对既往违规案例进行专题分析,发现该银行过往的违规行为,在数据特征上,大致可以分为两类,一种是交易行为维度上的体现,如一段时间内,在每天的固定时间段进行转账等行为;第二种,是通过人际关系网实施的欺诈,在数据上就体现在了数据之间的关系结构的异常。
对于过往案例的分析给了我们两种解决思路的启发:对于第一种,我们给出用多种无监督模型侦测异常的解决思路;对于第二种,我们给出构建图结构的数据,用社团检测和半监督算法,如Louvain和GCN的解决思路。
任何单一的方法都不能包括在数据层面上通过别的数据结构角度体现出的信息,这也就是在此方案中,基于交易数据和基于关系圈数据分别采用不同算法来进行检测,从而达到双管齐下的重要性。
2.2 特征工程
交易行为数据
通过对既往案例的专题分析,我们发现理财经理在职期间转账行为在某一时间段内的频率、金额、以及每日交易时间都对其是否违规的可疑程度有很大影响,所以针对交易行为数据,我们大致做了如下特征工程:
以三个月为一周期,做滑动窗口,衍生出理财经理各类交易行为如转账金额平均值、标准差、转账频率,设备登陆次数、频率等特征。
对每日的交易时间段进行切分,将数据集切分为日间交易数据和夜间交易数据,其中夜间交易数据为22:00~6:00,再以每两小时为一段,将夜间交易数据切分为4组数据集。
关系圈数据
关系圈数据是为复杂网络量身定制的,下表是常见的关系圈数据样式,每条样本中有两个用户,如果存在某一种关系(交易关系或者是亲属关系等),就可以认为这两个用户之间有一条边。以交易关系为标准时,我们发现理财经理小何和客户毛丽丽之间有边,而理财经理小王和理财经理小李之间没有连接。以亲属关系为标准时,则是小王和小李之间有边,小何和毛丽丽之间没有边。
在该银行案例中,由于我们想要检测的是理财经理是否具有欺诈行为,所以样本中两个用户的组合可以是理财经理和理财经理,或者是理财经理和客户。对于客户和客户之间的关系,则不再我们的考虑范围之中。关于特征类型,则主要可以分为两大类:
这些单个特征的取值范围都是大于等于0的,因此可以作为边的权重。具体来说,当单个特征取值为0时,表示两个用户之间没有连接,例如理财经理小王和小李之间的每月交易频率为0,在构建交易网络时,他们之间是没有边的。当特征的值大于0时,表示两个用户之间有边,并且边的权重是该特征的值。当然也可以进行特征衍生,给不同的特征不同的权重,形成一个新的特征,作为构建边的标准。
每次构建网络时,只能用一个特征。所以,基于不同性质的特征,我们对数据集,分别构建对应不同边的网络。然后从网络中可以提取不同的特征信息来进行社团检测或者半监督预测。
下面的具体的建模流程:
数据清洗和整合:对缺失值进行处理(银行要求是0),将不同来源的关系数据表整合在一起。同时基于现有的特征,进行特征衍生,衍生出具有代表意义的特征。以主体之间的亲密程度为例,定义一个新的特征:亲密度。该特征给不同的关系等级赋予不同的值,并且有大小之分。
构建复杂网络:以关系数据中的两个用户作为顶点,分别以交易金额,交易频率,亲密度作为边的权重,构建出3个复杂网络。
从复杂网络中提取特征:在每个网络里,计算每个顶点的度,中心性等指标。以顶点的度为例,该特征是在网络构建好之后提取的,代表每个理财经理与多少个其他用户相连接。一般来说,理财经理的度越大,代表理财经理的行为越活跃。对所有理财经理都计算出度,根据经验分布可以找到大于99%分位数的理财经理名单,以供参考。
其一是交易特征,包括交易金额,交易频率,例如上述的每月交易频率。其二是关系特征,包括是否是亲属关系,是否互相有电话,是否为同事朋友等,以及是否在同一设备上登录过等。
在接下来的篇幅中,2.3小节与2.4小节介绍的无监督方法是基于交易行为数据实施,2.5小节中提到的Louvain算法与2.6小节提到的GCN算法是基于关系圈数据实施,后文我们将不再重复提到这一前提。
2.3 无监督模型异常检测
在章节1.3中我们提到了内部欺诈问题给数据驱动的模型方案带来的挑战,在该银行的项目中,在观测期内,在职的总共有约6500名理财经理,其中有违规记录的样本只有不到20名,相当于这一数据的正负样本比例接近325:1,样本不均衡的问题及其严重。
不仅如此,通过对这不到20个违规案例的专题分析发现,即使我们发现这些案例基本都与交易行为或者关系网有关系,但是具体细节有很大不同,比如转账时间点、频率、亲密度等等。这些问题都引导了我们去选择用无监督模型做异常值检测的思路。
然而,这里就出现了另外一个问题:异常值的种类。简单来说,也就是即使我们知道违规样本与正常样本在数据上有所不同,然而不同的异常种类决定了不同模型的有效性。异常点大概可以分为三类:
1. 全局异常点(global outlier):处在整体数据分布之外的数据点。比如当一组描述人类身高与体重的数据集中,包含一只蓝鲸的身高与体重,那蓝鲸的这个样本就是很明显的全局异常点。
2. 情景异常点(contextual outlier):从某些维度上的值的视角来看属于异常。比如我们有一组记录地理位置与昼夜温差的数据集,当地理位置为新疆昼夜温差为30摄氏度时,这是一个正常的数据,可若地理位置是北京,昼夜温差达到30摄氏度,这就很明显是一个异常值。
3. 集体异常点(collective outlier): 某一小部分数据的分布相同,但不同于大部分其他数据的分布。比如植物学家记录收集的10000个某植物科的特征,包含花蕊厚度和叶片宽度,通过统计发现,在10000个样本中,有50个样本的花蕊厚度与叶片宽度的联合分布,与其他9950个样本都明显不同,且这50个样本的分布却相同,这位植物学家很可能发现了这门植物科下的一个新物种,在数据中,我们就将其称为集体异常点。
不同的异常值情况决定了不同无监督异常算法所能发挥的效果,然而,若数据维度不超过2,我们可以很直观的通过可视化来找到数据点异常的种类。可是受制于人思维能力的局限,我们无法可视化高维的数据。我们的解决方法是,选用三种分别适合于这三种异常情况的无监督算法,以结果为导向来选取最佳模型。
孤立森林(I-Forest)
该算法的假设,是认为异常值“量少且与其他数据存在明显不同”,非常符合第一类异常点,既全局异常点的情况。算法的实现与随机森林有一定的相似之处,每一颗树都做二分类,在起始根节点都随机选取一个数据特征,对部分数据进行划分,接下来每一次利用某种损失函数(如交叉熵)继续做二分类;综合所有树模型,越早被区分出的样本点,也就是综合树路径越短的样本点,就越可能是异常值。
x0为异常点,xi为非异常点
区分出x0的树模型平均路径长度明显小于xi
虽然该算法的发明者在其论文中提到其在高维数据上也有较好的表现,但是从实践中来看,低维度数据表现要好于高维度数据。同时此算法也适用于小样本数据。
基于密度的空间聚类算法(DBSCAN)
这一算法针对的是上述提到情景异常点。此算法正如其名,是基于密度的算法,此算法聚焦于设定好半径参数值后的超球体,能否涵盖到以中心点作为辐射核心的其他样本点,一组数据中可以有多个不同的中心点,在辐射边缘的点被称为边界点,而无法被任一中心点辐射范围所涵盖的点,被称作噪音点,也就是我们要找的异常点。
在下图示例中,A为中心点,B、C为边界点,N为噪音点。
高斯混合分布(GMM)
高斯混合分布针对的是上述第三类“集体异常点”。该算法假设数据集中的样本来自于多个不同的多维高斯分布,并通过优化算法(如EM算法)找到每个数据所属的分布,达到聚类的效果。所以严格意义上来说,高斯混合分布模型并不是专门用于异常检测的,其聚类结果中,样本量较小的分布能否被称之为异常,要依照业务情景来定义。若是做用户画像,则小众的用户不能被称之为异常,但如果像之前提到的植物学家的例子,就可以称之为异常。
目前我们正在介绍的飞单问题中,和已确定的违规样本被划分至同一分布的样本点,我们认定其为潜在违规样本,或称其为“异常点”。
我们来对采用的三种算法进行简单的总结
2.4 无监督方法的实施
正如之前提到的,因为我们无法通过传统的数据分析方式确定数据集中的违规样本,也就是所谓的“异常”样本到底属于哪一种具体的异常情况,因此我们分别采用三种不同的算法来进行识别。三种算法在机器学习的经典库sklearn中都有可以直接实现的api,三种算法在具体实施时需要注意如下几点:
1、孤立森林:本身孤立森林甄别的异常取决于人为事先设定的一个比例p,我们上一节提到了最短区分路径,当把平均最短区分路径从小到大排序,假设一共有n个样本,则排在floor(n*p)前的样本将被认定为异常,同时,孤立森林算法还会返回一个异常分数,也就是其不仅返回异常甄别结果,同时会返回异常程度。
2、DBSCAN: 这一算法或许是三种算法中最难去调优的,因为本身DBSCAN中的超球半径与点数量两个参数很难选龋笔者在进行该项目时,用代码写了一个简单的方法去帮助确定参数范围,这一方法未必是最优方法,并且一般只能在小样本数据量情况下才能实现,但是可以大概率的帮助实施者确定参数空间。这一辅助确定参数空间的算法如下:
(1)计算样本两两之间的距离矩阵(pairwise-distance matrix),假设一共有6000个样本,则距离矩阵的大小是6000x6000,我们暂时用D来表示这一矩阵。这里的距离我们采用欧式空间距离的计算方式。
(2)对距离矩阵每一行进行从小到大的排序,我们用Dij来表示排序后的距离矩阵中处在i行j列的数值。
(3)加总每一列的值并求平均,也就是
这样将会得到一个向量,我们用Dj来表示这一向量。用通俗语言来说,这一向量表示的是,距离每个样本点第j近的点的距离的平均值,比如Dj=3就是分别距离这6000个样本点,第3近的样本距离的平均值。
(4)最后我们可以画出Dj的曲线图,找到在可视化图像中的一个显著拐点,拐点对应的横坐标值即位DBSCAN算法超球所包含样本点参数,纵坐标值即为超球半径参数。
(5)确定这两个参数后,我们可以在以此为中心,在这一组参数上下对DBSCAN进行调参,参数优劣标准为数据集中确定的违规样本被判别为噪音点的数量,越多越好(当然读者可以设计别的评判标准)
3. GMM:
与DBSCAN面临同样的调参问题,但幸运的是,针对GMM算法在sklearn中是有具体方法进行评估结果的,这个方法叫做轮廓系数(Silhouette Score),在这里笔者不进行展开了。
除了轮廓系数评估之外,我们同时也要关注确定的违规样本被分群的结果,我们姑且认为违规样本被分入的群相对集中,或者被分入的群所含样本数量相对较小,是比较好的结果。
在实施完具体算法并进行评估之后,我们认为在这次内部欺诈项目中,孤立森林算法表现要明显好于另外两种算法,这也并不是巧合,我们总结出了如下原因,可供读者在今后类似风控场景中进行参考:
1.从反欺诈这一业务场景的数据角度来看,通常欺诈样本(尤其是内部欺诈这种非技术手段较多的情况),异常属于第一类,也就是全局异常点的可能性较大,这样的情况下,孤立森林算法最优。
2.从算法自身特性来看,孤立森林是相对训练起来最简单的模型,面临需要确定的参数空间非常少(乃至可以说是不需要调参),而GMM与DBSCAN对于参数较敏感。
3.从样本数量来看,孤立森林在小样本数据中表现相对较好,而内部欺诈场景中通常面临的都是样本量极小的情况(主要由内部员工数量决定)。
4.从业务理解性来看,虽然与随机森林和一些黑盒模型一样,孤立森林并不能提取判别规则,但是相较于GMM和DBSCAN,孤立森林会返回打分来为业务人员判断异常程度,这就方便业务人员有选择性的筛选检查,并可以针对排名靠前的异常样本返回原始数据总结业务规律。
2.5 无监督-Louvain算法进行社区检测
对于已经建好的3个网络,我们利用基于模块度的检测算法,即louvain算法来进行社区检测。关于该算法的介绍如下:
louvain算法是一个基于模块度优化的算法(模块度是评估一个社区网络划分好坏的度量方法),最终目标要找到使得整个社区网络的模块度最大的社团切分。该算法在效率和效果上都表现较好,并且能够发现层次性的社区结构。类似于Kmeans聚类, 但是评价标准从距离变为模块度的变化。
从上图可以看到,louvain算法可以分为两个阶段。在最开始的时候,每一个节点都被当成一个社团。第一个阶段需要做的是分类,将相似的点归到一个社团,做好标识。第二个阶段,将新的图重新初始化,即同一社团的为一个节点。重复第一个阶段,完成一轮迭代,当达到终止条件时终止。具体的迭代过程如下:
(1)将图中的每个节点看成一个独立的社团,即社团的数目与节点个数相同
(2)对每个节点i, 依次尝试把节点i分配到其每个邻居节点所在的社团,计算分配前与分配后的模块度变化ΔQ,并记录ΔQ最大的那个邻居节点,如果maxΔQ>0,则把节点i分配给ΔQ最大的那个邻居节点所在的社团, 否则保持不变
(3)重复(2),直到所有节点的所属社团不再变化
(4)对图进行压缩, 将所有在同一个社团的节点压缩成一个新节点, 社团内节点之间的边的权重转化为新节点的环的权重, 社团间的边权重转化成新节点间的边权重
(5)重复(1)直到整个图的模块度不再发生变化该算法的结果与聚类结果相似,将理财经理和客户划分到不同的社团中。在该银行案例中,根据最优模块度,对整个数据集划分出了近700个社团。接下来运用银行已有的违规理财经理信息和其他无监督算法选出的潜在人员信息,定位到所在的社团,并对社团进行重要性度量。最后将社团分为三个梯队:
第一梯队:已违规的理财经理所在的社团
第二梯队:用上述无监督算法得到的潜在违规人员所在的社团
第三梯队:不在上述两个梯队的社团,重要性最低,可当做基准社团来参考。
在该银行中,已有的内部欺诈案例是两个,因此第一梯队中的社团有两个。运用无监督算法得到的潜在违规人员可以根据严重程度控制在5个以为,作为第二梯队的社团。剩下的600多个社团都是第三梯队。
对所有的社团都进行描述型统计,计算均值,方差,最大值,最小值,观察特征的分布,分析异常值。以第三梯队社团的平均描述性分析结果作为基准值,第一梯队和第二梯队里的每个社团的描述性结果与基准值对应,查看是否有明显不同的地方。同时,结合异常值分析和业务分析来查看社团中其他成员的行为有没有异常。
2.6 半监督算法--图卷积神经网络(GCN)
由于银行中的欺诈样本数量极少,但是一旦发生对银行造成的经济和名誉损失很大。这种内部员工欺诈问题属于金融系统中很重视的一种操作风险,且该种风险的特点是发生的频率很低,但是造成的损失却很严重。
按照传统的方法,即上述的两种方案,聚类或者是社团检测这些无监督算法,是不能利用到这些极少数样本的信息。为了更好地利用已有的正样本信息,此时我们构想出新的方案:用半监督算法来检测异常样本。理论上来说,信息越多,模型的效果会更好。基于上面的关系数据集是以复杂网络的形式呈现,因此使用图卷积神经网络(GCN)这个半监督算法。
图卷积神经网络算法的特点是可以直接应用在之前已经搭建好的复杂网络上。与无监督算法不同的是,我们需要预先告知模型关于已知的样本标签。在已知信息的情况下,设定卷积层数,不断优化,使得损失函数最小,最后得到对样本的预测标签。
由于银行数据具有保密性,我们利用IBM的Waston实验室模拟的反欺诈交易数据集来搭建网络并应用三层的图卷积神经来预测。具体过程如下:
先利用反欺诈交易数据集进行构建网络,该模拟数据集中有11753条交易行为样本。涉及的交易主体有1000个人,由于我们关注的是找出具有欺诈行为的交易主体,所以得到关于交易主体的欺诈标签,即1000个人中有162个人是欺诈人员,正样本比例是83.8%。交易类型是转账的方式,交易特征是交易金额。同时数据集中有欺诈的真实标签以及进行警告的等级。
在进行数据准备和数据清洗之后,我们开始用networkx来构建复杂网络,将数据转化为图结构并进行正则化。接着利用自定义的三层神经网络模型,并输入已知的欺诈样本信息入模,并最终得到的预测结果。
3. 结论与不足之处总结
3.1 结论
3.1.1 模型结论
对于本文在一开始提出的4个不足点,在上面的方案中也得到了相应的解决。
首先,我们通过无监督方案得到的名单中,准确地找出了过往的真实欺诈人员。同时,该份名单相对于银行使用的规则筛选名单,数量降低了30%,假报警率降低了约8%。
其次,为了解决不能像有监督模型一样利用标签的问题,我们提出了半监督预测方法,使用模拟数据集,发现可以提高预测的准确率1到3个百分点。
最后,在图算法louvain的帮助下,我们输出了基于图特征的欺诈名单,供业务人员后续参考,及时发现关系网络上的异常之处。
3.1.2 风险场景归纳
通过无监督与复杂网络两种思路筛选出的异常样本,在返回原始数据后,我们总结出了一些业务上较为直观的风险点,可供银行风险业务相关的从业者们,作为今后风险控制的参考标准。类似于“大额转账”、”频繁转账“这样较为显然的风险特征我们就不再赘述,其他更为细致的风险特征总结如下:
1. 与直系亲属之间在最近3~6个月内是否有总额较大的转账资金,越大代表异常程度越高。
2.是否在近3~6个月中的每天夜间的固定一时间点内有同名账户转入或转出操作:
(1) 若交易对手为敏感机构,需提升关注
(2) 交易总金额越大,越需提升关注
(3) 若交易方式偏向个人银证交易,需提升关注
五同,即某些信息出现一致相同性。
3.2 不足之处
本方案提供的思路主要有以下几点不足,也是我们后续会进行挖掘和研究的方向:
正如我们之前提到的,在获取数据时,我们需要先对以往的案例进行分析,总结以往违规案例的特征,这样的方法就决定了我们很难发现在数据表现上超越以往形式的新型内部欺诈方法。比如若当前有某一客户经理,用一种交易行为和关系网都很难察觉到的方式进行违规操作,我们就很难用现有数据挖掘到。
在文章开头提到了,很多内部欺诈方法不同于外部欺诈,其技术手段较低,比如伪造公章,这就使得基于数据驱动的方法很难察觉,不过换句话说,这种内部欺诈的特点,所导致的这一方案的不足之处,其实并不是这篇方案所单独面对的,而是基于数据驱动的方法都难以攻克的。