分析了自家150个ML模型之后,这家全球有名的旅行网站得出了6条经验教训
在许多媒体文章中,我们都能看到「机器学习赋能 XX 行业」的字眼,但这种「能量」究竟体现在哪些方面,企业在引入机器学习模型的过程中要注意哪些问题,很多文章都没有说清楚。在今年的 KDD 大会接收论文中,全球最大的线上旅行代理网站 Booking.com(缤客网)贡献了一篇论文,分析了他们面向客户的 150 个成功的机器学习应用以及从中得到的六条经验教训。本文是对这篇论文的简短总结。
「150 successful Machine Learning models: 6 lessons learned at Booking.com」是一篇绝佳的综述,它结合了 Booking.com 大约 150 个面向客户的成功的机器成功应用以及从中得到的经验教训。奇怪的是,虽然论文的标题这么写了,在正文中却从未明确列出这 6 条经验教训。不过,我们可以从论文的划分中推断出这些部分,以下是我的解读:
- 使用机器学习模型的项目会创造巨大的商业价值
- 模型的性能不等同于经营业绩
- 弄清你正在尝试解决的问题
- 预测的延迟是个重要问题
- 及早获取模型质量的反馈
- 用随机对照试验测试你的模型的商业影响力(第二点中也有提到)
当然,这篇论文中的好建议可不止这六条。
我们发现,发挥真实的商业影响力极为困难,更何况,将在建模方面所做的努力和观测到的影响力之间的联系分离开来好好理解原本就是一件难事。我们主要的结论是:要用机器学习打造出这 150 个成功的产品,其根本在于,要有一个迭代的、由假设驱动的流程,并结合其他学科。
别把这段引文解读为不值得在机器学习上投资。与之相反,我认为正如 DevOps 的现状报告中所提到的高效能组织具有的所有其它特质一样,提升一个组织设计、构建以及在面向用户的场景中成功部署机器学习模型的能力,对于提升该组织的竞争力有根本性的作用。(而且,如果能在未来的报告中看到有数据证实或者证伪那个假设,不也是很有意思嘛!)
Booking.com 在构建模型时需要解决那些问题?
你大概听说过 Booking.com,「世界上最大的在线旅行社」。给用户传递良好的旅行体验是个有挑战性的任务,主要有以下几个因素:
推荐的风险很高——预订到一个错误的住处,可比播放一部你不喜欢的电影糟糕多了!
用户在预订旅程的时候,对于他们真正期待的东西往往没有给足信息。
住宿的供给受限,价位变动会影响住客的选择倾向。
住客的选择偏好在他们每次使用平台的时候都可能发生变化(比如说,如果每年只预订一两次)。
住宿的相关信息过多,用户无法及时消化。
这 150 个模型都是什么模型?
目前已经有大约 150 个机器学习模型部署到了生产中,因此,机器学习已经触及了 Booking.com 用户体验的方方面面。有些模型非常具体,聚焦于特定背景下的特定情形;另外一些模型则像一个语义层,对某些在多种语境下都能派上用场的概念进行建模,比如基于用户旅程的终点预测该用户灵活性的模型。
Booking.com 所使用的模型可分为六个大类:
- 旅行者偏好模型:在语义层工作,对用户的偏好做出各种预测。(如灵活度)
- 旅行者背景模型:同样在语义层,预测旅程发生的背景(如家庭出行、与朋友出行、商务出行、……)
- 条目空间导览模型:追踪用户的浏览记录,使得推荐能整体考虑用户个人历史记录和整个目录。
- 用户界面优化模型:优化背景图片、字体大小、按钮等 UI。有趣的是,「我们发现没有某个特定的值是整体最优值,所以我们的模型会根据背景和用户信息,来确定最佳的用户界面。」
- 内容策展模型:策划并选择性地展示人工生成的内容,如评论。
- 内容扩充模型:计算一个旅程所含元素的附加信息,如当前哪些选择物超所值,或者某个区域内的价位趋势。
经验教训 1:使用机器学习模型的项目会创造巨大的商业价值
在 Booking.com,以上各类模型都提供了商业价值。而相比其它那些没有使用机器学习的成功项目,基于机器学习的项目往往创造出更高的回报。
图 2:各类模型相对于影响力中位数的商业影响力
而一旦投入使用,除却即刻的商业利益,它们往往会继续成为产品进一步发展的基石。下图显示了一系列产品部署的影响力,每一个都基于前者,又继续改善商业产出。
图 3:关于某推荐产品的一系列实验。每个实验测试了一个专攻某个领域的新版本或某个机器学习问题的设定。条形的长度为相对于初版的观测值(都有显著的统计学差异)
经验教训 2:模型的性能不等同于经营业绩
Booking.com 通过随机对照试验衡量模型在某些商业指标上的影响力,以此来预估模型产生的价值。
我们有一项有趣的发现:提高模型的性能未必就能增加商业价值。
原因可能有以下几点:商业价值的饱和(无论你做什么,都没什么再能榨取的了)、受众较少导致的部分饱和(新老模型效果大致相同)、对某些不能成功转化为商业指标(如转化率)的间接指标(如点击量)的过度优化、以及下图中所阐释的恐怖谷效应(人形玩具或机器人的仿真度越高人们越有好感,但当超过一个临界点时,这种好感度会突然降低,越像人越反感恐惧,直至谷底,这种效应被称为恐怖谷)。
图 5:恐怖谷:人们有时候并不喜欢太过精准的预测(基于马尔科夫链的目的地推荐器)。图中的用户抱怨称:「booking.com 怎么知道我在去萨尔斯堡之前要先去维也纳?」
经验教训 3:弄清你正在尝试解决的问题
在开始构建模型之前,有必要花时间去对你要解决的问题做一个仔细的定义。
构建问题的过程把某个商业案例或者概念作为输入,把一个定义好的建模问题(通常是一个有监督的机器学习问题)作为输出,以此找到一个好的解决方案来为这个商业案例或概念建模。
有些令人惊叹的改进并非来自于在给定体系下对模型进行优化,而是来自于改变体系本身。比如,把基于点击数据的用户偏好模型改为基于住客评论数据的自然语言处理问题。
我们发现,通常最佳的问题并不是那些我们能直接想到的,而改变问题的设定能有效解锁隐藏价值。
经验教训 4:预测的延迟是个重要问题
关于性能对于商业指标的影响力,我们还有另一个重要的点。在一个介绍合成延迟的实验中,Booking.com 发现,如果延迟增加 30% 左右,转化率就会下降 0.5%。「对我们的经营来说,这是一个相关成本。」
对于机器学习模型来说,这个尤为相关,因为它们需要强大的计算资源来做预测。即使是数学上简单的模型,也有可能引入攸关结果的延迟。
Booking.com 采取多种方法降低模型引入的延迟,包括分发多个模型副本来达成横向扩展、自研定制版线性预测引擎、更偏好参数少的模型、批量请求以及预计算和/或缓存。
经验教训 5:及早获取模型质量的反馈
当模型处理请求时,监控输出质量非常重要,但至少有两个问题不太好解决……
难以观测到真实标签,导致反馈不完整。
反馈延迟,比如,在用户预订时模型预测了用户是否会留下评论,但直到旅行完成后才能评定这个预测是否准确。
Booking.com 在这样的情形下有一招对于二分类问题效果不错,就是看模型产生的回应的概率分布。「有一个清晰稳定点的平滑双峰分布,大都表明模型能够成功分辨两个类别。」其它形状(见下图)则表示这个模型或许遇到了一些困难。
图 7:回应分布图的例子
……证据表明,对回应分布的分析非常有用,帮助我们在早期就能够探测出模型中的缺陷。
经验教训 6:用随机对照试验测试你的模型的商业影响力
这篇文章中考察的机器学习成功案例,大都伴随着精巧的实验设计出现,有的实验设计引导了开发的流程,有的则是为了检测影响力。
文中提供了在不同情况下如何设定实验的建议。
- 当不是所有被试都有资格参与某个变化的时候(比如他们没有模型所需的特征),在有资格的被试子集里创建实验组和对照组。
图 8:对选择性触发的实验设计
- 如果模型产生的结果只在一些情况下影响用户体验,那么进一步限定实验组和对照组的范围,使模型在这个范围里能产生用户可见的输出(当然在对照组里看不到)。为了评估性能的影响,增加第三个控制组,完全不调用模型。
图 9:对依赖模型输出的触发的实验设计,以及衡量性能影响的控制组
- 比较模型的时候,我们感兴趣的是两个模型不一致的情况。我们使用只调用了当前模型的控制组(假设我们在测试比对当前模型和一个候选的改进版本)。这样的话实验设计就是这样的: