专栏首页机器学习AI算法工程欺诈预测机器学习模型设计:准确率和召回率

欺诈预测机器学习模型设计:准确率和召回率

Airbnb网站基于允许任何人将闲置的房屋进行长期或短期出租构建商业模式,来自房客或房东的欺诈风险是必须解决的问题。irbnb信任和安全小组通过构建机器学习模型进行欺诈预测,本文介绍了其设计思想。假想模型是预测某些虚拟人物是否为“反面人物”,基本步骤:构建模型预期,构建训练集和测试集,特征学习,模型性能评估。其中特征转换倾向于采用条件概率编码(CP-coding),评估度量是准确率(Precision)和召回率(Recall),通常偏向于高召回率。

在Airbnb网站上,我们专注于创造一个这样的地方:一个人可以属于任何地方。部分归属感来自于我们用户之间的信任,同时认识到他们的安全是我们最关心的。

虽然我们绝大多数的社区是由友好和可靠的房东和房客组成,但仍然有一小部分用户,他们试图从我们的网站中(非法)获利。这些都是非常罕见的,尽管如此,信任和安全小组还是因此而产生。

信任和安全小组主要是解决任何可能会发生在我们平台的欺诈行为。我们最主要目的是试图保护我们的用户和公司免于不同类型的风险。例如:退款风险——一个绝大多数电子商务企业都熟悉的风险问题。为了减少此类欺诈行为,信任和安全小组的数据科学家构建了不同种类的机器学习模型,用来帮助识别不同类型的风险。想要获得我们模型背后更多的体系结构信息,请参考以前的文章 机器学习风险系统的设计

http://nerds.airbnb.com/architecting-machine-learning-system-risk/

在这篇文章中,我对机器学习的模型建立给了一个简短的思维过程概述。当然,每个模型都有所不同,但希望它能够给读者在关于机器学习中我们如何使用数据来帮助保护我们的用户以及如何改善模型的不同处理方法上带来一个全新的认识。在这篇文章中,我们假设想要构建一个这样的模型:预测某些虚构的角色是否是反面人物。

试图预测的是什么?

在模型建立中最基本的问题就是明确你想要用这个模型来预测什么。我知道这个听起来似乎很愚蠢,但很多时候,通过这个问题可以引发出其它更深层的问题。

即使是一个看似简单的角色分类模型,随着我们逐步深入地思考,也可以提出许多更深层的问题。例如,我们想要怎样来给这个模型评分:仅仅是给当前新介绍的角色还是给所有角色?如果是前者,我们想要评分的角色和人物介绍中的角色评分相差多远?如果是后者,我们又该多长时间给这些角色评分呢?

第一个想法可能是根据人物介绍中给每个角色的评分来建立模型。然而,这种模型,我们可能不能随着时间的推移动态地追踪人物的评分。此外,我们可能会因为在介绍时的一些“好”的特征而忽略了潜在的反面人物。

相反,我们还可以建立这样一个模型,只要他/她出现在情节里面就评分一次。这将让我们在每个时间段都会有人物评分并检测出任何异常情况。但是,考虑到在每个角色单独出现的情况下可能没有任何的角色类别发展,所以这可能也不是最实际的方法。

深思熟虑之后,我们决定把模型设计成介于这两种想法之间的模型。例如,建立这样一种模型,在每次有意义的事情发生的时候对角色进行评分,比如结交新盟友,龙族领地占领等等。在这种方式下,我们仍然可以随着时间的变化来跟踪人物的评分,同时,对没有最新进展的角色也不会多加评分。

如何模拟得分?

因为我们的目的是分析每个时期的得分,所以我们的训练集要能反映出某段时间某个角色的类别行为,最后的训练数据集类似于下图:

与每个角色相关的时间不一定是连续的,因为我们关心的是那些有着重要事件发展的时间。

在这个实例当中,Jarden在3个不同的场合有着重要的角色发展并且在一段时间内持续扩充他的军队。相比之下,Dineas 在5个不同的场合有着重要的角色发展并且主管着4个龙族中心基地。

采样

