本文最早于 2018 年 2 月 6 日发表(原文链接)。来自安全与信任团队的 David 带领大家了解爱彼迎如何在对正常用户影响最小的前提下,高效打击信用卡盗刷的行为。

作者:David Press,Airbnb 数据科学家译者:Faye Fang,Airbnb 中国工程师

校对:Zhongjie Wu,Airbnb 中国工程经理

每个晚上,都有 191 个国家/地区的近 200 万人住在爱彼迎平台上的民宿里。而爱彼迎能够快速发展成全球大家庭的基石,是用户对平台的信任。

我们有很多方式来保障用户对平台的信任,包括预防性保护用户以及出了问题时积极响应。今天我想著重聊一聊我们防止欺诈团伙在爱彼迎平台上盗刷信用卡而采取的前瞻性措施,这些措施通常都在幕后发生。

在这篇文章中,我将介绍如何利用机器学习、实验和数据分析来识别和阻止欺诈团伙,同时最大限度地减少对正常用户的影响。 首先,我将介绍如何用机器学习模型来触发针对欺诈团伙的产品阻力。 然后,我将聊一聊我们如何通过最小化损失函数来选择模型的阈值,并深入介绍函数的每个参数:假阳性(误伤),假阴性(遗漏)和真阳性(正确识别)的成本。 最后,我将通过例子来说明阻止交易和产品阻力的区别。

打击的对象:信用卡盗刷

与所有线上业务一样,欺诈团伙时常在爱彼迎平台上盗刷信用卡。 当真正的持卡人发现他们的卡被盗刷并注意到账单上有未经授权的费用时,信用卡公司会发出拒付扣款,而商家(爱彼迎)需要返还给信用卡公司这一笔钱。

与一些竞争对手不同的是,我们会承担所有的成本,不会让房东支付拒付扣款。 为了更好地保护爱彼迎平台并减少拒付成本,我们需要大力打击信用卡盗刷。

我们有多种方式去检测欺诈行为,最主要的便是机器学习(ML)模型。这些模型是根据平台上实打实的好行为和欺诈行为来训练的。 没有一种模型是完美的,所以总会存在误伤:被模型归类为「坏事件」的好事件。在某些场景里,我们会直接拒绝用户进行操作。但在大多数场景里,我们会通过额外验证的方式让用户自证清白。这种额外验证,便是我们接下来要介绍的产品阻力。最理想的场景是,产品阻力将欺诈团伙拒之门外,对正常用户而言却十分容易完成。

我们的拒付模型会触发一些产品阻力,来确保房客是持卡人,包括随机小额预授权验证(信用卡上发起两笔随机预授权,持卡人必须登录他们的网上银行来提交预授权金额大小)和银行账单验证(要求持卡人上传信用卡账单),从而达到防止信用卡盗刷的目的。

优化模型阈值

我们根据历史交易里的正常行为和恶意行为来训练拒付模型,从而预测每一笔交易中欺诈的可能性。 由于欺诈极为罕见,我们欠缺坏行为标签,所以模型标签分类是不平衡的。 因此,我们算出每个阈值的真阳性率和假阳性率,然后通过损失函数 L 来计算所有阈值带来的总成本。

总而言之,我们的目标是最小化整体损失函数 L:

在这个函数中,FP 是总误判(伪阳性)量,G 是产品阻力下正常用户的流失率,V 是正常用户的生命周期价值(lifetime value),FN 是总漏判(伪阴性)量,C 是欺诈给平台带来的成本,TP 是总欺诈(真阳性)量,F 是产品阻力对欺诈团伙的有效程度。(「真阴性」的成本,即正确识别好用户的成本,为零,因此不会出现在损失函数中。)在下文里,我们将讨论每一个变数的估算方法。

伪阳性的成本

每一次产品阻力被错误地施加在正常用户身上,我们都有可能会损失一个正常用户。因为正常用户有可能不想或者不会完成产品阻力,从而退出爱彼迎平台。 G 代表了正常用户的流失率。

我们假设每个离开的正常用户都不会再回来,换句话说,我们失去了这些用户的生命周期价值 V。这篇文章并不会细聊我们如何计算用户生命周期价值,这是一个大小企业都会用到的概念。

好用户流失的损失等于总伪阳性数乘以预期流失损失: FP * G * V。

我们用 A / B 测试来测量产品阻力对正常用户 G 的影响。模型分数较低的用户(欺诈可能小的用户)会被分配进实验里,分为实验组和控制组,实验组会被施加产品阻力。

我们在这样的实验里究竟在测量什么? 为简单起见,我们一般选择单一的,漏斗末端的指标:成功完成预订的房客数量。 正常用户的流失率 G 定义为:1 - (实验组(有产品阻力的)成功率)/(控制组(没有产品阻力的)成功率)。

