专栏首页企鹅号快讯结合机器学习与生物医学技术,寻找Uber司机出行模式

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

作者|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/

本文来自企鹅号 - AI漫游媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 互联网时代,如何成为优秀的web前端开发者?

    互联网技术发展日新月异,成为成为一名优秀的web前端开发者,需要不断学习,关注行业前沿。 本经验贴分享如何成为优秀web前端开发者的经验,供读者参考。 步骤1 ...

    企鹅号小编
  • 周集:好用的工具和网站

    上次提到的软件下载的页面已经写完了,接下来就是往页面中丰富内容,我会放一些自己用过的比较好用的软件工具,下载地址,有官方网站的我会放上官方网站的地址,没有的话,...

    企鹅号小编
  • 日韩区块链倡导组织通力合作

    来自日本和韩国的两个区块链倡导组织正在通力合作,倡导更广泛地使用此种新技术。 据公告显示,自11月份起,韩国区块链开放论坛(KBOF)和日本的区块链协作联盟(B...

    企鹅号小编
  • Android Retrofit 单元测试 Unit Test

    后端返回的结果都比较统一,一般包含 code,msg, data,创建的 model 使用泛型。

    iOSDevLog
  • 学什么编程语言以后不会过时?

    从事软件开发十几年,刚入行的时候C语言还是非常强势的一种编程,现在第一语言已经换成了JAVA,没有永不过时的编程语言,因为科技在进步,编程语言一样也在进步,不要...

    程序员互动联盟
  • Kali Linux Web渗透测试手册(第二版) - 8.8 - 使用CMSmap扫描Drupal

    thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt,

    用户1631416
  • ElasticSearch(7.2.2)-es集群索引分⽚管理

    cwl_java
  • Excel图表学习59: 绘制时间线图

    选择数据单元格区域A1:B17,单击功能区“插入”选项卡“图表”组中的“散点图”,得到原始图表如下图3所示。

    fanjy
  • Caffe(2)--LeNet网络各层参数详解

    “LeNet” 1、Data Layer 输入图像为:12828,对应ChannelsHeightWidth

    对角巷法师
  • 感觉当今市场上直接跟C语言挂钩的工作越来越少,C语言真的过时了吗?

    从事嵌入式开发多年,用C语言编程至少十几个年头,到现在也没觉得这门编程语言已经过时了,只是从明面上讲不如以前光鲜,现在JAVA,Python等集成度比较高的编程...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券