其他

结合机器学习与生物医学技术,寻找Uber司机出行模式

2017-12-27 2018倒计时 AI前线

作者|Qing Feng,Peter
译者|CarolGuo
编辑|Emily
AI 前线导读:机器学习在 Uber 改善应用程序的用户体验方面发挥着核心作用。鉴于 Uber 业务的规模和范围,我们经常需要创造性地思考如何设计这些系统。譬如,在开发合作伙伴活动矩阵(Partner Activity Matrix,一种基于总体使用趋势的个性化司机体验的新工具)时,我们从基因组可视化的生物医学技术(基因组双聚类)中找到了灵感。

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

通过使用双聚类,我们可以通过表达每个司机伙伴选择的出行时间来可视化司机伙伴模式,例如,一个司机可能更喜欢工作日出行并在中间休息一天;另一个司机可能更喜欢周末晚上出行,这样可把其他时间留给自己的工作;而再另一个司机可能更倾向于平日下午(当他们的孩子还在学校时)。驾驶出行模式有着无限的可能,所以,以紧凑而丰富的方式来描述这种多样性并考虑到所有司机的偏好有助于我们改进 Uber 的体验。

本文中介绍了我们的合作伙伴活动矩阵,它结合双聚类和机器学习来更好地了解应用程序中司机体验的多样性,帮助我们根据他们的偏好量身定制产品。

Uber 合作伙伴活动矩阵简介

可视化这些模式的一种方法就是通过“合作伙伴基因表达矩阵”,更准确地说,它是一个合作伙伴活动矩阵。在基因组里,基因表达被表示为矩阵,每一行代表一个基因,而每一列对应一个个体。合作伙伴活动矩阵就是受到这种表示法的启发,其中,矩阵中的每一列对应一周中的一分钟,而每一行对应于一个司机伙伴,每一个单元格的值表示该伙伴在线(1)或离线(0)。下图 1 显示了某个城市一周内的合作伙伴活动矩阵,其中白色部分表示在线时间,黑色部分表示离线时间。

图 1: 一个合作伙伴活动矩阵例子,每一行代表一个合作伙伴,每一列表示一周内的某一分钟(按照周一到周日排序)。X 轴上方显示了一周内的每一天,X 轴下方显示了一天内的每一个小时,白色表示合作伙伴在线,而黑色表示离线。

一个城市的合作伙伴活动矩阵代表着合作伙伴出行模式,但它缺乏可解释性,难以直接使用。为了使这个工具更容易使用,我们需要一个更简单的方法来描述这些模式和它们所代表的用户。

用双聚类来组建合作伙伴活动矩阵

组织活动矩阵并使其更易于理解的一种方法是使用称为光谱双聚类(spectral biclustering)的机器学习技术。在基因组学中,双聚类对基因表达矩阵的行和列都进行聚类,识别行为相似的基因簇和个体集群。每个集群中的个体倾向于表达相同的基因簇,并且每个簇中的基因倾向于由相同的个体集群表达。如果我们对基因表达矩阵的行重新顺序,以使得同一集群中的个体相邻,并以相同的方式对列进行排序,那么得到的矩阵具有棋盘图案,其中棋盘上的方块是大致恒定值的块。

我们使用这种方法来同时对合作伙伴活动矩阵的行(伙伴)和列(周时间)进行聚类,以识别具有关于何时出行的共同偏好的伙伴集群以及由同一伙伴同时优选的一周时间集群。通过使用合作伙伴集群,我们快速了解对 Uber 平台提出的更改会如何影响以不同方式使用该平台的司机们,以及如何设计在各种使用范围内都会有所帮助的更改。我们可以看看变化对每个集群的影响,而不是看对每一个司机伙伴的估计的影响,后者是一个非常嘈杂和耗时的过程。这是我们用双聚类的主要目的,尽管通过提供有意义的时间聚合(而不是单独处理每一个小时)对时间进行聚类可以提高其他一些算法的计算和统计效率。

与传统的单向聚类方法(如 k- 均值)相比,光谱双聚类方法趋向于创建更准确的司机伙伴群,因为在这些多小时的时间段而不是单个小时的时间段内,分组时间和测量司机伙伴聚合行为的相似度往往会使集群对噪声更有鲁棒性,可解释性也更强。光谱双聚类将描述每个伙伴出行时间的高维向量影射到简洁的低纬度出行模式,然后用这些挖掘出的模式对司机进行聚类。相反,k- 均值对高维向量直接聚类,可能会被不相关的差异所误导。

在下一节中,我们将介绍实现这一强大技术的算法。

光谱双聚类算法的应用

   

图 4: 我们用 SVD 来计算合作伙伴活动矩阵的分解和近似。

结果

使用光谱双聚类来仔细检查出行模式突出了工作日和周末活动之间的差异。下面的图 6 和图 7 显示了由光谱双聚类提供的一个显著的司机伙伴群。这些合作伙伴定期在工作日上午 6 点到下午 6 点之间开车,在周末的同一时间不太定期,在周六的出行时间更多,在周日更少。我们称这个合作伙伴群为“白天司机”。下面的图 6 显示了合作伙伴活动矩阵中的这些合作伙伴的行,其中白色表示合作伙伴在线时的一个小时:

图 6: 白天司机的合作伙伴活动矩阵,只包括了矩阵中与白天司机集群中的司机相对应的行。他们在线时间为白色,主要集中在工作日和周末的早上 6 点到下午 6 点,周末的在线司机数量略少些。

下图 7 显示了工作日与早晚高峰时段相对应的高峰值,上午高峰时段更为突出,周末中午更平滑更小

图 7:上面提到的白天司机集群的司机们通常在早上六点到晚上六点之间出行,工作日司机数量更多,特别是早晚高峰时间,周末时司机数量较少。

下面的图 8 和图 9 描述了另一个显著的司机伙伴集群。他们在晚上出行,通常在晚上 6 点左右开始,在半夜到凌晨三点之间结束:

图 8:在我们的夜间司机伙伴活动矩阵中,在线时间(白色显示)主要是晚上 6 点到工作日的半夜,周五和周末晚上会延长到凌晨三点左右。

图 9:一天内每个小时内夜间司机的比例,表明某些出行模式在晚上 6 点到工作日的凌晨 1 点,周五和周末的晚上会延长到凌晨 2 点。

如上图所示,我们的合作伙伴活动矩阵可以很容易地确定某些人群中的驾驶出行偏好。例如,星期一到星期五夜间司机在下午六点开始。因为他们接送刚下班的乘客回家,在这个时候在网上一小部分司机展示了第一个高峰。周六和周日,这个第一个高峰出现在晚上七点,对应于晚上出门的乘客。在周日到周四晚上,午夜之后在线司机的比例急剧下降,因为大部分乘客已经回家了,而周五和周六晚上的活动并没有减少,直到凌晨 2 点到 3 点。

工作日和周末的司机合作伙伴活动形成了鲜明的对比,揭示了 Uber 的司机合作伙伴如何在傍晚提供方便、安全的交通工具,并在夜间从餐馆和酒吧接送乘客到家,为乘客和城市提供支持。

合作伙伴活动矩阵的潜力

上面描述的合作伙伴活动矩阵用例只是我们机器学习团队为提高应用程序效率、性能以及最重要的用户体验所做的努力的快照。

利用合作伙伴活动矩阵,光谱双聚类也揭示了其他重要的合作伙伴集群:

  • 早上高峰时段开车的合作伙伴

  • 主要在周二、周三和周五早上高峰时段开车的合作伙伴

  • 中午开车的合作伙伴

  • 平日夜间高峰时段(从下午四点开始),最晚到晚上的伙伴

通过对这些不同集群类型进行简单易懂的分类,Uber 更加深入地了解到司机合作伙伴如何使用该平台,从而使我们更容易为司机和乘客改进我们的产品。

关于作者

Qing Feng 和 Peter Frazier 是 Uber 市场优化数据科学团队的数据科学家。Peter 同时也是康奈尔大学运筹学与信息工程学院的副教授。

参考文献

[1] Kluger, Y., Basri, R., Chang, J. T., & Gerstein, M. (2003). Spectral biclustering of microarray data: coclustering genes and conditions. Genome research, 13(4), 703-716.

[2] Asgarian, N., & Greiner, R. (2006). Using rank-1 biclusters to classify microarray data. Department of Computing Science, University of Alberta, Edmonton, AB, Canada.

[3] Lee, M., Shen, H., Huang, J. Z., & Marron, J. S. (2010). Biclustering via sparse singular value decomposition. Biometrics, 66(4), 1087-1095.

查看英文原文:

https://eng.uber.com/activity-matrix/

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存