码迷,mamicode.com
首页 > 其他好文 > 详细

A cost-effective recommender system for taxi drivers

时间:2015-12-06 15:51:08      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:

一个针对出租车司机有效花费的推荐系统

摘要

    GPS技术和新形式的城市地理学改变了手机服务的形式。比如说,丰富的出租车GPS轨迹使得出做租车领域有新方法。事实上,最近很多工作是在使用出租车GPS轨迹数据来开发手机推荐系统。这些系统可以推荐一系列的载客点,为了使得在最短的驾驶距离里最大可能地找到一个乘客。然而,在现实世界中,出租车的收入和有效的驾驶时间息息相关。换句话说,对一个出租车司机来说,在找到一个乘客前知道一个确切地驾驶路径来缩短驾驶时间更加重要。最后,在本文中,我们提出了开发一个收益比高的推荐系统。开发的目的是使得按照推荐的路径寻找乘客获得最大化收益。特别地,我们首先定义了一个净利润目标函数来评价驾驶路径的潜在的收益。然后,通过挖掘出租车历史轨迹,我们开发了一个图来表示一个路网,并且提供了一个暴力的方法来生成推荐的最佳驾驶路径。然而,沿着这个方法,一个关键的挑战是图的计算的巨大开销。因此,我们开发了一个新的递归策略,基于净利润函数的特殊形式,有效地寻找最佳候选路径。特别地,不同于推荐一个连续的载客点并且让司机决定如何到达这些点这种方法,我们的推荐系统能够提供一整条驾驶路线,并且出租车司机通过推荐能够找到获得最大潜在在收益的乘客。这就使得我们的推荐系统相对其它已有的推荐系统更加实用并且收益更多。最终,我们在一个现实世界的数据集上开展了实验,数据集来自San Francisco Bay地区,并且实验结果清楚地验证了我们提出的推荐系统的有效性。

关键词:Cost-E ffective, Mobile Recommender Systems, Taxi Drivers

1. 简介

GPS技术和新形式的城市地理学改变了手机服务的形式。比如说,丰富的出租车GPS轨迹使得出做租车领域有新方法。事实上,最近很多工作是在使用出租车GPS轨迹数据来开发手机推荐系统。这些系统可以推荐一系列的载客点,为了使得在最短的驾驶距离里最大可能地找到一个乘客。然而,在现实世界中,出租车的收入和有效的驾驶时间息息相关。换句话说,对一个出租车司机来说,在找到一个乘客前知道一个确切地驾驶路径来缩短驾驶时间更加重要。最后,在本文中,我们提出了开发一个收益比高的推荐系统。开发的目的是使得按照推荐的路径寻找乘客获得最大化收益。特别地,我们首先定义了一个净利润目标函数来评价驾驶路径的潜在的收益。然后,通过挖掘出租车历史轨迹,我们开发了一个图来表示一个路网,并且提供了一个暴力的方法来生成推荐的最佳驾驶路径。然而,沿着这个方法,一个关键的挑战是图的计算的巨大开销。因此,我们开发了一个新的递归策略,基于净利润函数的特殊形式,有效地寻找最佳候选路径。特别地,不同于推荐一个连续的载客点并且让司机决定如何到达这些点这种方法,我们的推荐系统能够提供一整条驾驶路线,并且出租车司机通过推荐能够找到获得最大潜在在收益的乘客。这就使得我们的推荐系统相对其它已有的推荐系统更加实用并且收益更多。最终,我们在一个现实世界的数据集上开展了实验,数据集来自San Francisco Bay地区,并且实验结果清楚地验证了我们提出的推荐系统的有效性。(作者话太多,用摘要代替一下,这不是关键)