在机器学习模型中,从观测数据中下采样是有必要的。采样过程本身很简单,一旦有了所需要的训练数据集,就可以在数据集上做一个基于行的采样。

然而,由于这里描述的模型是处理每个角色多个时期的样本,基于行采样可能会导致这样一种情况,即在建立模型的数据和用来验证的数据之间,场景附加的人物角色被分离开。如下表所示:

显然这并不是理想的采样,因为我们没有得到每个角色的整体描述,并且这些缺失的观测数据可能对建立一个好的模型至关重要。

出于这个原因,我们需要做基于角色的采样。这样做能确保在模型数据建立中包含所有场合附加的角色,或者什么都没有。

此外,当我们将我们的数据集切分为训练集和测试集时,通常这样的逻辑也适用。

特征设计

特征设计是机器学习不可或缺的一部分,通常情况下,在特征种类的选择上,对数据的充分理解有助于形成一个更好的模型设计思路。特征设计的实例包括特征规范化和分类特征处理。

特征规范化是标准化特征的一种方式,允许更合理的对比。如下表所示:

从上表可知,每个人物都有10,000个士兵。然而,Serion掌权长达5年,而Dineas仅仅掌权2年。通过这些人物比较绝对的士兵数量可能并不是非常有效的。但是,通过人物掌权的年份来标准化他们可能会提供更好的见解,并且产生更有预测力的特征。

转换分类特征最常见的方法就是矢量化(也称作one-hot encoding)。然而,在处理有许多不同级别的分类特征时,使用条件概率编码(CP-coding)则更为实用。

CP-coding的基本思想就是在给定的分类级别上,计算出某个特征值发生的概率。这种方法使得我们能够将所有级别的分类特征转化为一个单一的数值型变量。

然而,这种类型转换可能会因为没有充分描述的类别而造成噪音数据。在上面的例子中,我们只有一个来自House 为 “Tallight”的观测样本。结果相应的概率就是0或1。为了避免这种问题的发生并且降低噪声数据,通常情况下,可以通过考虑加权平均值,全局概率或者引入一个平滑的超系数来调整如何计算概率

那么,哪一种方法最好呢?这取决于分类特征的数量和级别。CP-coding是个不错的选择,因为他降低了特征的维数,但是这样会牺牲掉特征与特征之间的互信息,这种方法称之为矢量化保留。此外,我们可以整合这两种方法,即组合相似的类别特征,然后使用CP-coding处理整合的特征。

模型性能评估

当谈及到评估模型性能的时候,我们需要留意正面角色和反面角色的比例。在我们的例子模型中,数据最后的统计格式为[character*period](下表左)。然而,模型评估应该以角色类别测量(下表右)。

结果,在模型的构建数据和模型的评估数据之间的正面人物和反面人物的比例有着明显的差异。当评估模型准确率和召回率的时候分配合适的权重值是相当重要的

此外,因为我们可能会使用下采样以减少观测样本的数量,所以我们还需要调整模型占采样过程的准确率和召回率。

评估准确率和召回率

对于模型评估的两种主要的评估度量是准确率(Precision)和召回率(Recall)。在我们的例子当中,准确率是预测结果为反面角色中被正确预测为反面角色的比例。它在给定的阈值下衡量模型的准确度。另外,召回率是模型从原本为反面角色当中能够正确检测出为反面角色的比例。它在一个给定的阈值下以识别反面人物来衡量模型的综合指标。这两个变量很容易混淆,所以通过下表会更加的直观看出两者的不同。

通常将最后的数据划分为四个不同的部分:

  • True Positives(TP):角色是反面人物,模型预测为反面人物;
  • False Positives(FP):角色是正面人物,模型预测为反面人物;
  • True Negatives(TN):角色是正面人物,模型预测为正面人物;
  • False Negatives(FN):角色是反面人物,模型预测为正面人物;

准确率计算:在所有被预测为反面人物中,模型正确预测的比例,即TP /(TP + FP)。

召回率计算:在所有原本就是反面人物中,模型正确预测的比例,即TP / (TP + FN)。

通过观察可以看出,尽管准确率和召回率的分子是相同的,但分母不同。

