Abstract

这篇论文介绍了在实际生产环境中机器学习如何发挥的重要作用。 给出的结论是:成功的基础是迭代与假设驱动的过程

1 Introduction

Booking.com 是世界上最大的在线旅游服务提供商,它可以为客户提供住所,也可以为旅馆提供用户。

  • 高风险:推荐不好用户容易流失
  • 可供筛选的搜索信息少,很多搜索都只有一个地点,时间和人数。
  • 复杂的选项:预订的时候需要用户决定很多方面的东西,比如地点,时间,住宿类型,房间号,房间类型,退款策略等。用户需要帮助来找到最合适的组合。
  • 受限的供应量:
  • 推荐经常是冷启动的:用户一年只有1到2次出行的次数,每次消费记录之间的间隔接近半年,用户的喜好可能有很大的变化。所以消费历史难以用来预测用户的兴趣点。为不同用户提供个性化服务也是他们的目标之一。
  • 内容庞杂:对于住宿的评论、说明、图片以及旅游目的地的评论、攻略等。能够利用组织这些数据给用户借鉴也是一个挑战。

过去他们尝试将机器学习用于这些方面,但是发现想驱动真正的业务影响非常困难,而且人们难以区分和理解在建模上花费的努力和实际观察到的影响,很多发行刊物上描述了机器学习特定的用例以及对业务指标的影响,但是没有发现有描述开发测试产品来通过机器学习获得商业和用户价值的过程。在这项工作中,他们分析了150种成功的面向客户的机器学习技术的应用程序,并分享了他们发现的挑战,及他们的解决方案,以及在此过程中经验教训和一般建议,这就是他们这篇论文的贡献。

后面按照开发过程的顺序介绍:初始,建模,部署,监控和评估

2 Inception: Machine learning as a swiss knife for product development 初始阶段

机器学习可以在很多非常不同环境中的产品中使用。实践中,模型被用来帮助团队改善产品并向用户学习。在一方面,机器学习可以在极其特定的环境中使用,但对应模型的适用面很窄;另一个极端是充当语义层的模型。比如分析用户旅行目的地的灵活性。也就是量化了一些潜在的用户行为指标以供开发者使用来改进产品。这种模型与具体的业务指标联系不紧密,但它们应用范围更广。

2.1 Model Families 模型家族

下面的内容介绍了他们如何分类使用这些模型。这种模型分类为机器学习的使用提供了一个大致的参考思路。

2.1.1 旅行者偏好模型

用户对旅行中的不同方面有不同的关注度,比如地点、房价、位置、质量、日期、设施等。所以他们使用一些方面作为维度,通过多个模型组合得到用户偏好描述。这一族的模型是作为语义层。比如日期语义层可以判断用户对时间是否敏感,如果用户不太关心日期,在一些情况下会有日期的推荐。

2.1.2 旅行者上下文模型

情侣、家人、朋友一同出行;在一个城市长期停留与在多个城市进行短途旅行。这些称为旅行者上下文。它定义了旅行的限制和要求。大多数的这些上下文不会在平台上明确说明。即便有相关选项但用户通常忽视,所以需要进行预测。而且越早预测越好。这种模型也是语义层,为开发者提供旅行模式的参考。比如家庭旅行时,人们很可能忘记填写儿童数量,直到最后的阶段才发现所选地点不适合儿童。如果能预测到旅行模型就可以尽早提醒用户填写儿童数量(图1a)。

2.1.3 Item Space Navigation Models 项目空间导航模型

将用户的不同操作(例如滚动,单击,排序,过滤等)视为有关用户喜好的隐式反馈。

2.1.4 User Interface Optimization Models 用户界面优化模型

字体大小,列表中的项目数,背景颜色或图像等,会对用户行为产生重要影响。这个系列的模型会针对特定目标业务指标直接优化这些参数。

2.1.5 Content Curation 内容策划

