通过 Amazon SageMaker PlatoBlockchain Data Intelligence 使用机器学习检测欺诈交易。 垂直搜索。 哎。

通过 Amazon SageMaker 使用机器学习检测欺诈交易

由于恶意用户和欺诈交易,企业每年可能损失数十亿美元。 随着越来越多的商业运营转向在线,在线系统中的欺诈和滥用行为也在增加。 为了打击在线欺诈,许多企业一直在使用基于规则的欺诈检测系统。

然而,传统的欺诈检测系统依赖于一组由人类专家手工制作的规则和过滤器。 过滤器通常很脆弱,规则可能无法捕捉到所有欺诈信号。 此外,尽管欺诈行为不断发展,但预定义规则和过滤器的静态特性使得难以有效维护和改进传统的欺诈检测系统。

在这篇文章中,我们将向您展示如何使用机器学习 (ML) 构建动态、自我改进和可维护的信用卡欺诈检测系统 亚马逊SageMaker.

或者,如果您正在寻找完全托管的服务来构建定制的欺诈检测模型而无需编写代码,我们建议您查看 亚马逊欺诈检测器. Amazon Fraud Detector 使没有 ML 经验的客户能够利用 AWS 和 Amazon.com 20 多年的欺诈检测专业知识,自动构建为其数据定制的欺诈检测模型。

解决方案概述

该解决方案使用 SageMaker 构建了信用卡欺诈检测系统的核心。 我们首先使用该算法训练一个无监督的异常检测模型 随机砍伐森林 (RCF). 然后我们使用该算法训练两个监督分类模型 XGBoost,一个作为基线模型,另一个用于进行预测,使用不同的策略来解决数据中的极端类别不平衡问题。 最后,我们训练了一个最优的 XGBoost 模型 超参数优化(HPO) 进一步提高模型性能。

对于样本数据集,我们使用公开的匿名信用卡交易 数据集 最初是作为 研究 Worldline 和 ULB机器学习组 (布鲁塞尔自由大学)。 在演练中,我们还讨论了如何自定义解决方案以使用您自己的数据。

解决方案的输出如下:

  • 一个无人监督的 SageMaker RCF 模型。 该模型为每笔交易输出一个异常分数。 低分值表示交易被视为正常(非欺诈)。 高值表示交易是欺诈性的。 低和高的定义取决于应用程序,但通常的做法表明,超过平均分数三个标准差的分数被认为是异常的。
  • 有监督的 SageMaker XGBoost 模型使用其内置的加权模式进行训练,以解决高度不平衡的数据问题。
  • 一个受监督的 SageMaker XGBoost 模型使用 合成少数民族过采样技术 (重击)。
  • 使用 HPO 训练的 SageMaker XGBoost 模型。
  • 预测每笔交易是欺诈的概率。 如果交易的估计概率超过阈值,则将其归类为欺诈。

为了演示如何在现有业务基础架构中使用此解决方案,我们还提供了一个对已部署模型端点进行 REST API 调用的示例,使用 AWS Lambda 触发 RCF 和 XGBoost 模型。

下图说明了解决方案体系结构。

先决条件

要在您自己的帐户中试用该解决方案,请确保您具备以下条件:

Studio 实例准备就绪后,您可以启动 Studio 并访问 JumpStart。 JumpStart 解决方案在 SageMaker 笔记本实例中不可用,您无法通过 SageMaker API 或 AWS命令行界面 (AWS CLI)。

启动解决方案

要启动解决方案,请完成以下步骤:

  1. 使用 JumpStart 启动器打开 JumpStart 立即购买 部分或通过选择左侧边栏中的 JumpStart 图标。
  2. 解决方案,选择 检测恶意用户和交易 在另一个 Studio 选项卡中打开解决方案。
    找到解决方案
  3. 在解决方案选项卡上,选择 实行 启动解决方案。
    启动解决方案
    已配置解决方案资源,并打开另一个选项卡,显示部署进度。 部署完成后,一个 打开笔记本 按钮出现。
  4. 打开笔记本 在 Studio 中打开解决方案笔记本。
    打开笔记本

