干货 | 解析机器学习技术在反欺诈领域的应用
反欺诈简单说,就是:根据借款人提供的信息,查找多方面资料,进行不同属性的比对,从而发现“羊群中的狼”。这种工作复杂而枯燥,为了识别团伙欺诈,往往需要收集、整理、分析各种维度的数据,工作量更是成倍增加。但是枯燥的工作往往是单纯且有乐趣的。
举个栗子:
一个客户A来信贷公司进件,说他的妻子是B。另外一个客户C来进件,说他的姐姐是D。分别去看A和C的进件,我们发现不了任何的异常情况。但是把A和C放在大数据系统(需要模型支撑)搜索里面,就发现问题了:A的妻子B的电话和C的姐姐D的电话是一样的,但是名字不一样。
看到这个信息,我们肯定会思考到底B和D是不是同一个人?所以我们要调查一下,假如我们通过打电话来做调查,发现两个人的声音竟然是一样的,但是针对不同的调查,她所描述的个人信息是不一样的,所以我们确定B和D是同一个人,且她在撒谎。那么A和C也在撒谎,所以他们有很大的欺诈风险。
然后在系统中看到,有一个客户E,他和客户A的工作单位是一样的。继续对他们所在的工作单位进行调查,发现分别调查的时候,两人提到的公司的详细信息不一样。再后来,发现A和E所说的这个工作单位是一个中介公司包装的,并不真实存在。所以,现在可以确定:A、E是欺诈客户,那么和A通过B(D)关联起来的C也是欺诈客户;所有和A、E是同一个工作单位的客户都是欺诈客户。
这是一个典型的通过个别客户的异常信息逐步发现欺诈客户甚至欺诈团伙的案例。在这些风险用户组成的关系网中,含有欺诈可能的信息,都会被标注出来,业务人员可以直观地发现它们,从而降低欺诈风险。
反欺诈一直是风控的核心,事实上,根据相关第三方数据调查统计显示,消费金融以及互联网金融公司的坏账中有超过50%来自于欺诈。对于消费金融公司来说,欺诈风险远远大于信用风险。
欺诈者以非法牟利为目的,在真实交易方不知情的情况下,采取盗取账号、伪造身份、提供虚假信息、进行虚假交易等行为,给正常提供交易的各方造成损失,对互联网消费金融业务提供机构造成严峻的挑战。
什么是机器学习?
广义:作为人工智能最重要的技术——机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
金融领域的机器学习:本质上是进行特征提取和问题描述。将银行庞大的数据通过特征表达的方式转化到复杂的数据模型上,并依靠深层的神经网络,生成多层非线性的表达,从而表达一些以往很难描述的金融现象,因此特别适合处理风险、欺诈以及金融产品的营销这些依靠过往经验难以准确定量的事件。
机器学习技术的反欺诈原理
利用机器的深度学习技术反欺诈的原理,实际上是从信贷反欺诈的薄弱点着手,通过机器收集到大量异构、多源化的信息,包括可交叉验证信息主体所提供的信息以及第三方信息来源的真实性,形成共享库。
通过对数据的采集和分析,再通过机器学习及复杂网络等模型算法技术,对数据进行深度挖掘,从传统历史数据中量化抽取风险特征指标,利用复杂网络关联分析技术从历史违约数据中发现实时欺诈业务风险指标,丰富深度学习风险模型的业务维度,建立人工智能反欺诈模型,从而发现欺诈者隐藏的蛛丝马迹,分析其数据的矛盾点和可疑点,从而识别欺诈者身份,加上与传统经验规则配合使用,大幅提升银行欺诈风险的防控能力。
欺诈分析所使用的数据主要来源内部数据和外部数据,针对不同的数据源,通过多种采集方式对数据进行有效采集,并集中在数据湖中进行融合存储。根据预测模型分析的需求,通过配套的数据处理技术工具对数据进行预处理,最终输出模型训练所需的样本数据。
机器学习技术的反欺诈应用
机器学习可以根据丰富的数据和监控模型,对数据进行多重处理分析,建立实时反欺诈规则和模型,结合当前用户特征,实时识别用户欺诈行为。机器学习流程遵循一个标准程序,称为“训练算法”:包括数据抽取、数据清洗、特征推导、特征工程和转换、特征选择、模型训练和模型性能评价。
一、数据可视化
数据可视化 - 相关矩阵(Correlation Matrix) & 多维尺度变换(Multidimensional Scaling) ,人是视觉动物,可以在第一时间“看到”数据中存在的问题。因此,对于大部分反欺诈问题,建议至少要做以下两个可视化尝试:
一是,对不同的特征(feature)做一个相关矩阵分析并可视化,分析相关矩阵的目的是告诉我们特征两两之间的关系,以便于我们快速发现一些数据里面可能存在的问题。最重要的是帮助我们检查数据是否存在问题,有没有什么违反常理的情况。
二是,多维尺度变换(MDS)来直接可视化数据分布,我们都知道一般来说欺诈和正常数据应该“长得不一样”,那是否可以直接把它们画出来来分析。
然而,数据可视化往往都是二维或者三维的,但现实往往是成百上千维。即使我们把一个特征作为一个维度,我们最多也只能可视化三个维度。而多维尺度变换(MDS)可以将高维的数据在二维或者三维的框架里面进行可视化,类似的数据点会更加接近。通过观察数据点的分布,我们可以直观的猜测数据是否有规律,是否存在潜在异常点。
以一个项目为例,我们用MDS将一个8维的数据在2维上展示出来。我们似乎可以直观的看到一些近似线性的关系,以及一些看起来“很可疑”的点,在图中标注了出来。
这样做的好处有两点:
首先我们可以看到数据是否存在特定的特征,如果所有的点都是随机散乱分布,那我们的麻烦就大了。
我们似乎可以看到有一些离群的数据点,这些点可能是潜在的“欺诈”,也有可能只是噪音而已。但我们可以向客户或者老板展示这个可视图,向他们证明项目有潜在的价值。
如果在可视化中我们看到了一些规律,这让有信心继续往下做,进入建模阶段。
二、欺诈检测-算法
一般我们对欺诈检测做两种假设:
时序相关(time dependent)。对于时序相关的问题,我们假设欺诈的发生依赖于时间,通过时间序列分析,我们可以发现异常的地方。举例,假设一个人的信用卡平时1-11月每月消费2000美元,但12月突然消费了5000美元,此时时间就对我们的项目存在意义。
时序独立(time independent)。对于时序独立的问题,我们假设每一个欺诈都是独立,和时间无关。于是在分析中,我们移除了时间这个特征,我们不再把时间作为一个分析轴或者影响欺诈发生的特征。
有监督机器学习模型
有监督机器学习模式是反欺诈检测中最为广泛使用的机器学习模式。其中包含的几个学习技术分别有决策树算法,随机森林,最近邻算法,支持向量机和朴素贝叶斯分类。机器学习通常从有标签数据中自动创建出模型,来检测欺诈行为。
在创建模型的过程中,清楚了解哪些是欺诈行为,哪些不是,会起到至关重要的作用。模型中倒入的数据会影响其检测效果。用已知欺诈数据和正常数据做训练集,可以训练出学习模型来填补并增强规则引擎无法覆盖的复杂欺诈行为。
下面是一个关于有监督机器学习机制如何将新的数据划分为欺诈和非欺诈的例子。训练数据通过识别模型特点,可以预知两种类型欺诈者: 1. 信用卡欺诈者 2. 垃圾信息制造者。
以下三种特征对识别欺诈攻击类型非常有帮助:1. 邮件地址结构 2. IP地址类型 3. 关联账户密度指示欺诈攻击类型(如变化的回复)。实际上,一个典型的模型有成百上千种特征。
在此例中,拥有以下特征的用户会被训练出的模型识别为信用卡欺诈:
邮箱地址前5个是字母,后3个是数字
使用匿名代理
中等密度关联账号(例如10)
有以下特征的用户会被识别为垃圾信息制造者:
邮箱地址按某种形式随机生成的
使用数据中心的IP地址
高密度关联账号(例如30+)
假设现在你的模型正在从下面一批用户里评估风险,这个模型会计算每个用户的邮件地址结构,IP地址类型以及账号关联密度。正常情况下,模型会将第二种和第三种用户归类为垃圾制造者,把第一、第四、第五种归为信用卡欺诈者。
无监督学习
无监督检测算法无需依赖于任何标签数据来训练模型。这种检测机制算法的核心内容是无监督欺诈行为检测,通过利用关联分析和相似性分析,发现欺诈用户行为间的联系,创建群组,并在一个或多个其他群组中发掘新型欺诈行为和案例。
像Isolation Forest就是一种非常稳定的算法,是周志华老师提出的。而且在Sklearn里面已经得到了实现。基本的原理就是一种集成学习,通过计算每个数据点需要多少次节点拆分(splitting)才能被划分到独立的空间。异常点因为和其他正常点离得较远不大相似,因此更容易用很少的拆分就可以被划到独立的空间里面去。
各种Density Based的聚类方法(CBLOF)。此处需要注意,大家熟知的K-Means为原型的聚类,如K-Modes都不大适合用于异常值检测,因为其本身很容易受到异常值和噪音的扰动。
各种以K近邻(KNN)为原型的检测方法。从本质上说,和聚类方法是比较类似的。
四、如何构建可行的欺诈检测方案?
首先,我们必须先要认清一个残酷的现实: 单纯依靠机器学习模型来检测欺诈是愚蠢的。至少在现阶段我们不能单纯依靠纯粹的数据模型来做这一点。比较折中且可行的方法是做 混合模型(hybridmodel),也就是把人为规则和机器学习模型合二为一,一起来使用。
首先我们通过对领域专家的访谈和对历史数据的分析,可以得到一些非常可靠的评判标准。以保险行业为例,如果一个人刚买短期保险没两天就意外身亡,这存在欺诈的风险就很高。这样的标准或许从机器学习中可以学到,或许学不到。如果有成本更低方法做到更好的效果,不要迷信全自动模型。
总结来说,反欺诈模型难度很高,而且需要和领域专家一起协作才能有最好的结果。机器学习从业者千万不要闭门造车,试图自己靠调参就搞个大新闻。
推荐的步骤是:
对数据进行必要的可视化,如MDS
同时考虑时间是否是重要因素,如果是那么进行时序分析
用无监督学习得到一些可能的异常点,如Isolation Forests
通过统计学方法分析得到的异常点是否有显著的不同,有特征可供我们研究
归纳特征并构造一个故事,与领域专家共同验证故事的可靠性
重复1-5直到被派到下一个项目上搬砖,争取找到尽量多有效的欺诈
构造[规则+机器学习]的混合模型,进一步调参优化模型
如何提升反欺诈模型性能
基于数据
借助算法
用算法调参
借助模型融合
最后讲一讲在建模过程中一些调优的经验。如果发现反欺诈模型的效果不是很满意,应该采用怎样的方法提升。可以尝试这四个方面。
第一个是基于数据的方法。如果这个模型效果不太好,我们首先要思考的是特征是否还不够好或者还不够多。我们能否想方法找出更多的特征来。同时也要考虑到我们对数据的分析是不是到位,是不是对数据的处理上还不够细致,是否在数据的整理上犯了一些低级错误,而导致模型效果不太好。
第二个可以借助算法的方法。如果你用到的算法是线性的,它的效果可以作为你的一个 benchmark。你可以尝试使用复杂一点的算法去拟合你的数据集,比如用非线性的,boosting 的一些算法。用复杂的算法一般会比一些线性的算法得到更好的效果,但也同时意味着你要花更多时间调优模型的参数。
第三个用算法调参的方法。一般说来,非线性算法是有一些超参数的。越复杂的算法超参数越多。比如像深度学习的超参数就非常多。你要通过一个复杂的算法得到一个很好的模型,是需要花很多时间去调参的,而且在调参过程中意味着你需要对算法本身有一定了解,而且了解的越深入对调参过程越有把握。
最后通过融合(ensemble)我们的模型。我们使用 random forest 或者 GBDT 的算法,本身就是一种融合的方式。我们在用好几种算法得到不同 Model 后,可以把这些 Model 再次融合起来。最直接的方法是把不同 Model 的结果当成新的 Model 的 input 重新去训练。在你遇到 Model 效果不太好的时候,可以尝试使用模型融合。
来源|知乎、DataVisor
更多精彩,戳这里:
2018开年大课,阅读原文,即可报名