2. 相关工作

    现在很多人在个性化推荐系统上做了大量工作,但是这些系统都是围绕一些传统的算法,基于内容的推荐,基于协同过滤的推荐,混合推荐等。都是一些根据网上的信息,给用户推荐电影、文章、书籍、或者网页之类的。大多数数据都是来自用户的评分,来自手机系统的很少。

    在手机上的个性化推荐系统比其它传统领域更加具有挑战,主要因为:空间数据的复杂性、时空数据内在的关系、不明确的情景感知角色、增长的环境感知能力的可用性。确实,手机环境下的推荐系统以前已经做过研究[1, 3, 5, 6, 12, 19, 20]。比如说,[1,5]手机路线导航。对手机用户提出了个性化情景推荐框架。[30]提出了一些技术机遇,与手机推荐系统[20]相关。Aver-janova等人开发了一个基于地图的手机推荐系统,可以提供一些个性化推荐给用户。然而,以上工作大多数都是根据用户的评分和互动,相应的推荐系统也是为智能设备比如说智能手机开发。确实,为出租车行业构建手机推荐系统的问题仍然是大有空间的。

    近来,丰富的出租车GPS轨迹使得出做租车领域有新方法。大量精力投入到了使用出租车轨迹数据做手机推荐系统。这些系统能够从历史的轨迹数据中提取出energy-ecient的交通模式,并且为出租车司机推荐潜在的载客点。这类系统能个提供一系列最佳的载客点。Powell等人[16]提出了一个基于网格的方法来为出租车司机建议盈利的地点,通过建立一个时空的盈利地图。此外,Yuan等人[24,25,26]对移动智慧展开了一系列的研究,通过夸大公交轨迹,比如说基于概率模型来进行载客点侦测,并且为出租车司机和乘客两者都提供位置推荐。本文不同于以上的研究,我们提议开发一种新奇的推荐系统,能够提供一整条驾驶路线,而不是离散的载客点,司机通过这种推荐就能够发现最大的潜在利润。

3. 问题陈述

    这章,我们首先介绍一下定义一些预备知识,然后为出租车司机正式定义最大净利润Maximum Net Pro t(MNP)的问题。

3.1 预备知识

3.1.1  路网的定义(Road Network Formulation)

定义1(路段)。一个长的街道通过交叉口可以被划分成若干个路段r,特别地,每一个路段r都是有一个起点r.s和一个重点r.e组成。此外,每一个路段r有很多的相邻的线段组成了一个集合r.next[],表示的含义是如果 ri.s=r.e ,ri就属于r.next[]。

    定义2(路径)。一个路径R是一系列的连接的路段组成,例如技术分享,同时技术分享,R的起点和终点可以表示成 R.s=r1.s 以及 R.e=rn.e。

    定义3(路网)。一个路网G可以表示成一个图G=<V,E>,V={ri}表示节点的集合(包含了所有的路段),E表示边的集合,满足技术分享

    图1展示了一个路网。从图中看出,每一个节点表示一个路段。注意,每一条边只有一个方向。这是因为我们不允许出租车掉头再在同一个路段往回走,这在显示生活中不推荐,因为有很大的可能性会造成交通事故。然而,司机可以可以通过3个路段绕一圈,比如说r1,r2,r7。