调查和处理数据

默认数据集仅包含数字特征,因为原始特征已使用 主成分分析(PCA) 以保护用户隐私。 因此,该数据集包含 28 个 PCA 组件(V1-V28)和两个尚未转换的特征(数量和时间)。 金额是指交易金额,时间是数据中的任何交易与第一笔交易之间经过的秒数。

类别列对应于交易是否具有欺诈性。

样本数据

我们可以看到大多数是非欺诈性的,因为在总共 284,807 个示例中,只有 492 个(0.173%)是欺诈性的。 这是一种极端类别不平衡的情况,在欺诈检测场景中很常见。

数据类不平衡

然后,我们准备数据以进行加载和训练。 我们将数据分成训练集和测试集,使用前者进行训练,后者用于评估我们模型的性能。 在应用任何技术来缓解类不平衡之前,拆分数据非常重要。 否则,我们可能会将测试集中的信息泄漏到训练集中并损害模型的性能。

如果您想引入自己的训练数据,请确保它是 CSV 格式的表格数据,将数据上传到 亚马逊简单存储服务 (Amazon S3) 存储桶,然后在笔记本代码中编辑 S3 对象路径。

S3 中的数据路径

如果您的数据包含具有非数值的分类列,则需要对这些值进行一次热编码(例如,使用 sklearn 的 OneHotEncoder) 因为 XGBoost 算法只支持数值数据。

训练无监督的随机森林模型

在欺诈检测场景中,我们通常只有很少的标记示例,并且标记欺诈可能需要大量时间和精力。 因此,我们还想从手头的未标记数据中提取信息。 我们使用异常检测算法来做到这一点,利用欺诈检测数据集中常见的高度数据不平衡。

异常检测是一种无监督学习形式,我们尝试仅根据异常示例的特征特征来识别它们。 Random Cut Forest 是一种最先进的异常检测算法,既准确又可扩展。 对于每个数据示例,RCF 都会关联一个异常分数。

我们使用 SageMaker 内置的 RCF 算法在我们的训练数据集上训练异常检测模型,然后对我们的测试数据集进行预测。

首先,我们分别检查并绘制正面(欺诈)和负面(非欺诈)示例的预测异常分数,因为正面和负面示例的数量显着不同。 我们预计正面(欺诈性)样本的异常分数相对较高,而负面(非欺诈性)样本的异常分数较低。 从直方图中,我们可以看到以下模式:

  • 几乎一半的正例(左直方图)的异常分数高于 0.9,而大多数负例(右直方图)的异常分数低于 0.85。
  • 无监督学习算法 RCF 在准确识别欺诈和非欺诈示例方面存在局限性。 这是因为没有使用标签信息。 我们通过收集标签信息并在后续步骤中使用监督学习算法来解决这个问题。

预测异常分数

然后,我们假设一个更真实的场景,我们根据其异常分数将每个测试示例分类为正面(欺诈)或负面(非欺诈)。 我们为所有测试示例绘制分数直方图,如下所示,选择 1.0 的截止分数(基于直方图中显示的模式)进行分类。 具体来说,如果示例的异常分数小于或等于 1.0,则将其归类为负面(非欺诈性)。 否则,该示例被归类为正面(欺诈)。

测试样本的分数直方图

最后,我们将分类结果与真实标签进行比较并计算评估指标。 因为我们的数据集是不平衡的,所以我们使用评估指标 平衡精度, 科恩的 Kappa 分数, F1分数中华民国,因为它们考虑了数据中每个类别的频率。 对于所有这些指标,较大的值表示更好的预测性能。 请注意,在这一步中,我们还不能计算 ROC AUC,因为每个示例的 RCF 模型都没有估计正类和负类的概率。 我们在后面的步骤中使用监督学习算法计算这个指标。

