本文要点
欺诈检测技术基本上起源于数据科学中的异常检测分支。
如果数据集拥有数量足够多的欺诈样例,则用于分类的监督机器学习算法(如随机森逻辑回归等)可用于欺诈检测。
如果数据集没有欺诈样例,我们可以使用使用隔离森林技术的偏离值检测方法,或使用神经自动编码器进行异常检测。
在机器学习模型训练完成后,使用灵敏度、特异性或 Cohen 的 Kappa 等指标在测试集上进行评估。
随着全球范围内信用卡欺诈损失不断增加,银行及电子商务企业在欺诈交易完成之前检测出它们的能力也愈加重要。
根据尼尔森报告(涵盖信用卡和移动支付行业的出版物),2016 年全球信用卡欺诈损失达 228 亿美元,比 2015 年增长 4.4%。这也证明在信用卡欺诈交易初期就发现它们是很关键的。
信用卡交易中的欺诈检测是一个涉及范围非常广泛且复杂的领域。多年来业界诞生了众多检测技术,主要源于数据科学的异常检测分支。具体来说,这些技术大都可以根据数据集的可用情况简化为两大方案类别:
场景 1:数据集中有数量足够多的欺诈样例。
场景 2:数据集没有欺诈样例(或数量可忽略不计)。
在第一个场景中,我们可以通过使用经典的机器学习或基于统计的技术来处理欺诈检测问题。我们可以训练一个机器学习模型或计算两个种类(合法交易和欺诈交易)的一些概率,并将模型应用到新的交易上以推测其是否合法。所有用于分类问题的机器学习监督算法这里都能用,例如随机森林、逻辑回归等。
在第二个场景中我们没有欺诈交易的样例,因此我们需要更灵活一些。由于我们只有合法交易的样例,所以需要充分利用它们。有两种选择:我们可以将欺诈视为异常或偏离值,并采用一种一致性的方法。偏离值检测方法的一个例子就是隔离森林,异常检测方法的典型例子是神经自动编码器。
下面来看看实践中如何在实际的数据集上使用这些技术。我们在 Kaggle 的欺诈检测数据集上实现了它们。该数据集包含 284,807 份信用卡交易数据,这些交易来自 2013 年 9 月的欧洲持卡人。每笔交易都用以下信息代表:
从原始数据中提取的 28 个主成分
数据集中第一笔交易的时间
金额
这些交易有两个标签:1 表示欺诈,0 表示合法(正常)交易。数据集中只有 492(0.2%)的交易是欺诈性的,并不是很多,但对于某些受监督的训练来说基本上够用了。
请注意,出于隐私考虑,数据只包含主成分而非原始交易信息。
场景 1:监督机器学习:随机森林
我们先来研究第一个场景。我们假设标记数据集可用来训练针对分类问题的监督机器学习算法。这里我们可以遵循数据科学项目的典型流程:数据准备、模型训练、评估和优化,最后则是部署。
数据准备
数据准备通常包括:
缺失值处理,若之后的机器学习算法需要则进行该步骤
特征选择,提升最终性能
额外的数据转换,以符合最新的数据隐私法规
但在这个场景中我们选择的数据集已经被清理过,并且可以使用了;无需额外的数据准备工作。
所有监督分类算法都需要一个训练集来训练模型,还需要一个测试集来评估模型质量。因此,读取数据之后必须将其划分为训练集和测试集。常见的分配比例在 80-20%和 60-40%之间浮动。我们的场景中采用 70-30%的分配比例,其中 70%的原始数据被放入训练集中,剩余的 30%被保留作为最终模型评估的测试集。
对于这一类分类问题来说,我们需要保证培训和测试集中各自都有两个类别的数据——在本例中指的就是欺诈交易和合法交易类别。由于两个类别所占的比例一高一低,因此建议采用分层抽样,而非随机抽样。因为随机抽样可能抽不到数量较少的类别中的样本,而分层抽样保证了抽到的子集中两个类别的分布与原始分布是一致的。
模型训练
这里选择任何有监督的机器学习算法都可以。作为演示,我们选择了一个有 100 棵树的随机森林,所有树都训练到十级深度,每个节点最多三个样本,并使用信息增益比率作为分割标准的质量度量。
模型评估:做出明智的决策
模型训练完毕后必须在测试集上评估。可以使用经典评估指标,例如敏感性和特异性;或使用 Cohen 的 Kappa。所有这些方法都依赖模型提供的预测。在大多数数据分析工具中,模型预测是基于概率最高的类生成的,其在二元分类问题中等效于在其中一个类概率上使用默认的 0.5 阈值。
但在欺诈检测的场景中,我们可能想要对欺诈交易采取更保守的态度。这意味着我们宁愿仔细检查一个合法的交易,并冒着打电话打扰客户的风险来尽量避免欺诈交易。这意味着欺诈类别的接受阈值要降低——或者说合法类别的接受阈值要增加。本例中我们对欺诈类别的概率采用了 0.3 的决策阈值,并默认的 0.5 阈值获得的结果做了对比。
下面的图 1 显示了使用 0.5(左侧)和 0.3(右侧)的判定阈值各自获得的混淆矩阵,在一个欠采样的,合法和欺诈交易数量相同的数据集上分别测得 Cohen 的 Kappa 为 0.890 和 0.898。正如你从混淆矩阵中所看到的,决策偏向欺诈交易会导致一些合法交易被误认为是欺诈性的,这也就是正确识别出更多欺诈交易要付出的代价。
图 1 该图显示了分别使用两个阈值的随机森林的性能测量结果:左侧为 0.5,右侧为 0.3。在混淆矩阵中,0 类指合法交易,1 类指欺诈交易。混淆矩阵显示使用较低的 0.3 阈值的设置时多识别出了 6 笔欺诈交易。
超参数优化
要完成训练周期,我们可以优化模型参数——对于所有分类解决方案都是一样。我们在本案研究中省略了这一部分,但其实这很容易做。对于随机森林来说,优化就是找到最佳树数量和树深度以获得最佳分类性能(D. Goldmann,“困在九层地狱里了?喝杯茶,试试参数优化吧”,KNIME Blog,2018;超参数优化)。此外还可以优化预测阈值。
我们用于训练的工作流程非常简单,只有几个节点(图 2):读取、分区、随机森林训练、随机森林预测生成、阈值应用和性能评分。“欺诈检测:模型训练”这套流程可以免费获取,可从KNIME Hub下载。只需免费下载并安装开源工具 KNIME Analytics Platform 即可运行该示例。
图 2 这套工作流程先读取数据集,并将其划分为训练和测试集。接下来它使用训练集训练随机森林,将训练模型应用于测试集,并评估阈值分别为 0.3 和 0.5 时模型的性能表现。
部署
最后,当模型性能达到我们的标准时,我们就可以在生产环境中使用它来处理真实数据。
部署工作流程(图 3)先导入训练好的模型,然后一次读取一笔新交易,并将模型应用于输入的交易,将自定义阈值应用于最终预测。如果交易被归类为欺诈,则会向信用卡所有者发送电子邮件以确认交易的合法性。
图 3 部署工作流程先读取经过训练的模型,然后一次读取一笔新交易,并将模型应用于输入数据,用定义的阈值应用到预测概率上,并在交易被分类为欺诈时向信用卡所有者发送电子邮件。
场景 2:使用自动编码器进行异常检测
下面继续讨论第二个场景:数据集中的欺诈交易数量太少,因此简单地拿来做测试即可,完全跳过训练阶段。
我们提出的一个方法源于异常检测技术。异常检测技术通常用于检测数据中的异常或意外事件,可以是物联网中的机械部件故障、ECG 信号中的心律失常心跳,抑或是信用卡业务中的欺诈性交易。异常检测的难点是缺少异常类的训练样例。
常用的异常检测技术是神经自动编码器:这是一种神经结构,可以仅对一类事件进行训练,并在部署中出现意外的新事件时警告我们。作为异常检测技术的例子,下面会具体介绍这个实现。
自动编码器神经架构
如图 4 所示,自动编码器是前馈反向传播训练的神经网络,具有 n 个输出单元和同样多的 n 个输入单元。在中间,它有一个或多个隐藏层,还有一个中央瓶颈层,有 h 个单元,其中 h <n。这里的思想是训练神经网络将输入向量 x 再现到输出向量 x’上。
自动编码器只针对一个类别的数据样例来做训练,本例中就是合法交易的类别。在部署期间,当处理的是合法交易时,自动编码器将在输出层 x’上合理再现输入的 x;而当处理的是欺诈交易(即异常)时,自动编码器的工作就没那么理想了。x 和 x’之间的这种差异可以通过距离指标来量化,例如:
使用距离 d(x,x’)上的阈值δ来针对合法交易与欺诈交易做出最终决策。根据以下异常检测规则来判断交易 x 是否是欺诈候选:
图 4 该图显示了自动编码器可能的网络结构。在本例中,我们有五个输入单元和三个隐藏层,分别有三个、两个和三个单元。重建的输出 x’也有和输入一样的五个单元。输入 x 和输出 x’之间的距离可用于检测异常,即欺诈交易。
当然,阈值δ可以保守地设置为仅针对最明显的欺诈案例发出警报,或者可以较激进地设置为对任何不寻常的事物都很敏感。下面来看看这个过程涉及的几个阶段。
数据准备
本例中的第一步是隔离出一个合法交易的子集,以创建训练集训练网络。在原始数据集中的所有合法交易里,90%用于训练和评估自动编码器网络,其余 10%和所有欺诈交易用来构建评估整个策略的测试集。
如上所述,训练集应该遵循通常的数据准备步骤。但前面也提到这个数据集已经清理过了,可以直接使用,无需额外的经典数据准备步骤;我们唯一要做的是神经网络自定义所需步骤:对输入向量归一化,使其落入[0,1]区间。
构建和训练神经自动编码器
自动编码器网络被定义为 30-14-7-7-30 架构,使用tanh和ReLU激活函数,活动正则项(activity regularizer)L1 = 0.0001,如 Venelin Valkov 的博客文章“使用Keras中的自动编码器进行信用卡欺诈检测 ——TensorFlow骇客指南(第七部分)”所述。活动正则化参数 L1 是稀疏约束,这使得网络不太可能过拟合训练数据。
然后根据损失函数均方误差(MSE)训练网络,直到最终损失值落在[0.070,0.071]范围内:
其中 N 是 batch 大小,n 是输出和输入层上的单元数。
训练 epoch 的数量设置为 50,batch 大小 N 也设置为 50,并选择Adam——反向传播算法的优化版本作为训练算法。训练后,网络将保存为 Keras 文件以备部署。
模型评估:做出明智的决策
然而,损失函数的值并不是故事的全部。它只是告诉我们网络能够将“正常”输入数据再现到输出层。为了全面了解此方法在检测欺诈性交易方面的表现,我们需要将上述异常检测规则应用于测试数据,测试数据中包含了少量的欺诈交易样例。
为此,我们需要为欺诈警报规则定义阈值δ。阈值一开始最好用学习阶段结束时损失函数的最终值决定。我们使用δ= 0.009,但如前所述,这是一个可以根据我们对网络的保守程度进行调整的参数。
图 5 显示了网络在由 10%的合法交易和所有欺诈交易构成的测试集上,使用基于距离的规则表现的性能。
图 5 该图给出了自动编码器模型的性能概述,包括混淆矩阵和 Cohen 的 Kappa 指标。同样,0 代表合法交易的类别,1 代表欺诈交易的类别。
最后的工作流程——构建自动编码器神经网络,将数据划分为训练和测试集,在将数据输入网络之前对数据标准化,训练网络,将网络应用于测试数据,计算距离 d(x,x’),应用阈值δ,最后对结果评分——如图 6 所示。该流程可在 KNIME Hub 的用于欺诈检测训练的Keras自动编码器下载。
图 6 这套工作流程先读取信用卡的.csv 数据集并创建一个训练集,其中只使用 90%的合法交易;使用剩余 10%的合法交易和所有欺诈交易创建测试集。自动编码器网络在工作流程的左上部分中定义。在数据标准化之后,训练自动编码器并评估其性能。
部署
现在我们来到了部署阶段。在部署应用中,先读取训练好的自动编码器并将其应用于新的归一化输入数据,计算输入矢量和输出矢量之间的距离,并应用阈值。如果距离低于阈值,则传入的交易被归类为合法,否则被视为欺诈。
请注意,网络加阈值策略已部署在 REST 应用程序中,接受来自 REST 请求的输入数据并在 REST 响应中生成预测。
实现部署的工作流程如图 7 所示,可在 KNIME Hub 的用于欺诈检测部署的Keras自动编码器下载。
图 7 任意应用可用 REST 请求结构发送一个新交易来触发这套流程。然后读取模型并将其应用到传入数据上,之后发回相应的预测,0 表示合法预测,1 表示欺诈交易。
异常值检测:隔离森林
在没有足够多欺诈样例的情况下,另一组欺诈检测策略则依赖偏离值检测技术。可用的偏离值检测技术有很多,我们又提出了隔离森林技术(M. Widmann 和 M. Heine,“偏离值检测的四种技术”,KNIME Blog,2019)。
隔离森林算法的基本思想是,可以使用比属于常规分类的样本更少的随机分割来隔离出偏离值,因为偏离值比常规观察值出现的频率更低,并且具有数据集统计结果之外的值。
根据这个想法,隔离森林算法随机选择一个特征,并随机选择该特征范围内的值作为分割值。使用这个分区步骤递归生成树。隔离样本所需的随机分裂数(隔离数)是树深度。在这些随机树林中平均的隔离数(通常也称为平均长度)是衡量正态性的指标,我们的决策函数用于识别偏离值。随机分区为偏离值产生的树深度明显更短,为其他数据样本产生的树深度较长。因此,当随机树林共同为特定数据点产生较短的路径长度时,这可能就是偏离值。
数据准备
数据准备步骤还是和前文一样:缺失值处理、特征选择和其他数据转换,以符合最新的数据隐私法规。由于此数据集已经清理过,因此可以直接使用。无需额外的经典数据准备步骤。训练和测试集的创建方式与自动编码器示例相同。
隔离森林的训练与应用
然后训练一个具有 100 棵树,最大树深度为 8 的隔离森林,并计算森林中树上每次交易的平均隔离数。
模型评估:做出明智的决策
请记住,偏离值的平均隔离数小于其他数据点。我们采用的决策阈值δ= 6。因此,如果平均隔离数低于该阈值,则将交易定义为欺诈候选者。与其他两个示例一样,此阈值是可以优化的参数,具体取决于我们希望模型具有的敏感程度。
这种方法在测试集上的性能如图 8 所示。最终的工作流程在 KNIME Hub 上可用,如图 9 所示。
图 8 与自动编码器解决方案相同的测试集上隔离森林的性能测试结果,包括混淆矩阵和 Cohen’Kappa 指标。同样,0 代表合法交易的类别,1 代表欺诈交易的类别。
图 9 这套工作流程先读取信用卡的.csv 数据集,然后创建训练和测试集,并将它们转换为 H2O 框架。接下来训练隔离森林并将训练的模型应用于测试集,以根据每笔交易的隔离数找出偏离值。
部署
这里的部署应用读取隔离森林模型并将其应用于新的传入数据。然后将在训练期间定义的阈值应用到隔离数上,从而将传入数据点标识为欺诈交易候选或合法交易。
图 10 部署工作流程先读取新交易并将经过训练的隔离森林应用在新交易上。为每笔输入交易计算隔离数,并确定交易是否是欺诈性的。如果是欺诈性交易,工作流程会向信用卡所有者发送电子邮件。
总结
如本教程开头所述,欺诈检测是数据科学领域的一个涉猎广泛的研究领域。我们根据可用的数据集情况描绘了两种可能的场景:既有合法也有欺诈交易类数据点的数据集,以及没有欺诈类别的样例,或其数量可忽略不计的数据集。
对于第一个场景,我们提出了一种基于监督机器学习算法的经典方法,遵循 CRISP-DM 过程描述的数据科学项目中的所有经典步骤。这是推荐的方法。在本案中,我们实现了一个基于随机森林分类器的示例。
有时由于问题本身的特征所限,没有欺诈交易类的样例可用。在这些情况下可以使用精度稍低但是依旧可用的一些方法。对于第二种情况我们介绍了两种方法:来自异常检测技术的神经自动编码器和来自偏离检测技术的隔离森林。在我们的示例中,它们往往不如随机森林那么准确;但在某些情况下我们没有其他可用方法。
文献中能找到的方法肯定不局限于这三种。但我们认为它们代表了欺诈检测问题的三个常用解决方案类型。
请注意对于标记欺诈交易不可用的情况讨论的后两种方法。它们都是紧急备用的方法,只有在欺诈类别中缺少标记数据,无法使用经典分类方法时才用它们。我们建议尽可能使用监督分类算法。但是如果没有可用的欺诈数据,那么后两种方法就可能派得上用场。实际上虽然它们容易产生误报,但在某些情况下它们是处理欺诈检测问题仅有的可行选项。
关于 KNIME 的更多信息请访问www.knime.com和KNIME博客。
作者介绍
Kathrin Melcher 是 KNIME 的数据科学家。她拥有德国康斯坦茨大学的数学硕士学位。她喜欢教课,喜欢将她的知识应用于数据科学、机器学习和算法上。在LinkedIn上关注 Kathrin。
KNIME 的首席数据科学家 Rosaria Silipo 博士是 50 多种技术出版物的作者,包括她最近出版的“实践数据科学:案例研究集”。她拥有生物工程博士学位,并在物联网、客户智能、金融行业和网络安全等众多领域的企业从事数据科学项目超过 25 年时间。在Twitter和LinkedIn上关注 Rosaria。
原文链接:
Fraud Detection Using Random Forest, Neural Autoencoder, and Isolation Forest Techniques
评论