云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云服务器_轻量数据库_免费领

小七 141 0

基于决策树和MLflow的大规模金融欺诈检测

在数据库里试试这个笔记本无论使用何种情况,使用人工智能大规模检测欺诈模式都是一项挑战。要筛选的大量历史数据,不断发展的机器学习和深度学习技术的复杂性,以及极少数的欺诈行为的实际例子,都相当于大海捞针,却不知道针长什么样。在金融服务业,对安全性的额外关注以及解释欺诈行为如何被识别的重要性进一步增加了这项任务的复杂性。为了构建这些检测模式,一个领域专家团队根据欺诈者的典型行为提出了一套规则。一个工作流可以包括金融欺诈检测空间中的主题专家,为特定行为组合一组需求。然后,数据科学家可以从可用数据中提取一个子样本,并使用这些需求和可能的一些已知欺诈案例,选择一组深度学习或机器学习算法。为了将模式投入生产,数据工程师可以将生成的模型转换为一组具有阈值的规则,通常使用SQL实现。这种方法允许金融机构提供一套明确的特征,从而识别出符合通用数据保护条例(GDPR)的欺诈交易。然而,这种方法也带来许多困难。使用硬编码规则集实现欺诈检测系统是非常脆弱的。欺诈模式的任何变化都需要很长时间才能更新。这反过来又使其难以跟上和适应当前市场上正在发生的欺诈活动的转变。此外,上述工作流中的系统通常是孤立的,领域专家、数据科学家和数据工程师都被分隔开。数据工程师负责维护大量数据,并将领域专家和数据科学家的工作转换为生产级代码。由于缺乏通用平台,领域专家和数据科学家不得不依赖于一台机器上的采样数据进行分析。这导致沟通困难,最终导致缺乏合作。在本博客中,我们将展示如何在Databricks平台上将几个基于规则的检测用例转换为机器学习用例,统一欺诈检测的关键参与者:领域专家、数据科学家和数据工程师。我们将学习如何创建机器学习欺诈检测数据管道,并利用从大型数据集构建模块化功能的框架实时可视化数据。我们还将学习如何使用决策树和apachespark MLlib来检测欺诈。然后我们将使用MLflow迭代和优化模型以提高其精度。用机器学习解决问题金融界对机器学习模型有一定程度的不情愿,因为人们认为它们提供了一个"黑匣子"解决方案,无法为已查明的欺诈案件辩护。GDPR的要求,以及金融法规,似乎不可能利用数据科学的力量。然而,一些成功的用例表明,应用机器学习来检测大规模的欺诈行为可以解决上面提到的一系列问题。 训练一个有监督的机器学习模型来检测金融欺诈是非常困难的,因为实际确认的欺诈行为的例子很少。然而,一套已知的识别特定类型欺诈的规则的存在可以帮助创建一套合成标签和一套初始特征。由该领域的领域专家开发的检测模式的输出可能已经通过了适当的审批流程才能投入生产。它产生预期的欺诈行为标志,因此可以作为训练机器学习模型的起点。这同时减轻了三个问题:缺乏训练标签,决定使用什么功能,为模型建立一个适当的基准。通过训练机器学习模型来识别基于规则的欺诈行为标志,可以通过混淆矩阵与预期输出进行直接比较。如果结果与基于规则的检测模式紧密匹配,这种方法有助于提高怀疑论者对基于机器学习的欺诈预防的信心。该模型的输出非常容易解释,并且可以作为与原始检测模式比较时预期的漏报和误报的基线讨论。此外,如果使用决策树模型作为初始的机器学习模型,则可以进一步缓解机器学习模型难以解释的问题。因为模型是按照一组规则训练的,所以决策树的性能很可能优于其他任何机器学习模型。当然,额外的好处是模型的最大透明度,它将基本上显示欺诈的决策过程,但不需要人为干预,也不需要硬编码任何规则或阈值。当然,必须理解的是,模型的未来迭代可能会使用不同的算法来获得最大的精度。模型的透明性最终是通过理解进入算法中的特征来实现的。具有可解释的特性将产生可解释和可辩护的模型结果。机器学习方法的最大好处是,在最初的建模工作之后,未来的迭代是模块化的,更新标签集、特征集或模型类型非常简单和无缝,从而减少了生产时间。这在Databricks统一分析平台上得到了进一步的促进,在这个平台上,领域专家、数据科学家、数据工程师可以大规模地处理相同的数据集,并直接在笔记本环境中协作。我们开始吧!摄取和探索数据我们将在本例中使用合成数据集。要自己加载数据集,请从Kaggle将其下载到本地计算机上,然后通过import data–Azure和AWS导入数据PaySim数据基于从一个非洲国家实施的移动货币服务一个月的金融日志中提取的真实交易样本来模拟移动货币交易。下表显示了数据集提供的信息:探索数据创建数据帧–现在我们已经将数据上传到Databricks文件系统(DBFS),我们可以使用sparksql快速轻松地创建数据帧#创建包含我们模拟金融欺诈检测数据集的数据框df=火花.sql("选择步骤、类型、金额、nameOrig、oldbalanceOrg、newbalanceOrig、nameDest、oldbalanceDest、newbalanceDest从sim_fin_fraud_detection中选择newbalanceDest")现在我们已经创建了DataFrame,让我们看看模式和前1000行来检查数据。#检查数据的架构df.printSchema()根|--步骤:整数(可空=true)|--类型:字符串(可为null=true)|--金额:双精度(可空=真)|--nameOrig:string(可空=true)|--oldbalanceOrg:double(null=true)|--newbalanceOrig:双精度(可为null=true)|--nameDest:string(可为null=true)|--oldbalanceDest:double(可为null=true)|--newbalanceDest:double(可空=真)交易类型让我们将数据可视化,以了解数据捕获的事务类型及其对整个事务量的贡献。为了了解我们谈论的金额,我们还可以根据交易类型及其对现金转移金额的贡献(即sum(amount))来可视化数据。基于规则的模型我们不太可能从已知欺诈案例的大量数据集开始训练我们的模型。在大多数实际应用中,欺诈检测模式是由领域专家建立的一组规则来识别的。在这里,我们根据这些规则创建一个名为label的列。#识别已知欺诈的规则df=df.WITH列("标签",F、 什么时候(((数据仓库12)和(df.金额>116万)),1)。否则(0))可视化由规则标记的数据这些规则往往标志着相当多的欺诈案件。让我们可视化标记的事务数。我们可以看到,规则将大约4%的案件和11%的总金额标记为欺诈。选择合适的机器学习模型在许多情况下,无法使用黑盒方法来检测欺诈。首先,领域专家需要能够理解为什么交易被认定为欺诈。然后,如果要采取行动,必须在法庭上出示证据。决策树是一个易于解释的模型,是这个用例的一个很好的起点。阅读这个博客"明智的老树"上的决策树了解更多。创建训练集为了构建和验证我们的ML模型,我们将使用.randomSplit进行80/20分割。这将随机抽取80%的数据用于培训,剩下的20%用于验证结果。#在训练和测试数据集之间分割数据集(列车、试验)=随机分割([0.8,0.2],种子=12345)创建ML模型管道要为模型准备数据,必须首先使用.StringIndexer将分类变量转换为数值。然后我们必须组装所有我们想让模型使用的特性。除了决策树模型之外,我们创建了一个管道来包含这些特性准备步骤,这样我们就可以在不同的数据集上重复这些步骤。请注意,我们将管道安装到培训中