技术分享

    3.1.2 净利润的计算 (Calculation of Net Profit

    对于每个路段r,净利润g(r)由两个部分组成,也就是可能的利润(potential earning) 以及可能的花费(potential cost)。特别地,我们定义了路段r可能的利润为e(r),通过以下方式来计算:

技术分享

    (我对这个公式的理解就是这个路段的平均一个客人的花费*概率,也就是说利润的数学期望)

    在这里,Nr表示的是在路段r特定的时间段里的载客量,Fee(i; r)是是指在路段r从第i个乘客身上的利润,P(r)指的是在路段r载到客的可能性(这个会在第四节介绍)。另一方面,在路段r可能的花费可以通过以下方式来计算:

技术分享

    在这里,L(r)指的是路段r的长度,Gas指的是单位距离里面(比如说每英里)耗油的价格,T(r)指的是通过路段r所需要的时间,公司的花费(CompanyFee)指的是单位时间(比如说1分钟)工作花费。事实上,T(r)是和实时的交通状况息息相关的。比如说,交通阻塞会导致较高的T(r),因此会带来较高的花费(T(r)*CompanyFee)。在这样的情况下,这个路段不会被我们的模型所推荐。因此,路段r的净利润,比如说叫做g(r),可以表示为:

技术分享

    通过以上的定义,我们可以进一步定义每一个路径R的净利润。特别地,当给定一个路径技术分享从r1出发,它的总的净利润可以通过以下方式来计算:

技术分享

    凭直觉,路径R的净利润是R所包含的的路段{ri}的净利润之和,这是在之前的路段(比如说r1到ri-1)没有载到任何乘客的前提下衡量的。

    实际上,在净利润的的概率上,司机不会考虑到远离他当前所在位置的路段,因为利润的期望是十分低的。更具体的说来,当增加一个路段到路径中时,我们可以定义净利润的平均增长率技术分享来表示净利润的增长。图2展现了对于增加不同数量的路段以及不同载客概率时,净利润的增长率的趋势。我们可以观察出在增加5条线段以后,增长率就低于了10%。

技术分享

    事实上,在我们的实验中,每个路段平均载客的概率通常是低于0.1的,因此,可能要设置一个上界技术分享对于公式4中的路径长度M。通过以上的定义,我们可以正式地给MNP推荐问题做出如下定义。

(此处应该有3.2,3.2 问题陈述 )

  定义4(问题陈述)。给定一个司机当前的位置LCab属于r,一个具体的驾驶距离M,并且有一系列的候选路径技术分享,对于任意R属于技术分享,满足R从r开始。MNP推荐问题就是推荐一个路径R*属于技术分享,这个路径拥有最大的净利率,例如:

技术分享

    不同于已有的其它出租车司机推荐系统,它们主要关注于提取出耗时和收益比高(energy-efficient)的交通模式——基于时间/距离,并且为出租车司机推荐一系列的可能的载客点[25, 26, 8],MNP推荐问题集中于为出租车司机提供一整条驾驶路径。按照这个路线(思路),解决MNP推荐问题有两个主要的挑战。第一点,如何从历史载客数据中计算线段r的参数g(r),P(r) 。第二点,如何从复杂的有向环路的路网中有效的搜索出一个最佳路径。在接下来的一节,我们将介绍我们的解决方案对应这两个挑战。

    (我认为这篇论文的作者标号也太差了吧,3,3.1,3.1.1,3.1.2,否则直接3.1,3.2不就完事了?)

4. 最大净利润(MAXIMUM NET PROFIT (MNP))推荐

在这一小节,我们将介绍MNP推荐问题解决方法的技术细节。

4.1 估计参数,通过road buff er

为了精确的获得出租车司机当前的位置和估计净利润的参数,比如说P(r)和g(r),我们为每个路段开发了road buff er 评估。特别地,在地理信息系统中,一个buffer是指在空间对象附近有特定距离一个区域。buffer的边界是离这个对象等距离的实线solid line(此处应该是论文的作者有点笔误,应该是虚线dashed line)。图3(a)解释了不同的buffer操作,比如说一个点,三线段以及一个三角形的buffers[21]。从直观来看,人们愿意等待在路边的出租车,而不是路中央的,并且出租车的载客点通常在路边。因此,当计算历史载客事件的数目时,我们需要在每个路段周围构建一个buffer,通常就像一个矩形包围了这条道路。特别地,buffer的大小取决于现实世界中不同问题额需求。

技术分享

    为了建立road buff er ,首先,我们需要定义垂直的道路和水平的道路。更具体的来说,通过使用每个路段的起点和终点的经度(longitude)和纬度(latitude),我们可以计算出这个路段正切(tangent)值。如果这个正切值比1大,我们认为这个对应的道路是一个垂直的道路,否则,它就是一个水平的道路。对于每一个垂直的道路,我们保持它的起点的经度和终点的经度不便,并且向西和向东拓展对应的纬度。对于一个水平的道路,我们保持它起点和终点的纬度不变,并且将它的经度向北和南拓展。例如,图3(b)展示了对垂直的道路和水平的道路的buffer操作。

    给定历史载客数据以及road buff ers ,我们就能够计算在每一个路段r载客事件的数目,这解释了当出租车经过每个路段时,发生一个载客事件有多么频繁。让 技术分享表示在路段r的buffer区出租车空闲的次数,让技术分享表示在路段r的buffer区出租车有载客事件的次数。因此,对于每个路段r,载客时间的概率P(r)可以估算如下:

技术分享

    在路段r中的第i次历史载客事件,我们也能够得到公式1中的收益Fee(i; r)。此外,路径的距离L(r)和实时的驾驶时间T(r)可以从历史数据中估算得出或者借助一些额外资源,比如说谷歌地图。因此,净利润g(r)可以通过公式3得出。特别地,每个路段T(r),g(r)和P(r)的值可以预先存储在对应的路网(例如,图1)的节点上。

4.2 MNP 路径推荐

    在这一小部分中,我们介绍如何通过不同策略解决MNP推荐的问题。

4.2.1 暴力推荐策略

在获得路网之后,我们可以利用它来生成候选路径用于MNP推荐。在最后,我们首先提出一个暴力策略来完成了这个任务,基于广度优先搜索的算法。特别地,推荐的算法如算法1所示。在这个算法中,我们保持一个路径队列Q,为了生成一个候选路径集合C,然后第五步函数MNP(C)被用来在候选集合C寻找最佳路径,也就是最大利润的。然而,这个搜索MNP路径的暴力方法并没有什么软用,因为它检查了所有在G中长度为M的所有可能的路径。

技术分享

    引理 1. 给定一个固定的驾驶长度M以及路网G={V,E},满足|V|=N,通过暴力算法需找一个最佳的MNP路径的计算复杂度是技术分享

    证明:显然,总共候选路径在路网中的数目是技术分享的,并且计算每个路径净利润需要M次操作。因此,搜索最佳MNP路径的复杂度是技术分享

    直观感受到,这个暴力算法的计算复杂度太高了以至于不能满足现实世界应用的需求。有一些算法可以节省到达时间——现实世界中的高速公路。在最后,我们会进一步提出另一个推荐策略,基于净利润函数的递归特性。

4.2.2 递归推荐策略

通过观察路径的净利润的表达形式,我们可以把公式4重写为如下形式:

技术分享

    同时技术分享。实际上,总的净利润这种特殊的形式可以通过递归算法来实现。在最后,对于每个路段r1,我们可以把所有候选路径从r1开始的作为一个递归树结构。特别地,每个路段的递归树被定义成了以下形式。

    定义5 (递归树)。路段r1的递归树技术分享是一棵树,它的每一个节点表示的是路段同时树根是r1。此外,对于在递归树中的每一个节点ri,它的孩子的节点集合等于ri.next[]。

技术分享

    例如,图4展示了路段A的递归树的一个样例。在这篇文章中,我们提出了一个方法RTree(r,M)位的是为r构建一个深度为M的递归树技术分享,这在算法2中有所体现。特别地,通过我们的算法获得的这颗树技术分享将保留M个节点的技术分享 技术分享,这代表了在树中第i层的的节点。通过这个结构,从r1开始的MNP推荐可以递归地被划分成若干个更简单的MNP推荐任务。拿图4作为一个样例,我们可以开发一个由底向上的方法来计算长度为3的MNP路径,它的净利润可以表示成G(A,3)。特别地,根据净利润的定义,我们可以获得G(A,3)=g(A)+(1-P(A))*max{G(B; 2);G(C; 2);G(F; 2);G(E; 2)},在这里长度为2的MNP路径的净利润同样可以通过它们的子路径计算净利润。例如,我们图中有G(B; 2) = g(B)+(1-P(B))*{maxfG(D; 1);G(I; 1)},并且每一个个体的路段(例如叶子节点)的利润可以直接计算,例如g(D)。因此,给定一个递归树r,我们可以获得一个路径长度为M的MNP路径通过递归M-1次。

技术分享

    特别地,在这篇文章中,我们为MNP推荐开发了一个递归算法rNMP(r;K),如算法3所示。通过我们的算法,令参数r = r1同时K = M,那么长度为M的MNP路径从路段r1开始的相应的MNP值就可以得到。

技术分享

    引理 2. 假定一个深度为M的递归树技术分享,对于任意r属于技术分享,|r.next[]|<=N,通过递归方法寻找一个最佳的MNP路径的复杂度是技术分享

    证明:假设寻找G(R,r1,M)的计算花费是T(M),很显然我们会得到技术分享技术分享。此外,对于任意的r满足|r.next[]|=N,计算可以被划分成N个子问题。特别地,对于路径只有一个路段的,我们得到T(1)=1。同时,在递归M-1次后,我们得到技术分享技术分享。因此,通过递归树寻找最佳MNP路径的计算复杂度是技术分享

    尽管递归树比暴力算法可以取得更有效的推荐,但是计算花费会随着M的增大而急剧上升。根据第3节的讨论,我们可以设置一个M的上界技术分享,因为在M>5之后平均利润增长力会变得十分低。因此,我们在我们的实验中设置技术分享=5。

4.3 Top-K 路径推荐

    通过以上算法,我们的推荐系统可以为单个司机推荐了一条MNP路径。但是,在实际生活中,一个理想的推荐系统必须能够同时地为同一个区域里面的多个出租车司机提供推荐。在这节,我们着重于这个问题并且为这种现实世界里的推荐处理介绍一种最小冗余策略。

    从直觉感受到,一个直接的推荐策略是为所有的司机推荐最佳的驾驶路径。然而,如果我们同时为太多的司机推荐同一条路径,这会导致一个过载问题并且会降低推荐系统的表现。过载问题是一个经典的问题,已经被广泛的研究。例如,负载平衡机制在多个web服务器之间分发请求,为的是减少执行时间[22,10]。在我们的问题中,我们可以把多个空的出租车看成是任务,多个最佳的驾驶路径看作是计算机。不是通过探索已有的负载均衡的算法来解决过载问题,而是我们想要集中于手机推荐系统的偏转特性并且开发了一个基于方向的聚类方法(DEN)[29]来分配空车,遵循top-K最佳驾驶路径[9,23]。

    在推荐驾驶路线给出租车司机之前,我们首先标记所有的候选路径根据它们的净利润并且获得top-K驾驶路线。在推荐给第一个司机排名靠前的路径后,我们需要计算这条路径和剩下的K-1条候选路径之间的相关性,并且随后把相关性最低的路径推荐给第二个司机。

    为了计算这些候选路径之间的相关性,我们首先把空间划分成格子并且把每个格子的移动数据转变成一个向量,它代表了在这个格子移动方向的概率。然后,我们把出租车移动的方向信息转变成同样的数据格式,并且进一步把每个小格子划分成8个方向的bin。例如,在图5(a)中,每个bin的角度拥有技术分享的范围。下一步,我们把每个格子划分成一个方向的向量g=(p1,p2,p3,......,p8),在这里pi指的是这个格子往i方向移动的概率,并且技术分享,在这里fi是指穿过这个格子并且方向是沿着方向i的移动物体的频率。

技术分享

    举个例子,如图5(b)所示,我们首先把路径A推荐给第一个司机,路径B,C和D是其它的候选路径在相同的时间和相同的地点。然后我们把空间划分成了小格子并且获得了每个格子的向量。一条与之前推荐的路径相关性最低的候选路径通常是一开始的驾驶方向就不同的。因此,我们只需要分析前n个格子来决定驾驶方向。我们把n个格子的向量结合起来并且对于每条候选路径得到了一个8*n个元素的向量。例如,路径A的向量g(A) = (p11,p12,......pn7,pn8)。然后,我们为每对候选路径的向量计算相关性。因此,A和B的相似度可以被计算成技术分享。如果路径B和路径A之间的相关性最低,我们将把B推荐给下一个空车。

5. 实验结果

去验证提出的系统的效率和有效性,在现实世界旧金山区域收集了30天的数据集,并在上面做到了广泛的试验。

5.1 实验数据

技术分享

出租车GPS轨迹。 在这个实验中,我们使用探索馆收集的现实世界的出租车GPS轨迹。移动的轨迹是车辆连续时间驾驶状态,每一个记录用一组表示,(latitude, longitude, fare identi er,time stamp)。通过清理数据集,我们总共获得了89897个载客和下车时间。总的来说,我们假设大多数司机会按照谷歌地图建议的驾驶路线,因此我们可以得到关于特定的行程的价格并且票价信息也能够被用来计算这次关注的行程的利润。紧接着的图6就是一个例子,展示了100个出租车司机在旧金山湾区30天的载客点,每一个红点就表示了一次载客事件。图7是一个载客概率的热图示意。在这里,不同的颜色和圆的面积表示不同的载客可能性。这张图展示了在旧金山商品街有很多载客的活动,这是一条十分繁忙的街道,有很多购物的地方和博物馆。其它的载客热点包括Fisherman‘s Wharf, Divisadero St, Cathedral Hill 以及 Western Addition。

技术分享

路网数据。 因为旧金山的路网数量不充足。我们通过使用谷歌地图API来构建路网。首先,我们寻找所有在旧金山的街道的名称。第二步,我们运行谷歌API来找出是否两个道路之间有交叉。我们记录在每个交叉点留下一个记录。图8(a)解释了我们的交叉点。然后,我们用交叉点来寻找它最近的4个方向上的点并且把这五个点连接起来。因此,我们可以获得4条不同的相连的路段,由起点和终点组成。但是,如图8(b)所示的黄色的线,我们或许碰巧连接了两个交叉点,但是它们之间并没有路径。为了解决这个问题,我们通过坐标计算了两个交叉点的距离,并且拿它和谷歌地图计算的驾驶距离对比。如果如果两点之间有路径,这两个距离应该十分接近。如果不接近的话,说明这两个交叉点之间没有路径,我们从路网集合中删除这个路段。

技术分享

    旧金山区域路网集合包含了5391条路,每一条都是由ID,起始点,终点还有我们所计算的历史载客概率以及每条路段的净利润。对于每一个路段,大量中间点的坐标可能被记录,有一些是噪声点。移除这些噪声点后,我们选取了高载客率的2149条路来为我们实验服务。然后,我们可以通过起始点和终点在这些路段上构建road buffer。

    通过把路网的载客坐标和出租车数据集匹配,我们能够得到87688能够在路段上定位的有效载客事件,因此,两个数据集合并在一起,每一个载客点都被映射到了构建好的road buffer中。为了实现提出的算法,我们还需要计算载客率以及这些路段的每个路段的净利润。这在第4节已经展现过。

    最终,我们得到了每个路段的起始点和终点,同时还有载客率、净利润以及平均驾驶时间。注意,驾驶时间是用每个路段的距离/旧金山区域驾驶的平均速度估计的。

5.2 在推荐上实验研究

在这里,我们提供了两组实验。第一组实验是在花费有效路径推荐上的实验,另一组实验是在top-k推荐上的实验。

5.2.1 一组在花费有效路径推荐上的实验

    在这里,我们展示了两个MNP路径推荐的样例,依据的是我们的两个算法,并且将它与谷歌地图推荐的路径作对比。特别地,在图9和图10中,在为目标车辆随机选取起始位置的情况下,我们绘画了我们的推荐系统建议的最佳驾驶路线。我们也假设司机的期望的巡航长度是5,并且在每5个路段之后,系统会使用当前的位置作为新的起始点来寻找并重新启动这个推荐进程。为了作对比,我们计算了实际的每段出租车的行程的开车时间,并且重新启动我们的推荐系统直到在MNP路径里面的驾驶时间等于实际驾驶时间。然后我们连接这些MNP路径到一起并且这是一整条路径需要推荐给司机的。在这些图中,左边一张图是MNP推荐系统推荐的行驶路径,右边这张图是谷歌地图通过最短驾驶距离推荐的路径。然而,谷歌地图推荐的路径不能最大化出租车的利润。

    近来,大多数推荐系统只能推荐一系列热点给出租车司机。没有一个这样的推荐系统能够推荐一整条驾驶路线。如果出租车司机不知道如何去驾驶到最近的热点,他或者她必须按照谷歌地图提供的路径。然而,沿着这条载客率和潜在的净利润这两者都会十分的低。出租车司机在到达下一个热点之前很有可能会损失金钱。我们的推荐系统可以为出租车司机改善潜在的净利润,相对于谷歌地图建议的路径。

技术分享

5.2.2 一组在top-k推荐上的实验

    在第4节,我们介绍了一个最小的冗余策略来推荐Top-K驾驶路径并且解决了过载问题。在图11中,我们解释了TopK驾驶路线,从同一个地点开始,在这里K等于4。这张图展示了每一个路径有不同的驾驶方向并且这些驾驶距离之间的关联性十分小。因此,最小冗余策略可以改善我们推荐系统的表现。

技术分享

5.3 为缺乏经验的出租车司机推荐路径

    给定一个具体的地点,我们提出的算法可以为出租车司机推荐若干个高期望的路径。这个算法对缺乏经验的出租车司机特别适用,因为他们缺乏关于路标的知识以及选取盈利的驾驶路径。为了验证我们提出的算法的有效性,我们首先将所有的司机划分成两类按照他们的平均净利润。前10%的司机在这个数据集中是被认为是老司机,然而其它的人被认为是没有经验的。因此,老司机的驾驶路线被用来当作训练集并且我们用来为没有经验的司机推荐驾驶路线。

    我们定义司机的事件e为一个连续的序列技术分享,通过提取每个用户载客和下车行为,我们可以重新构建每个事件。对于每个出租车司机,我们定义他开始寻找可能的载客点的位置作为L0,并且在闲逛技术分享时间之后,司机载客的地点是L1并且驾驶了技术分享时间后,在L2位置下车。让ri,j表示Li和Lj之间的路段,然后事件e就可以表示成技术分享,并且这个事件的单位时间的利润可以计算成技术分享。因此,提出的算法在地点技术分享开始,和L0很靠近,并且返回一系列的推荐的可能的载客点和路段。

    推荐驾驶路径的表现好坏的衡量是通过平均单位时间的净利润Pr,并且它是和没有经验的司机的单位时间平均收益比较的,比如 技术分享

    为没有经验的司机推荐驾驶路线的实验结果的数据如表1所示,单位时间的平均净利润胜过了现实中没有经验的司机。

技术分享

    我们首先绘画了单位时间净利润的收入的分布,比如说具体利润值对应的时间的数量,如图12所示。推荐系统推荐的路径的单位时间净收入是和没有经验的出租车司机的表现对比根据历史数据记录。历史数据中,蓝色的条表示我们的推荐系统净收入的结果,红色的条展示了没有经验的出租车司机的净收入。我们可以从图中看出,推荐的事件大多数都是在值大的位置。这暗示了我们的推荐系统带来了更高的收益比起没有经验的司机的实际路径。

技术分享

    为了深入调查推荐系统的表现,我们也研究了每个事件中推荐的路径和司机的现实路径在单位时间净利润之间的区别,比如Pr-Pe。如图13所示,X坐标是推荐系统和没有经验的出租车司机的利润的差别,我们可以看出大多数的时候点是在X=0这条线的右边的,意味着我们的推荐系统带来了更高的收益比起没有经验的司机的实际路径。

技术分享

    随后,我们评估了暴力推荐策略的表现和递归推荐策略的表现。这个实验生成了1000个随机选取的起始点,我们只比较五条路段时的运行时间,因为按照公式4那样在5个路段之后载客的可能性是低于10%的。正如图14所示,红色的线是运行暴力推荐策略花费的时间,黑色的线是运行递归策略花费的时间。我们可以看出递归策略比暴力策略更高效。注意,所有的实验是在 Windows 7 Intel(R) Core(TM)i5-3210 CPU and 6.0 GB RAM环境下进行的。

技术分享

    总结一下,这些实验展示了有效花费推荐系统能够帮助没有经验的出租车司机找到更好路径从而最大化他们的潜在利润。此外,递归策略可以帮助来有效地鉴别推荐的最佳路径。

6. 结论

在这篇文章中,我们提出了一个为出租车司机的有效花费的推荐系统通过提供盈利的驾驶路径来最大化它们的收益。更具体的来说,我们首先提供了一个净利润对象函数来评估在找到乘客前的驾驶路线。然后,我们提出了一个基于图的方法来有效地生成寻找乘客的候选路径。因此,我们可以使用净利润对象函数来为每个候选路径排序并且以花费有效的方式为出租司机提供推荐。我们推荐系统一个独特的视角是可以提供一整条驾驶路径而不是只推荐一系列不连续的载客点。此外,通过沿着推荐的驾驶路线行走,出租车司机能够在固定的时间里最大化他们的收益。最后,在现实世界旧金山区域收集的数据集上做的大量实验验证了提出的推荐系统的有效性。


文献:

Qu M, Zhu H, Liu J, et al. A cost-effective recommender system for taxi drivers[C]// Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014:45-54.

A cost-effective recommender system for taxi drivers

标签:

原文地址:http://www.cnblogs.com/toyking/p/5023606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!