正常用户流失率的实验成本十分之高。 我们需要流失足够多的正常用户来确保实验的置信度,这意味著我们会损失掉一些订单! 为了最大限度地减少产品阻力下的正常用户,同时仍在置信区间内测量 G,实验采用了不平衡的分配,例如 95% 用户进入控制组(无产品阻力)/ 5% 进入实验组(有产品阻力)。而原因是我们可以使用 Delta 方法计算比率指标的方差:

μ_c 和 μ_t 分别是控制和实验组的平均值,σ_c2 和 σ_t2 是它们各自的方差,G = 1-μ_t/μ_c。 由于 σ_t2 是随著由成本高的实验组(有产品阻力组)的大小变化的,我们希望 σ_c2 尽可能小——这可以通过增加控制组的大小来实现。大多数时候,如果 G?1,不平衡实验只需给大约 ? 的用户施加产品阻力,就能得到 50/50 的实验里 G 同样的置信区间。

与 50/50 实验相比,不平衡实验的缺点是数据需要更长的时间才能收敛(即需要更大的总样本量)。实验组的大小需要根据每天符合实验条件的用户数量,G 的预期量值以及我们能接受的实验时间长度来定制。

伪阴性的成本

接下来,我们来看一下伪阴性的成本—— 即每个低于模型阈值的欺诈事件所造成的损失。 伪阴性的总损失是伪阴性的数量乘以每个欺诈事件的成本:FN * C.

爱彼迎承担了所有与盗刷相关的费用,而房东无需退款。 因此,总成本是盗刷金额,加上交易费用的间接成本,和信用卡被拒率的增加。

真阳性的成本

真阳性是模型正确识别出的,得分高于阈值的欺诈行为。 我们的最终目标是阻止盗刷者使用爱彼迎。如果产品阻力成功阻止了盗刷者,我们就实现了这一目标,并且没有任何损失。

事实上,没有一种产品阻力能完美阻挡盗刷者。如果盗刷者以某种方式设法完成了产品阻力,那么我们就会产生损失。 总损失是 TP *(1-F)* C,其中F是有产品阻力下的盗刷者流失率。

我们使用新的A / B实验,将高于模型阈值的高危用户分为实验组和控制组,比对这两个组来测量F。 这次不平衡的分配要被翻转了,因为不对盗刷者应用产品阻力的成本是非常昂贵的。 我们将实验里所有越过产品阻力的高危事件都进行人工审查,以减少损失。 我们通过比对实验组里的盗刷数量和控制组里人工审核出的盗刷数量来得出盗刷者流失率F。F=1就说明产品阻力对盗刷者100%有效,所以我们希望F越接近1越好。

有两点值得注意:

  • 有一种产品阻力是直接阻止交易,正如许多金融公司所做的一样。 这可以被认为是F = 1和G = 1的产品阻力。
  • 理想的产品阻力会得到F = 1,G = 0。 如果我们有这样的产品阻力,我们会将它应用到100%的场景里,因为对于正常用户是没有成本的。 不幸的是,这样的产品阻力很难得到!

正常用户流失率以及盗刷者流失率实验的示意图

示例:阻止交易与产品阻力的对比

我们来看一个虚构的例子。假设我们用历史欺诈案例训练出了一个机器学习模型。这个例子里,我们将使用 TPR = ?√[1-(1- FPR)?] 定义的虚拟 ROC 曲线。

机器学习模型里预测P(欺诈)的ROC曲线

假设欺诈事件发生的概率为 1%, 每个欺诈事件的固定成本 C = 10,并且每个正常用户的价值V = 1。 如果我们使用模型直接阻止交易(下图 a),通过阻止大约 1% 的交易,损失函数在 ~6 最小化。

如果我们使用该模型来触发对正常用户流失率 G = 10% 和欺诈者流失率 F = 95% 的产品阻力,那么通过对 11% 的交易施加产品阻力将总损失可最小化到 ~3。与阻止交易相对比,产品阻力的应用可以将总损失减少近一半!

(a): 阻止交易,F = 1,G = 1 (b): 应用产品阻力,F = 0.95,G = 0.1

进一步地,我们可以阻止最高危的交易,同时对中危交易应用产品阻力。此方法是一个上述损失函数的二维优化。

最后的一点想法

打击欺诈团伙本质上是一种对抗性业务。 我们越是积极地应用产品阻力,欺诈者再次攻击的可能性就越小 - 而上述框架并没有明确说明这种反馈循环。 出于这个原因,我们倾向于比损失函数曲线上的最优点更积极地采取行动。 当我们看到欺诈率下降时,我们也会避免过快更新我们的操作点。但如果欺诈率上升,我们会迅速采取行动并更新操作点。

事实上,欺诈团伙永远不会停止寻找攻破防御的新方法。机器学习和针对性的产品阻力只是我们努力保护爱彼迎安全的众多方式之一。我们的团队不断努力完善系统,走在欺诈团伙和羊毛党的前面,以赢得您的信任。


推荐阅读:
相关文章