厚龙,曾参与了“每天一个数据分析师”采访,现在互联网金融风控行业工作。
本文为CDA数据分析师约稿,如需转载,请标明来源,否则视为侵权。
本文首发:CDA数据分析师微信公众号
一交易欺诈简介
1.1交易欺诈简介
交易欺诈一般是指第三方欺诈,即所发生的交易非持卡人本人意愿的交易。通常是不法分子利用各种渠道窃取卡信息,进行伪造卡作案。
上图是一个从盗取信息到套现的整个流程。
第三方交易欺诈的特点:使用他卡;在最短时间内大量用卡;一定以获利为目的;一般有区域集中性。交易反欺诈模型的特点和难点:海量数据计算、小概率事件、欺诈模式变化快、数据一般是割裂的。
1.2交易欺诈风控技术
交易识别方法,主要有风控规则引擎、异常检测、机器学习方法等。
以上方法建立的前提都是欺诈分子可以盗用客户信息,也可以伪造客户卡片,但是无法复制客户的交易行为模式。因此客户交易行为特征档案是以上规则建立的基础。档案要求:客户投资行为和交易模式从各个维度刻画客户的行为;随交易活动实时更新;每个客户需有唯一档案。
--以上假设对于互联网金融P2P投资而言,难度更大,原因:投资金额的不确定性、投资产品较少,客户交易行为特征归纳难度大。
风控规则引擎
风控组合规则一般是通过业务经验及对历史风险事件的总结形成的反欺诈规则,可以理解为多维组合分析,一般需根据业务成本、对风险的容忍度设置关键变量的阈值。
异常可疑交易检测
异常值模型是用于从大量数据构成的样本群体中识别出与该群体有显著差异或者异常情况的样本的过程。在反欺诈领域,欺诈交易和正常交易有显著差异,可以用异常模型进行补充,一般是以距离为测量尺度,把样本关键信息标准化为可测信息,进行聚类,聚类中样本较小的簇确定是否为异常样本,常用在探索性分析阶段。异常样本与统计学中的离群值概念相似。
机器学习的方法
常用的分类算法都可以应用在此类场景中,比如:神经网络、贝叶斯方法、决策树、支持向量机等。不同于一般分类问题的是:“欺诈”这种异常模式(类别)的占比可能非常小(不超过5%,一般低于1%),为保证训练和测试样本中包含一定数量的此异常模式记录,在准备数据时可能需要分层抽样。
不同于信用评分模型(使用logistic回归较多),在反欺诈领域,普遍使用神经网络模型技术,该技术模拟人脑功能的基本特征,适合处理需同时考虑许多因素和条件的非线性问题。神经网络模型具有识别率高、稳定性强且易于系统落地实施等优点。
网络一般包含三或更多层,其至少包含的有输入层、隐含层及输出层。
比如输入信息可能为:输入变量1交易金额、输入变量2交易时间、输入变量3产品类型、输入变量4用户年龄、输入变量4近一周交易特定类型失败交易失败笔数、本次金额与历史N次最大交易金额相比、是否历史常用设备等。
输出信息为交易评分。可以发现神经网络中间是个黑箱,它的缺点为业务解释困难,这要求特征工程提取有较高质量。
1.3建模过程及注意事项
建模流程
详细说明建模过程如下:
数据准备方面
一般需考虑现有的数据仓库或数据集市系统或交易系统、存在于其他外部的数据等。需充分考虑现有数据结构如何、是否具备该数据、当前数据信息量是否足够、坏样本是否足够建模等等,总之,做好数据准备是影响问题解决效率的重要前提。
举例一般的欺诈交易模型所需数据可能包括:
交易信息:账户、金额、日期、时间、币种、渠道、商户、产品信息等;
欺诈记录:是或者否;
其他信息:用户IP、账户、设备等。
特征工程方面
目标定义:将欺诈数据与交易数据相匹配,欺诈账户在欺诈窗口(第一次欺诈日到被发现之日)之间的所有交易即为欺诈性交易;
对非欺诈账户,其所有交易即为非欺诈性交易。欺诈账户在第一次欺诈日之前的正常交易只为欺诈账户建立档案,但这些正常交易本身并不作为非欺诈性交易进入建模样本。
变量设计:包括原始变量和衍生变量两种。
原始变量:一般只用当前交易的信息,如交易金额、产品类型、交易类型、交易渠道、设备号、交易时间等;拿到原始变量,可先进行缺失值和极端值的处理;再对这些基本交易信息进行探索性分析;对产生的非连续性变量进行相应的WOE(weight of evidence)处理或根据卡方检验处理;连续型变量进行变量压缩等。
衍生变量:通过对账户交易历史的跟踪,可以提炼账户的交易行为模式,这就是每个账户的档案。如果当前的交易与该账户的历史行为模式差别较大,则欺诈的可能性也较大。通俗的说,档案是该帐号的消费行为的标准答案。要判断当前的这笔是否交易欺诈,则需要将当前的交易信息与这个档案(标准答案)进行对比,相差越大则欺诈的概率越大。
其中有
以时间为基础的衍生变量:
过去10分钟,30分钟,1小时,2小时…半天,1天,2天…1周…1月等时间段交易的次数或平均金额;当前交易金额与过去若干时间段的交易金额的均值和标准差的对比等等;
以事件为基础的衍生变量:
账户设备号是否为常用设备;账户敏感信息有没有发生过修改;账户历史失败交易占比等;过去过去2次,3次…10次…N次交易的平均金额;过去2次,3次…10次…N次交易的最大金额;当前交易金额与过去若干次的交易金额的均值,标准差和最大值的对比等等。(衍生变量一般是历史数据的汇聚,从客户档案中提取)。
数据处理注意点:WOE代替(分类型变量定量化);时间可划分为7*24小时建立二维向量。通过这些复杂的变量,可以捕捉到每个账户的历史行为模式,当前交易行为与历史行为模式的差距,交易发生的速率和动态等等。产生上述变量需要一定时间的交易历史(6—12月),涉及的交易量庞大,每笔交易的数据量也不小,如何有效地保存,清理,加工这些数据并在此基础上快速计算所需变量是一个技术关键。一般这步之后,有较多的变量,那接下的工作就是变量选择。
变量选择:由于建模需要构建出大量的变量,有些变量预测能力强,有些变量预测能力弱,不筛选会影响效率。此外,变量的子集很可能高度相关,造成“过拟和”,模型的准确性和可靠性将受到损害。
注:过拟合是指在测试样本效果佳但由于训练过度推广至新样本效果反而不佳。
以神经网络模型为例,神经网络BP算法训练过程中,不能自动筛选变量(回归可以,有向前、向后等)。为了找到一组预测能力强、变量之间的相关性弱的变量,不影响模型准确性,增加模型稳定性。变量筛选的方法主要如下:单变量预测能力筛选:灵敏度分析、变量相关性检查。一般而言,交易反欺诈模型需要输入变量数远多于信用评分模型。
模型训练
按以下步骤训练神经网络模型,直至模型效果最佳。
1、对所有设计产生的自变量先进行初步筛选,排除明显无预测能力的变量,剩余变量在神经网络模型训练过程中再进行精选。
2、根据输入变量的数目,设计合理的网络结构和隐节点数。--关键。一般交易欺诈模型有上百个变量,一层隐含层,十几个隐含节点。
3、根据设计好的网络结构,选取合适的训练参数和收敛条件,在上述第一步数据进一步划分后的纯训练数据上训练模型,在测试数据上测试模型效果。
4、在有了初步训练好的神经网络模型后,可用灵敏度分析等手段进一步筛选变量。
5、对每个分段(segment),步骤3到步骤5都要重复多次,调整输入变量,调整隐节点数,调整训练参数,最后选出一个在测试数据上表现最好的模型作为该分段的最终模型。相对逻辑回归来说,神经网络的训练更加于经验,如何设计网络结构、各个参数大小等很重要。
模型验证及评估
交易验证及精准率和召回率评估(见案例部分介绍)。
交易反欺诈策略:
策略的目标是最大限额地降低欺诈损失额,而预期欺诈损失额等于欺诈概率乘以交易额。由于反欺诈模型的评分反映了欺诈的概率,所以欺诈评分和交易额是反欺诈策略的主要依据,辅之以产品种类、交易区域、交易方式等。
策略简介:对欺诈风险较高的交易利用事后短信、电话联系、信件联系或电子邮件联系的方式,与用户在交易外进行沟通,核对可疑交易,如果证实某账号正在经历欺诈性交易(如用户证实某可疑交易非其所为),则立刻拒绝用户的所有后续交易并给重新建立账户等措施。这些反欺诈措施可以作为对实时交易授权决策的有效补充。当然,策略是要讲究平衡的艺术,核对交易是存在成本的,这就需要在成本和挽回损失间找到平衡点。而策略最终目标应该是:在电话核对和拒绝的交易量不超过资源负载的前提下最大限度发现和阻断欺诈交易、最小限度地影响真实交易。
二 一个简单的欺诈监测案例[ 案例及代码来源:Data Mining with R: Learning with Case Studies]
应用思路:
2.1案例问题描述
欺诈模型相关的案例较少,考虑商业数据的敏感性,采用案例使用的案例“使用Data Mining with R: Learning with Case Studies一书,请大家自行百度”,理解掌握本案例对有志于从事反欺诈、风险数据分析相关领域的数据分析新手有很大的帮助。另外,R内置此数据大家可以完全可以拿来练手。
具体如下:某公司的销售员所报告的交易数据。这些销售员负责销售该公司的产品并定期报告销售情况。销售员可以按照自己的策略和市场情况来自由设置销售价格。月末,向公司报告销售情况。数据挖掘应用的目的是根据公司过去发现的交易报告中的错误和欺诈企图,帮助公司完成核实这些销售报告的真实性的工作。提供一份欺诈率排名报告,这个欺诈率排名将允许公司把有限的检验资源分配给系统提示的更“可疑”的那些报告。
2.2数据处理
案例数据共401 146行,每一行包括来自销售员报告的信息。包括:
ID:说明销售员ID的一个因子变量;Prod:说明销售产品ID号的一个因子变量;Quant:报告该产品销售的数量;Val:报告销售记录的总价值;Insp:有三个可能值的因子变量——ok表示公司检查了该交易并认为该交易有效;fraud表示发现该交易为欺诈;unkn表示该交易未经过公司审核。
了解数据概况
显示前几行数据,如下:
初步了解数据特征发现,数据集中有大量的产品和销售人员信息;同时数据缺失问题存在。
观察下有多少不同的产品和销售人员。
欺诈行为比例是很低的,有96%的交易尚未进行核实。
继续往下看:
下图各销售人员交易量波动性很强且不同产品可能有较大差异,但我们还没有考虑产品数量的影响。
销售单价同样存在较大变动性。
说明:现在我们要做一个假设,短时期内同一产品单位交易价格应该是相对稳定的。产品单价不应该出现巨大变化。----我们侦测欺诈交易的业务逻辑前提,有这个前提,我们需要对每个产品的交易进行分析,找出每个产品的可疑交易。同时我们需要考虑交易量少于20的产品(982种)。
下面看看最贵的和最便宜的单位价格对比?
PS:我们上图已经对价格做了对数处理,这是常用的方法,当数据量级不在同一水平时。
类似价格,我想看看哪些给公司带来给多贡献的销售人员。
以上数据结果说明:销售金额前100(不到2%)的销售人员销售收入占比超过40%,而近三分之一的销售人员只贡献了约2%;而产品方面差异更为显著,后90%的产品仅贡献了少于10%的销量。这个信息对生产十分有用,但并不意味着公司应该停止该产品生产,因为我们没有生产成本的信息,这些产品有边际利润存在的可能,同时也不是本案例的目的。
下面进行初步异常侦测,看大概异常比例。
假设:所有产品的单价接近正态分布,即同一产品价格大致相同,它们之间的变化可能是某些销售人员为了达到他们商业目的而采取的策略。此次先采取箱线图规则,定义:如果一个观测值高于上须或低于下须,将其观测值标记为异常高(低)。上下须定义Q3+1.5*四分位距、Q1-1.5*四分位数,IQR=Q3-Q1。Q3、Q1分别代表75%、25%处的总体水平。对单变量,在有少数离群值时此规则是有效的。经计算约有7%的交易被认为是离群值(异常价格)的交易。
但是我们利用的数据可能本身是有噪声的,有的数据是缺失的、有的数据尚未进行检查且占比高,这部分数据需要拿来检验异常是危险的,因此,我们需要对数据进行处理,同时考虑更科学的侦测方法。
处理缺失值和少量交易产品的问题
缺失值处理过程略去(不代表不重要),但说明主要采用的方法,对于销售总价和数量都不存在的样本进行剔除;而对于仅缺失数量或销售总价的样本采用价格中位数进行填补缺失值并重新计算另一变量的方式处理。
处理少量交易的产品
思路:归入其他产品类。具体为:尝试观测产品单价分布的相似性来推断其中的一些关系。如果发现有类似价格的产品考虑合并相应交易进行分析,从而寻找异常值。前文讲到交易样本小于20的产品共982种。而比较分布的方法有数据可视化和统计检验,鉴于产品种类多,采用统计检验方法,考察数据分布的统计特性(集中趋势和离散程度)离散程度使用中位数、离散程度采用四分位差。采用这两个指标的原因在于中位数和四分位差较于均值和标准差而言受异常值影响小(大家可以思考为什么??),指标更稳健。首先进行可视化观测假设。
左图受各别值影响,右图进行了对数处理,数据显示如下:许多少数产品的中位数和IQR和其他产品非常相似。然而也有几种产品不仅交易少,而且价格分布也有较大差异。为了更有效的比较分布我们使用K-S检验分布是否来自相同分布,显著性水平定义为10%。--推断统计应用,检验分布统计意义上的相似性。--计算过程如下:
结果显示,10%的显著性水平下,只有117个产品我们可以找到类似产品。
至此数据预处理结束。
2.3定义建模任务
目的:运用数据科学方法为确定是否核实这些交易提供指导,对交易欺诈率进行排名,仅处理检查资源有限范围内的欺诈交易(排名靠前的若干可疑交易)。解决建模目标的方法是前面所介绍的无监督、有监督、半监督方法,分别介绍其思路如下。在这之前先说下数据现状:数据Insp列有两种类型的观测值,有标记和无标记,而有标记比例不足4%。
我们采用Holdout方法进行抽样,即将已有数据即分成两部分,通常比例是70%、30%。一部分用于建模,一部分用于测试并选择重复多次,选择3次,保障结果是可靠的。。
但由于样本特殊性给建模造成了一定困难,即数据不平衡问题,不同类型样本之间的分布不均衡,即在标记个案上是不平衡的。正常抽样策略可能导致一个测试集的正常报告与欺诈报告比例不同,这需要采用分层抽样方法解决,即从不同类型观测袋子中随机抽样,以确保抽取的样本遵守初始数据的分布。Holdout方法是类似于交叉验证和蒙特卡罗实验的另一种实验控制方法。
模型评级准则:决策精确度(Precision)与召回率(Recall)。
对于我们的案例而言,一个成功模型应得到一个交易排序,其中已知的欺诈交易在顶部,给定一个我们的资源允许检验的报告个数K,我们希望在排序的顶部k个位置中,或者只有欺诈交易的报告或者只有未检验的报告,同时我们希望所有已知的欺骗报告出现在这k个位置中。但考虑我们目标的特殊性,我们预测的是一个小概率的罕见事件,精确度与召回率是合适的评级指标。给定检验限制k,我们可以计算排序的最顶端k个位置的决策精确度与召回率。这个限定值k决定了模型哪些报告应该被检验。从监督学习分类的角度去看,我们相当于预测顶端的k个位置预测为fraud类,其余为正常报告。精确度告诉我们顶端k个值多大比例事实上是标记为欺诈的报告。而召回率的值告诉我们k个位置所包含的测试集的欺诈行为比例。同时我们采用悲观计算的方式,因为前k个样本中未标记的报告很可能是fraud交易但我们计算精确度和召回是没有考虑他们的。
同时如果算法没有显著提升的情况下,精确度与召回率之间是需要权衡的。因为一般二者是负相关的,给定用于检验行为的资源约束条件,我们真正想要的是最大限度的利用资源。这意味着我们可以用x小时检查报告,并能够在这x小时捕捉到所有欺诈行为,及时有一定的正常交易我们也不care,因为目的达到了,即我们需要的是使用现有资源达到100%的召回率。而精确度与召回率趋势是模型性能的可视化表现。通过不同的工作点得到上面统计量的插值,得到该曲线。这些工作点由模型感兴趣的类别排序中断点给出。在我们案例中,这将对于应用在模型所产生的离群值排序上的不同资源限制。对不同的限制水平(即检验更少或更多的样本)进行迭代,得到不同的决策精确度和召回率。--PR图。
提升图:x轴模型预测阳性的概率;y轴是召回率比上阳性预测率的商;同时还有累计召回度图形,该模型曲线余越靠近上方,模型越好;此外,考虑模型排名前面可能包含未标记的样本,我们要检验排序质量的另外方法就是计算评估样本单位价格和相应产品的标准价格聚类,衡量异常值排名质量。
即我们通过PR图和lift图和标准价格距离衡量各建模效果。
2.4建模实施及评价
无监督方法
修正的箱线图离群值排名:
局部离群因子系统(LOF):通过估计个案和局部领域的分离程度来得到个案离群值分数。在低密度区域的个案被视为离群值。个案的离群估计值是通过个案之间的距离来获得的。
对比两种方法的结果:
对于较低的检验限值,LOF是优于Bprule的,同时对于10%的检验限值,LOF方法的标准距离明细高于BPrule方法。
基于聚类的离群值排名:---分层聚类。---聚类树思想,将这些树在不同高度水平进行切割时给出数据的不同聚类,这个方法的类是不断合并而成的。离群值分数来自于合并前类的大小与合并后类大小的差,如果合并后与合并前的明细,则离群值分高。建模结果如下:
结果显示,聚类的离群值排名召回率更高。15%-20%检验样本可覆盖欺诈70-80%。
有监督方法
类失衡问题解决,采用欠抽样的方法。如下简介:
解决类失衡后,分别采用简单bayes和简单bayesSmote版本和orh算法解决进行建模结果对比如下:可见两种方法与聚类方法相比均是令人失望的。
Adaboost方法,组合学习方法,预测值是通过对一组基本模型的预测值进行某种形式的组合形成的,该方法应用一种自适应增强的方法来得到一组基本模型,是一种常见的提高基本性能的方法。它通过一种加权方式提高性能:增加被前一个模型误分类的个案的权重。经过迭代结果是一组在不同训练集数据上的基本模型。加权方式应对类失衡问题对学习算法很有意义,即使在初始迭代中有少数个案被模型忽略,它们的权重将会增加,模型被迫学习它们。理论上着将导致得到的组合模型能更精确的预测这些稀有的个案。
Adaboost.M1是其中一种有效算法。建模效果如下:
PR曲线而言,对低水平的召回值,精确度明细低于ORh方法,但对本案,累计召回度,与ORh效果接近,说明Adaboost在对类失衡问题下仍有较好的性能。
半监督方法
同时使用检验的和没有检验的报告来得到侦测欺诈报告的分类模型。采用自我训练模型,该方法先用给定标记的个案建立一个初始的分类器,然后应用这个分类器来预测给定训练集中未标记的个案,将分类器中有较高置信度的预测标签所对应的个案和预测的标签一起加入有标记的数据集中。继续迭代新分类器,直至收敛。三个重要参数,基本训练模型、分类置信度阈值、收敛准则。我们采用基本训练模型为简单Adaboost.M1方法进行自我训练。
建模效果如下:
在以上尝试的所有模型中,累计召回曲线最好的明显哦是自我训练AdaBoost.M1模型。15%-20%的检验限值比例可以确定80%以上的累计召回率。它明细好于其他模型,虽然就精确度而言并不出色,但本案重要的是在有限资源找出欺诈案例。因此该模型式最优的对于我们的建模任务。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
“最近复购率一直在下降,我们的营销力度不小啊,为什么用户还是走了?” “是不是广告投放的用户质量不高?还是我们的产品问题 ...
2025-02-21以下文章来源于数有道 ,作者数据星爷 SQL查询是数据分析工作的基础,也是CDA数据分析师一级的核心考点,人工智能时代,AI能为 ...
2025-02-19在当今这个数据驱动的时代,几乎每一个业务决策都离不开对数据的深入分析。而其中,指标波动归因分析更是至关重要的一环。无论是 ...
2025-02-18当数据开始说谎:那些年我们交过的学费 你有没有经历过这样的场景?熬了三个通宵做的数据分析报告,在会议上被老板一句"这数据靠 ...
2025-02-17数据分析作为一门跨学科领域,融合了统计学、编程、业务理解和可视化技术。无论是初学者还是有一定经验的从业者,系统化的学习路 ...
2025-02-17挖掘用户价值本质是让企业从‘赚今天的钱’升级为‘赚未来的钱’,同时让用户从‘被推销’变为‘被满足’。询问deepseek关于挖 ...
2025-02-17近来deepseek爆火,看看deepseek能否帮我们快速实现数据看板实时更新。 可以看出这对不知道怎么动手的小白来说是相当友好的, ...
2025-02-14一秒精通 Deepseek,不用找教程,不用买资料,更不用报一堆垃圾课程,所有这么去做的,都是舍近求远,因为你忽略了 deepseek 的 ...
2025-02-12自学 Python 的关键在于高效规划 + 实践驱动。以下是一份适合零基础快速入门的自学路径,结合资源推荐和实用技巧: 一、快速入 ...
2025-02-12“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩 ...
2025-02-08活动介绍 为了助力大家在数据分析领域不断精进技能,我们特别举办本期打卡活动。在这里,你可以充分利用碎片化时间在线学习,让 ...
2025-02-071、闺女,醒醒,媒人把相亲的带来了。 我。。。。。。。 2、前年春节相亲相了40个, 去年春节相亲50个, 祖宗,今年你想相多少个 ...
2025-02-06在数据科学的广阔领域中,统计分析与数据挖掘占据了重要位置。尽管它们常常被视为有关联的领域,但两者在理论基础、目标、方法及 ...
2025-02-05在数据分析的世界里,“对比”是一种简单且有效的方法。这就像两个女孩子穿同一款式的衣服,效果不一样。 很多人都听过“货比三 ...
2025-02-05当我们只有非常少量的已标记数据,同时有大量未标记数据点时,可以使用半监督学习算法来处理。在sklearn中,基于图算法的半监督 ...
2025-02-05考虑一种棘手的情况:训练数据中大部分样本没有标签。此时,我们可以考虑使用半监督学习方法来处理。半监督学习能够利用这些额 ...
2025-02-04一、数学函数 1、取整 =INT(数字) 2、求余数 =MOD(除数,被除数) 3、四舍五入 =ROUND(数字,保留小数位数) 4、取绝对值 =AB ...
2025-02-03作者:CDA持证人 余治国 一般各平台出薪资报告,都会哀嚎遍野。举个例子,去年某招聘平台发布《中国女性职场现状调查报告》, ...
2025-02-02真正的数据分析大神是什么样的呢?有人认为他们能轻松驾驭各种分析工具,能够从海量数据中找到潜在关联,或者一眼识别报告中的数 ...
2025-02-01现今社会,“转行”似乎成无数职场人无法回避的话题。但行业就像座围城:外行人看光鲜,内行人看心酸。数据分析这个行业,近几年 ...
2025-01-31