通常在选择高准确率和高召回率之间总有一种权衡。这要取决于构建模型的最终目的,对于某些情况而言,高准确率的选择可能会优于高召回率。然而,对于欺诈预测模型,通常要偏向于高召回率,即使会牺牲掉一些准确率

有许多的方式可以用来改善模型的准确度和召回率。其中包括添加更好的特征,优化决策树剪枝或者建立一个更大的森林等等。不过,鉴于讨论广泛,我打算将其单独地放在一篇文章当中。

结束语

希望这篇文章能让读者了解到什么是构建机器学习模型所需要的。遗憾的是,没有放之四海而皆准的解决方案来构建一种好的模型,充分了解数据的上下文是关键,因为通过它我们能够从中提取出更多更好的预测特征,从而建立出更优化的模型

最后,虽然将角色分为正面和反面是主观的,但类别标签的确是机器学习的一个非常重要的部分,而不好的类别标签通常会导致一个糟糕的模型。祝建模快乐!

注:这个模型确保每个角色都是正面角色或者是反面角色,即如果他们生来就是反面角色,那么在他们的整个生命当中都是反面角色。如果我们假设角色可以跨越类别标签作为中立人物,那么模型的设计将会完全不同。

英文原文: Designing Machine Learning Models: A Tale of Precision and Recall(译者/刘帝伟 审校/刘翔宇、朱正贵 责编/周建丁)

http://nerds.airbnb.com/designing-machine-learning-models/

本文分享自微信公众号 - 大数据挖掘DT数据分析(datadw)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-03-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • KDD CUP 2018 前4 名解决方案公开: AI预测空气质量

    今年的KDD将关注空气质量问题。在过去几年中,空气质量问题已经影响了很多发展中国家的大城市。2011年,康奈尔大学空气质量专家Dane Westerdahl在接...

    机器学习AI算法工程
  • 解析Tensorflow官方PTB模型的demo

    RNN 模型作为一个可以学习时间序列的模型被认为是深度学习中比较重要的一类模型。在Tensorflow的官方教程中,有两个与之相关的模型被实现出来。第一个模型...

    机器学习AI算法工程
  • 深度学习模型训练的一般方法(以DSSM为例)

    本文主要用于记录DSSM模型学习期间遇到的问题及分析、处理经验。先统领性地提出深度学习模型训练过程的一般思路和要点,再结合具体实例进行说明。全文问题和解决方案尽...

    机器学习AI算法工程
  • 入门 | 用机器学习进行欺诈预测的模型设计

    Airbnb网站基于允许任何人将闲置的房屋进行长期或短期出租构建商业模式,来自房客或房东的欺诈风险是必须解决的问题。Airbnb信任和安全小组通过构建机器学习模...

    昱良
  • 中国团队两冠一亚包揽KDD CUP三项大奖,作者亲述技术细节

    【新智元导读】近日,有数据挖掘领域“奥运会”之称的KDD Cup 2018比赛结果出炉。今年的主题为空气质量预测,中国团队Getmax包揽三项大奖,获得两项第一...

    新智元
  • KDD CUP 2018 前4 名解决方案公开: AI预测空气质量

    今年的KDD将关注空气质量问题。在过去几年中,空气质量问题已经影响了很多发展中国家的大城市。2011年,康奈尔大学空气质量专家Dane Westerdahl在接...

    机器学习AI算法工程
  • 降低预测过程计算成本,这些NLP模型压缩方法要知道

    近年来,基于谷歌Transformer的语言模型在神经机器翻译,自然语言推理和其他自然语言理解任务上取得了长足进展。

    AI科技大本营
  • 5步将您的机器学习模型投入生产!

    构建出色的机器学习系统时,需要考虑很多因素。但是经常发生的情况是,我们作为数据科学家其实只担心项目的某些部分。

    用户6543014
  • 谷歌教你学 AI-第四讲部署预测模型

    翻译/校对: Mika 本文为 CDA 数据分析师原创作品,转载需授权 Google Cloud发布了名为"AI Adventures"的系列视频,用简单易懂的...

    CDA数据分析师
  • 概率图模型理论与应用

    故事尾音

扫码关注云+社区

领取腾讯云代金券