机器学习从大量庞杂的数据中如图片、结构化调查、用户评论和介绍中提取出住宿的特点和有代表性的摘要信息提供给用户,方便用户作出选择。如图1b

2.1.6 Content Augmentation 内容扩充

通过用户的数据反馈,提供更加多样的地点数据。如图1c。比如性价比、不同时间的价格趋势。

2.2 All Model Families Can Provide Value 所有模型族都能提供价值

图2中每个柱是一个模型族对某一产品核心参数的贡献,数值是用中位数进行比较。大多数模型族都是有贡献的(大于1)。这些结果是在引入模型或改进模型的适合测量出来的。

而且模型的使用会有一个迭代的过程。这个过程具有乘积效应。如图3每个柱表示在某一方面作出了改进与提升。每个柱的长度表示这次改进与第一次的相关性。所以后面的每次改进提升都会受到初始的影响。

3 Modeling: Offline model performance is just a health check 离线模型性能检测的作用

模型带来的价值通过RCTs(随机对照实验)和特定业务指标来估计。有趣的一点是模型性能提升不一定会获得价值的提升。图4显示了性能和转化率的关系。横坐标为新模型与当前模型在离线性能预测上的相对差异,纵坐标是两个模型所针对的特定业务指标的差异。图中有23对模型的比较。目测它们没有相关性,而计算也说明缺乏相关性。这个相关性的缺乏实际是在离线性能提升与商业价值的提升之间。这个现象相关的原因大概有以下几点:

  • 价值绩效饱和:在一些业务问题中无法无尽地从模型绩效收益中获得业务价值。所以在某些时候,价值与绩效曲线趋于饱和,绩效收益不会产生价值收益,或者收益太小难以观察到。
  • 细分饱和度:不太懂
  • 怪异山谷效应:当模型越来越准确地预测用户时,有时会让客户感到不安,如图5。这可能对价值产生影响。
  • 代理过度化:通常使用受监督的模型,它可以最大化某些易观察的变量,但不一定能最大化特定的客观业务指标。如由于点击率与转化率之间存在正相关的关系,机器学习通过提高点击率构建推荐系统来提高转化率。而当模型越来越好时,或许只是提高点击率,而转化率没有影响。如根据相似度推荐酒店,点击率很高,却让用户陷入选择困难。

针对这些问题,它们采用的方法依赖于一个快速循环过程:在研究假设、建立最小模型、使用结果继续迭代之间循环。

4 Modeling: Before solving a problem, design it

建模阶段需要建立机器学习模型,并用以解决当前业务案例。而关键是构建机器学习问题,这个过程输入业务案例或概念,输出明确的建模问题。之后的模型根据建模问题选择合适的方法构建。通常业务案例会给出预测目标,但目标变量和作为输入的观察向量空间并不总是给定的,这些都需要仔细选择构建。对构建出的可选问题进行比较时,可以考虑以下方面:

  • 学习困难度:由于目标向量不一定会给出,有些构造出的问题会更难以量化学习。对于分类问题,贝叶斯误差是一个好的估计。对排名问题的解决方法是将简单模型的性能和不重要的基准线(如随机、流行性)比较,那些简单模型远比基准模型好很多的问题更值得选择。
  • 数据与概念的匹配:一些构建的问题使用的数据更贴近我们要建模的概念。
  • 选择偏见:构建标签和观察空间很容易引入选择偏差。检测选择偏见很直接:对于观测空间中的样本,构造分类问题,将每个观测分类为可以计算目标变量的类别和不能计算目标变量的类别。如果这个分类问题很容易,即简单算法性能明显优于随机算法,说明偏差很严重。

对于给定业务案例和选定的问题构建,改进模型是产生价值最明显的方法,但我们也可以改变问题本身。

5 Deployment: Time is money