. 循环碳纤维
平衡精度 0.560023
科恩的卡帕 0.003917
F1 0.007082
中华民国

从这一步,我们可以看到无监督模型已经可以实现类之间的一些分离,较高的异常分数与欺诈示例相关。

使用内置加权模式训练 XGBoost 模型

在我们收集到足够数量的标记训练数据后,我们可以使用监督学习算法来发现特征和类之间的关系。 我们选择 XGBoost 算法是因为它有可靠的记录,具有高度可扩展性,并且可以处理丢失的数据。 这次我们需要处理数据不平衡,否则多数类(非欺诈或负样本)将主导学习。

我们使用 SageMaker 内置的 XGBoost 算法容器训练和部署我们的第一个监督模型。 这是我们的基准模型。 为了处理数据不平衡,我们使用超参数 scale_pos_weight,它缩放正类示例与负类示例的权重。 由于数据集高度倾斜,我们将此超参数设置为保守值: sqrt(num_nonfraud/num_fraud).

我们训练和部署模型如下:

  1. 检索 SageMaker XGBoost 容器 URI。
  2. 设置我们要用于模型训练的超参数,包括我们提到的处理数据不平衡的超参数, scale_pos_weight.
  3. 创建一个 XGBoost 估计器并使用我们的训练数据集对其进行训练。
  4. 将经过训练的 XGBoost 模型部署到 SageMaker 托管端点。
  5. 使用我们的测试数据集评估此基线模型。

然后我们使用与上一步中提到的相同的四个指标来评估我们的模型。 这次我们还可以计算 ROC AUC 指标。

. 循环碳纤维 XGBoost
平衡精度 0.560023 0.847685
科恩的卡帕 0.003917 0.743801
F1 0.007082 0.744186
中华民国 0.983515

我们可以看到带有加权模式的监督学习方法 XGBoost(使用超参数 scale_pos_weight) 的性能明显优于无监督学习方法 RCF。 然而,性能仍有提升的空间。 特别是,将 Cohen 的 Kappa 分数提高到 0.8 以上通常是非常有利的。

除了单值指标外,查看指示每个类性能的指标也很有用。 例如,混淆矩阵、每类精度、召回率和 F1 分数可以提供有关我们模型性能的更多信息。

XGBoost 模型的混淆矩阵

. 精确 记得 f1-分数 SUPPORT
非欺诈 1.00 1.00 1.00 28435
骗局 0.80 0.70 0.74 46

继续通过 Lambda 向端点发送测试流量

为了演示如何在生产系统中使用我们的模型,我们构建了一个 REST API Amazon API网关 和一个 Lambda 函数。 当客户端应用程序向 REST API 发送 HTTP 推理请求时,会触发 Lambda 函数,该函数又会调用 RCF 和 XGBoost 模型端点并从模型返回预测。 您可以阅读 Lambda 函数代码并在 Lambda 控制台上监控调用。

我们还创建了一个 Python 脚本,它使用我们的测试数据作为输入数据向 REST API 发出 HTTP 推理请求。 要了解这是如何完成的,请检查 generate_endpoint_traffic.py 解决方案的源代码中的文件。 预测输出通过 亚马逊 Kinesis 数据流水线 交付流。 您可以在 Kinesis Data Firehose 控制台上找到目标 S3 存储桶名称,并查看 S3 存储桶中的预测结果。

使用过采样技术 SMOTE 训练 XGBoost 模型

现在我们有了一个使用 XGBoost 的基线模型,我们可以看看专门为不平衡问题设计的采样技术是否可以提高模型的性能。 我们用 合成少数过采样 (SMOTE),它通过在现有数据点之间插入新数据点来对少数类进行过采样。

