在众多打车软件中,相较外来的Uber,嘀嘀、快的可能更加被国人所熟知。究竟Uber在国内的打车体验如何?到底挖掘机技术哪家强?更多相关问题,请移步最下方“阅读原文”。我们这里不写软文,只做资讯的传递者~
以下翻译自Uber官方博客,独家放送喔~ 原文链接见http://blog.uber.com/passenger-destinations
翻译:袁晶/校对:夏雅薇(转载请保留)
在最近这一期的#UberData部分,我们将向您展示数据科学细节,用来解释我们是如何运用经典的贝叶斯统计来解决一个独特的Uber问题的。
#UberData团队在今天春夏时所从事的项目之一便是确定Uber的乘客喜欢光顾哪些商家。哪种饭店?哪些机场?旅馆?乍一看,这似乎足够简单:将送客下车时的坐标逆向编码,或者利用一个公开可得,含有大量与附近商业相匹配的城市地址的数据库。
但是我们很快便意识到“临近商铺”部分恰恰为问题所在。在三藩市的某些地区,还有其他像是纽约市的一些密集城区,商铺鳞次栉比,随意挥动下你的手提包便可能触到一家饭店。而且仅仅因为你在一家店铺门前下车并不意味着你就是要到那里去。交通高峰期或是处于繁忙的交叉路口,如果能够避开交通堵塞或是多余的红灯,我们常常更乐于步行几个街区到达我们的最终目的地。
由于我们引入了UberPool(Uber应用程序的拼车选项),这里司机可以设置多个接送点,这些事件的发生仅会伴随着不断增长的频率,这意味着每个Uber乘客目的地的人气分析都会易受噪声影响而变得不够精准。
我们所需要的正是人们最终想要去哪里的信息,而不是他们想要达到那里而指定的放客下车地点。给定一段行程其下客点的经纬度坐标,我们建立一个概率模型来预测乘客最终目的地的地址。
在这篇博文中,我们将向您展示Uber是如何运用贝叶斯统计及您下车的地点,来预测您十有八九会去向何处。
我们Uber的数据
我们选取了2014年早些时候三藩市3000多名单独乘客的乘坐模式(将数据匿名化以求保护隐私)。每段行程均已被所属乘客所“标记”:当向Uber发出用车请求时,乘客已经填写了目的地。我们假设这代表了该名乘客想要前往的真正目的地,这一地址产生一个黄金标准,使得我们可以拿来比较我们模型的预测。
概率预测
每个地址都是一个离散的带有索引的单元 i=1,…,N。我们模型的目标是,给定行程中先前的一个点(下客点)、行程的时间以及乘客的其他特征和景观,精确地预测出行程结束的地址
这里
建立先验
乘客先验
乘客先验将有关乘客个人目的地的有用信息并入模型当中。直觉认为,个别乘客很可能去某些其他人不太可能去的地方(诸如他们的寓所,工作地点等等)。
于是实际上是指
注意乘客先验假设了一个封闭的全局模型:仅有乘客之前曾经到过的地址被赋予了概率(所有其他地址则被赋予了零概率)。
这个被广泛应用于定位相关算法的假设极大地简化了问题,但是明显太过天真。在现实生活中,人们有时会去之前从来未曾到过的地方。更令人担忧的是,当乘客为一个新用户时,乘客先验便会失效。位置必须是不仅曾经被到访过的;并且它们也必须曾经被观测到。(所以在这一朴素的假设下,一个新乘客无论去哪里都是零概率事件!)
为了解决这一难题,我们为先验添加了两个额外的组成:Uber先验和热门地点先验。
Uber先验
Uber先验采取了更宽的视角,同时探寻Uber乘客同时可能前往某处的真相。
图1:Uber先验和乘客先验的一个样例被绘制在地图上。圆圈半径越大,意味着训练数据中有更多的行程被带入那个位置。
热门地点先验
除了乘客先验和Uber先验,我们假设在数据集中只有三藩市的地址才是被乘客常去的。这很显然不够准确。热门地点先验是我们的“无所不包”先验,由涵盖1000家商铺的数据构成,能够很好的适用于下面所列出的三藩市内每个垂直行业:
餐饮
夜生活
旅店
购物
博物馆
医疗卫生
联合先验
将3个先验联合使用能够有良好的覆盖。乘客先验大概涵盖你经常到访的地点。Uber先验涵盖你朋友们常去的地点(并且反之是你可能去的地方,例如你朋友的寓所)。热门地点先验涵盖其它需要注意的地点。某些地点将在多于一个先验中被追踪,并且当然,也有些地点会落于所有三种描述之外。(希望这些情况少之又少。)
我们暂时取,,我们希望能大致了解每个先验对精确度的影响。
建立似然部分
乘客往往不愿意距离他们最终目的地太远被放载(见下方图2)。直觉上说,距卸客点越远的地址,可能性越小。
图2:卸客点与最终目的地间距离的分布。红色竖线表示80%分位数。
我们用似然将这一直觉正式化:P(Y=y|D=i).
现在这一似然看起来像什么?我们利用一个高斯分布对其进行建模,将和取其极大使然估计和。一个高斯分布参数的极大似然估计MLE恰好为数据的样本均值和方差,于是
同时还需要考虑卸客点落入临域的情况。在状况并不复杂的街区,乘客或许连50米都不愿意走,而在交通拥挤的市中心,下车地点便很有可能是乘客最终试图到达地点附近的一个街角。
为了捕捉这一变化,我们为每个邮编都对独立的变量进行拟合,即
于是,具有观测到的卸客点-目的地距离差异为
这一似然的第二部分可能是暂时的。根据一天中不同的时间和一周内的不同日子,某些地点相较其它可能更容易出现。通勤模式意味着人们在早上会前往位于旧金山金融区的办公大楼,而在晚上离开;夜总会之行不大可能发生在周一早晨,但是去往餐馆可能发生在晚上5点至8点。
为了对这些趋势建模,我们采用
推导后验
在之前的章节中,我们介绍了先验和似然部分。将这些部分相乘,我们可以得到一个正比于后验概率
这个假设是简化的,因为确实很有可能Y和t 之间存在某种交互作用。基本上,时间可能影响人们愿意Uber出租车到目的地走多远(但是目前我们假设这种效应是很小的)。
图3:正确预测测试实例的一个后验分布示例:三藩市萨克拉门托街1348号
结论
我们采用经典的机器学习技术评估我们的模型,将数据分拆为测试集和训练集,以确保我们的模型不是被恰好设定为我们数据集中一组特定的片段。
我们通过每一个检验行程进行迭代,首先输出距卸客点方圆100米内的一个候选地址列表。然后,计算每个候选的后验概率。我们选用最大后验估计(maximum a posteriori,缩写为MAP):也就是说,我们选择具有最大后验概率的地址。我们检查这个地址是否与真实地址相吻合。
我们发现,我们的模型有74%的概率能够准确地预测出正确的地址。
考虑一个典型的城市街道上可能存在的商业的绝对数量。4次中大约能有3次,我们可以准确地识别出哪些地方拥有乘客前往的诸多可能性——所有都不依赖于附加信息和背景。
将我们的模型结果与2个基准进行比较:朴素基准和智能基准。朴素基线中做了一个随机选择的候选人的位置,取得了40%的准确率。智能基准选取最近的候选位置,取得了44%的准确率。因此,我们对于如何选出最终的目的地有一些替代选择,在这一背景下,总的来说,我们的模型在确定我们要帮助人们到达何处的问题上,算是一个良好的开端,但是还不足以好到让我们停止思考这类问题。
我们下一步将往哪儿走?
我们的乘客目的地模型是# UberData团队正致力于改进Uber乘客用户体验的一种方法。这个项目的扩展涉及建立更复杂的先验和似然。比如,一个直觉是,人们可能会去那些与他们频繁造访的地点接近的地方。(例如,他们家附近的餐馆,或他们的工作场所附近的地铁站。)我们可以用一个被指定为二维高斯分布的附加先验来描绘。
原文发布时间为:2014-10-10
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号