众所周知,在信息检索和推荐系统中,高延迟会对用户行为产生负面影响。图6是用多臂RCT来量化延迟对业务的影响。从图上可以作出假设:延迟减少可以带来转换收益。这对机器学习是很重要的。由于在很多地方使用了机器学习,保证整体延迟的最小化很有必要。为达到这一目的,采用了以下方法:

  • 模型冗余:模型的副本分布在整个集群中,以确保大流量下能提供足够的预测。
  • 内部开发的线性预测引擎:他们开发了自己的线性预测实现,可以加速所有可以简化为内积的模型
  • 稀疏模型:模型具有的参数越少,预测时所需的计算就越少
  • 预计算和缓存
  • 网络优化:将多个请求打包到一个请求包中以减小网络负载
  • 最小要素转化:为了减少计算进行更大粒度的预测

6 Monitoring: Unsupervised red flags 实时检测模型缺陷的有效工具:响应分布分析

模型处理请求的时候,需要监视输出质量,这有两个挑战:

  • 不完整的反馈:很多时候无法观察到真实的标签(预测用户的特殊要求,但只能知道进行预订的用户的标签)
  • 反馈延迟:有时候,只有在作出预测后的几天甚至几周才能得到真实标签。

因此,这些情况下,依赖于标签的参数如精度和recall是不合适的。对于二分类器的结果评估,他们使用响应分布分析(RDA)。这个方法基于响应分布图(RDC),即模型输出结果的直方图。理想的RDC在0和1各有一个峰。所以根据RDC图可以发现模型的潜在问题(图7四个情况,最后是一个正常分类情况): 略

  • 具有中心模式的平滑单峰分布可能表示模型中的个偏差或数据中的高贝叶斯误差
  • 特征层中存在缺陷
  • 模型过于稀疏
  • 一个清晰稳定点的平滑双峰分布是成功区分两个类别的模型的标志

优势: 略

  • 应用于任何评分分类器
  • 对分类的分布有鲁棒性
  • 解决了不完整反馈的问题和延迟反馈问题
  • 对类分布和特征空间的改变都很敏感
  • 类别较少时可以做修改用于多类别分类(每个分类都构造一个二元分类器区分该分类和其它所有分类)
  • 提供了一种无标签的标准方法实现在连续分数中选择一个阈值将分数转换为二维结果(选择两峰直接最小值)

缺点:

  • 这是一种启发式方法,无法证明或反正模型具有高质量
  • 不适用于估计和排名

7 Evaluation: Experiment design sophistication pays off

Booking.com 内部大量使用随机对照实验进行实验。这节用 triggered analysis(触发分析) 和 treatment design(实验组设计) 来区分特定模型和实现方法对业务指标的因果影响。

7.1 Selective triggering

RCT中,将所有对象分为对照组和实验组。如图8 左边对照组,右边实验组。在机器学习中,很多时候模型需要特定的特征才能使用,所以有时不是所有的数据对象都适用于模型。所以将不适应的数据对象也放到实验组会削弱实际模型的效果。因此应用触发分析,仅分析两组中的可触发的对象。触发就是指数据对象可以应用于模型。

7.2 Model-output dependent triggering

有时候模型的处理标准也可能取决于模型输出。此时可以设置三组实验,如图9,最左边的不使用模型,右边两组使用模型,并根据结果作为触发,但只有实验组1的会实施改变。最后会从 T1 和 T2 触发的数据中进行统计分析

7.3 Controlling performance impact

7.2 的方法可以用来区分引进新模型时,模型的功能和模型计算导致的延迟对业务指标的影响。图9中 C 和 T1 的对比是新功能和性能下降综合的影响,而 C 和 T2 的比较只包括了性能下降的影响。T1 与 T2 的比较说明了在相同延迟下新功能带来的影响。

7.4 Comparing Models

比较基于彼此进行改进的模型的处理时,通常存在很高的关联性。图10通过提取两个模型结果不一致的数据来进行统计分析。C 使用模型1,T1 和 T2 都计算两个模型,但使用的结果不同,分别使用模型1和2的结果。