步骤如下:

  1. 使用 SMOTE 对我们训练数据集的少数类(欺诈类)进行过采样。 SMOTE 从大约 0.17% 到 50% 对少数类进行过采样。 请注意,这是少数类极端过度采样的情况。 另一种方法是使用较小的重采样率,例如为每个 sqrt(non_fraud/fraud) 多数样本,或使用更先进的重采样技术。 有关更多过采样选项,请参阅 比较过采样采样器.
  2. 定义用于训练第二个 XGBoost 的超参数,以便删除 scale_pos_weight 并且其他超参数保持与训练基线 XGBoost 模型时相同。 我们不再需要用这个超参数来处理数据不平衡,因为我们已经用 SMOTE 做到了。
  3. 在 SMOTE 处理的训练数据集上使用新的超参数训练第二个 XGBoost 模型。
  4. 将新的 XGBoost 模型部署到 SageMaker 托管端点。
  5. 使用测试数据集评估新模型。

在评估新模型时,我们可以看到,使用 SMOTE,XGBoost 在平衡精度上取得了更好的性能,但在 Cohen 的 Kappa 和 F1 分数上却没有。 这样做的原因是 SMOTE 对欺诈类进行了过度采样,以至于增加了其在特征空间中与非欺诈案例的重叠。 由于 Cohen 的 Kappa 对误报的重视程度高于平衡准确度,因此该指标显着下降,欺诈案件的准确度和 F1 分数也是如此。

. 循环碳纤维 XGBoost XGBoost SMOTE
平衡精度 0.560023 0.847685 0.912657
科恩的卡帕 0.003917 0.743801 0.716463
F1 0.007082 0.744186 0.716981
中华民国 0.983515 0.967497

但是,我们可以通过调整分类阈值来恢复指标之间的平衡。 到目前为止,我们一直使用 0.5 作为阈值来标记数据点是否具有欺诈性。 在尝试了 0.1-0.9 的不同阈值后,我们可以看到 Cohen 的 Kappa 会随着阈值的增加而不断增加,而平衡精度没有明显损失。

试验不同的阈值以恢复指标之间的平衡

这为我们的模型添加了有用的校准。 如果不遗漏任何欺诈案例(漏报)是我们的优先事项,我们可以使用较低的阈值,或者我们可以提高阈值以最大限度地减少误报的数量。

使用 HPO 训练最优 XGBoost 模型

在这一步中,我们展示了如何通过超参数优化训练我们的第三个 XGBoost 模型来提高模型性能。 在构建复杂的 ML 系统时,手动探索所有可能的超参数值组合是不切实际的。 SageMaker 中的 HPO 功能可以通过代表您尝试模型的多种变体来提高您的工作效率。 它通过关注您指定范围内最有希望的超参数值组合来自动寻找最佳模型。

HPO 过程需要一个验证数据集,因此我们首先使用以下方法将训练数据进一步拆分为训练和验证数据集 分层抽样. 为了解决数据不平衡问题,我们再次使用 XGBoost 的加权模式,设置 scale_pos_weight 超参数 sqrt(num_nonfraud/num_fraud).

我们使用 SageMaker 内置的 XGBoost 算法容器创建 XGBoost 估计器,并指定客观评估指标和我们想要试验的超参数范围。 有了这些,我们然后创建一个 超参数调谐器 并启动 HPO 调整工作,并行训练多个模型,寻找最佳的超参数组合。

调优工作完成后,我们可以查看其分析报告,并根据客观评估指标检查每个模型的超参数、训练工作信息及其性能。

调优作业中每个模型的信息列表

然后我们部署最佳模型并使用我们的测试数据集对其进行评估。

在相同的测试数据上评估和比较所有模型的性能

现在我们得到了所有四个模型的评估结果:RCF、XGBoost 基线、带有 SMOTE 的 XGBoost 和带有 HPO 的 XGBoost。 让我们比较一下他们的表现。

