在机器学习不断进步并逐步影响各行各业的过程中,它也开始逐渐渗透到审计领域。作为一名数据科学家和前审计员,我深刻理解为何这一进程相对缓慢。
审计本质上是一项注重细节和异常研究的工作,而机器学习则通常侧重于广泛的数据推断。审计关注的是历史数据分析,而机器学习解决方案则倾向于预测未来事件。尽管如此,大多数审计人员缺乏在工作中熟练运用机器学习所需的教育或编程技能。接下来,我将展示我们如何利用机器学习解决Uber特定的审计问题,并探讨如何将我们的方法和架构扩展到其他审计数据问题上。
所谓的“现金中介”,即代理,是指第三方供应商充当公司与其他供应商之间的中介。公司需要这样的中介,因为它们可能在某些国家开展业务,而这些国家的一些当地供应商无法通过公司的应付账款系统操作。例如,如果公司想购买一批鲜花,但当地的花店无法通过公司的系统处理交易,那么一个已注册的代理将用现金帮助公司完成这笔交易。代理随后会在下一张账单中加入这些费用作为服务费,公司也会向代理报销这些费用。
这个例子虽然简单,但却是合法的。然而,这种交易模式如果不加以控制,可能会带来一些风险。例如,如何确保花店合法经营?鲜花的实际价格是多少?代理向公司收取的费用是否合理?花店和代理之间是否存在利益冲突?代理的存在是否被用来规避与花店经营者的利益冲突,或者掩盖回扣和贿赂行为?
对于Uber来说,这些代理过去都是由全球各地的本地团队手动聘请的,但公司并不清楚具体情况。由于我们已经进行了多次欺诈调查,我们知道这些代理确实存在。
然而,仍然存在一些问题:我们究竟有多少供应商被用作代理?这些代理被用于哪些情况?从地理分布来看,这些代理又出现在哪里,解决了多少问题?
由于缺乏系统的记录,我们最初通过询问本地团队并建立启发式方法来寻找这些代理。随后,我们将这个流程转换为SQL查询,但这种方法的局限性显而易见。我们认为,代理和非代理之间的关系比想象中更加复杂,特别是在涉及潜在特征数量方面。创建一个逻辑门,其数量应等于SQL中每个特征的唯一组合数,这是不可行的,因此我们假定机器学习可以帮助解决这个问题。
此外,我们只有少量带有标签的数据样本(来自本地团队的确认代理)。数据来源方面,我们从支出管理平台中提取数据,并获取交易类型、描述、金额、货币等特征。
挑战与应对
数据可用性
一个主要障碍是我们没有大量的标签数据和可用数据。通过对本地团队的初步调查,我们发现477个供应商中有47个被标记为代理。从数据科学家的角度来看,这些样本不足以训练任何有效的模型。为了增加样本数量,我们将数据集从供应商扩展到了采购订单。
数据标签
标签主要集中在那些被确认为代理的供应商上。相反,我们无法确认消极标签是否准确。审计人员都知道,主动确认(当有人明确告诉你某事是否正确时)通常比被动确认(当有人被要求在某事看起来不对时才回复)更好。为了解决这一问题,我们应该在每次评估中将召回率作为目标,根据实际业务需求优先考虑其他目标。
研究过程
降维
在对分类特征(如货币和部门)进行虚拟编码后,我们最终得到了近300个特征。这里我们可以考虑降维,降维通常可以提高训练速度和模型性能。我们采用主成分分析(PCA)方法对100个成分进行了分析,但解释的方差仅为36%。这表明我们需要保留所有特征以捕捉整体情况,因此我们通过模型推导出所有可用特征。
实验
模型v1的设计与结果
在第一次迭代中,我们采用了K-最近邻(KNN)算法。这些特征包括美元金额和四种高风险交易类型的存在。在采购订单级别的预测中,K∈1,3,5,7,9的准确率约为92%。在供应商级别的预测中,最高的准确率达到88%。作为简化模型,它表现得相当不错。但需要注意的是,数据严重不平衡,准确率的计算需要基于基线。在这种情况下,91%的基线准确率意味着模型的预测效果并不明显。
经验教训
在评估模型性能时,确保基于基线进行评估。在本例中,我们使用了基线准确率。
模型v2的设计与结果
在第二次迭代中,我们仅在采购订单级别上使用随机森林分类器。这样做主要是为了快速训练模型,以便了解特征的重要性以及分类的可行性。经过4倍交叉验证,我们观察到平均准确率为95.9%,具体表现为准确率为95.8%,召回率为97.5%。尽管结果看似乐观,但仍需谨慎对待。首先,我们假设所有标记供应商的交易都是积极标签。其次,我们需要的是供应商级别的预测,而不是交易级别的预测。同时,还需要在模型中加入供应商级别的特征。
经验教训
尽管预测结果可能高于基线,但仍需仔细审查由模型生成的预测数据,并牢记我们的目标是预测单一供应商,而非交易。
最终架构设计
针对标签和可用数据不足的问题,我们设计了一个双模型架构。我们建立了一种基于交易级数据和供应商级数据的特征的最终架构。这只能通过双模型架构实现,其中一个模型依赖于前一个模型的预测。
首先,我们建立了一个基于树的模型,无论是随机森林还是梯度提升决策树。在部署前对梯度提升决策树和随机森林模型进行了调整。第一个模型将尝试根据交易级数据进行预测,比如货币、部门、金额和描述。如果这些交易看起来有问题,就将其称为一级预测。在调整第一个模型时,我们优化了召回率,因为我们希望最小化假阴性。
单一模型体系结构的缺陷
仅采用单一模型体系结构,无论是逻辑还是技术都有缺陷。首先,我们的目标是预测代理,而非交易。单独的模型将试图预测交易,而非代理。其次,有些特征无法通过交易级数据编码,例如每个供应商的商品种类数量。因此,在进行一级预测后,下一步是根据供应商汇总结果。在这个过程中,我们选择统计供应商进行交易的独特实体数量(例如,Uber和Uber BV是不同的实体),统计每个供应商的独特交易类型数量,并取每个供应商预测交易的平均值。例如,如果一个供应商有10笔交易,其中8笔交易被第一个模型预测(未标注),那么该供应商在汇总中得分为0.80。
最终预测
最后,支持向量机(SVM)模型将应用这些特征进行最终预测。通过对SVM模型进行调整,考虑到不平衡数据,优化了平衡准确率得分。
为什么没有使用朴素贝叶斯?
由于我们不知道先验概率是多少。我们只知道这些标签数据是一批手工挑选的供应商,但不清楚它们占所有供应商或交易的比例。因此,我们没有理由使用朴素贝叶斯。
模型性能
下面是供应商数据在“二八开”时的训练和验证得分。由于阳性标签数量较少,因此在拆分数据时进行了分层处理。
以下是模型与整个数据集拟合后的混淆矩阵,供参考。
验证分数及置信区间
以下是验证分数及其95%的置信区间。虽然在每个统计量的点估值之间存在明显差异,但两个模型之间的置信区间有较大的重叠。将模型应用于实际生产中,随着数据量的增加,置信区间将变窄,点估计将变得更准确。
模型架构对比
为了评估单模型架构和双模型架构的效果,最好的方法是将交易级预测结果按供应商汇总。对于基准测试,如果某个供应商有一个积极的预测,我们假设该供应商是预测的代理。这种方法虽然有些极端,但在实际应用中,如果我们只对交易进行预测,那么我们将在调查可疑供应商时使用预测结果。
结论
在评估哪种模型最佳时,我们将表3中的验证分数作为基准,根据这些分数做出判断。考虑到这些结果,我们部署了随机森林-SVM架构作为最终架构,不仅是因为其性能,还因为它训练和超参数调优的速度非常快。随机森林算法可以在几分钟内执行RandomSearchCV,而梯度提升决策树则需要超过6个小时的调优。当然,随机森林可能会过拟合,但由于目前的数据规模,难以评估。不过,在获得新数据时,我们需要保持并重新调整模型,并相应地进行重新评估。在此过程中,根据模型预测,选取多数供应商,用更有力的证据支持审计,并对当前问题进行量化。
借助这一项目,我们可以更加自信地为管理层提供全面的信息,回答诸如每个国家有多少代理、交易数量、支付总金额、过去三年的演变情况及使用情况等问题。这将使我们了解到管理层之前未曾察觉的问题,并为我们提供关于如何让合适的领导者参与解决业务风险的重要洞察。本文提出的方法也可用于其他审计,值得进一步研究。
作者简介
Jesse He,数据科学家,Uber外部审计公司数据科学团队的创始成员。在Uber,致力于推动外部审计的边界,热衷于学习和运用创新的机器学习解决方案来解决旧问题。他在普渡大学获得了MIS、会计和金融专业的学士学位,期间还学习了航空工程和航空航天管理,并获得了商业飞行员执照。