. 循环碳纤维 XGBoost XGBoost 与 SMOTE XGBoost 与 HPO
平衡精度 0.560023 0.847685 0.912657 0.902156
科恩的卡帕 0.003917 0.743801 0.716463 0.880778
F1 0.007082 0.744186 0.716981 0.880952
中华民国 0.983515 0.967497 0.981564

我们可以看到,使用 HPO 的 XGBoost 比使用 SMOTE 方法的性能更好。 特别是,Cohen 的 Kappa 分数和 F1 超过 0.8,表明模型性能最佳。

清理

完成此解决方案后,请确保删除所有不需要的 AWS 资源以避免产生意外费用。 在里面 删除解决方案 解决方案选项卡上的部分,选择 删除所有资源 删除启动此解决方案时自动创建的资源。

通过删除解决方案进行清理

或者,您可以使用 AWS CloudFormation 删除解决方案和笔记本自动创建的所有标准资源。 要使用此方法,请在 AWS CloudFormation 控制台上找到描述包含欺诈检测使用机器学习的 CloudFormation 堆栈,并将其删除。 这是一个父堆栈,选择删除此堆栈将自动删除嵌套堆栈。

通过 CloudFormation 进行清理

无论使用哪种方法,您仍然需要手动删除您可能在此笔记本中创建的任何额外资源。 一些示例包括额外的 S3 存储桶(除了解决方案的默认存储桶)、额外的 SageMaker 端点(使用自定义名称)和额外的 Amazon Elastic Container注册 (Amazon ECR) 存储库。

结论

在这篇文章中,我们向您展示了如何使用 ML 和 SageMaker 构建动态、自我改进和可维护的信用卡欺诈检测系统的核心。 我们构建、训练和部署了一个无监督的 RCF 异常检测模型,一个有监督的 XGBoost 模型作为基线,另一个使用 SMOTE 的有监督的 XGBoost 模型来解决数据不平衡问题,以及一个使用 HPO 优化的最终 XGBoost 模型。 我们讨论了如何处理数据不平衡并在解决方案中使用您自己的数据。 我们还包含一个使用 API Gateway 和 Lambda 实施的示例 REST API,以演示如何在您现有的业务基础设施中使用该系统。

要自己尝试,请打开 SageMaker 工作室 并启动 JumpStart 解决方案。 要了解有关该解决方案的更多信息,请查看其 GitHub存储库.


作者简介

沉晓丽沉晓丽 是 Amazon Web Services 的解决方案架构师和机器学习技术领域社区 (TFC) 成员。 她专注于帮助客户在云上进行架构设计并利用 AWS 服务来获得业务价值。 在加入 AWS 之前,她是一名技术主管和高级全栈工程师,在云上构建数据密集型分布式系统。

通过 Amazon SageMaker PlatoBlockchain Data Intelligence 使用机器学习检测欺诈交易。 垂直搜索。 哎。黄鑫博士 是 Amazon SageMaker JumpStart 和 Amazon SageMaker 内置算法的应用科学家。 他专注于开发可扩展的机器学习算法。 他的研究兴趣是自然语言处理、表格数据的可解释深度学习以及非参数时空聚类的稳健分析。 他在 ACL、ICDM、KDD 会议和皇家统计学会:A 系列期刊上发表了多篇论文。

通过 Amazon SageMaker PlatoBlockchain Data Intelligence 使用机器学习检测欺诈交易。 垂直搜索。 哎。韦丹·耆那教 是一名高级 AI/ML 专家解决方案架构师,帮助客户从 AWS 的机器学习生态系统中获取价值。 在加入 AWS 之前,Vedant 曾在 Databricks、Hortonworks(现为 Cloudera)和 JP Morgan Chase 等多家公司担任 ML/数据科学专业职位。 工作之余,Vedant 热衷于制作音乐,利用科学过上有意义的生活,并探索来自世界各地的美味素食。

时间戳记:

更多来自 AWS机器学习