背景说明:本文以百度地图为例,试分析其同一城市的公交线路推荐策略的思路框架。公交路线中所包括的交通方式包括公交车、地铁、机场巴士、轮渡、步行、骑行。
一、产品目标
1. 整体目标
针对于同城的公交线路制定推荐策略,使用户的满意度达到最佳。这里的“最佳”是指,最优先为用户推荐同城中从A点到B点的成本最小的公交线路。不同用户在不同场景下对于“最小成本”的需求是不同的,譬如上班的时候需要是时间最快且准时,晚上回家的时候可能需要的是少步行,等等。因此,我们需要实现的即是基于不同的用户和场景,为其推荐成本最小的路线、让用户的满意度最佳。
2. 衡量体系
基于产品目标,需要制定一系列的指标体系来告诉我们用户是否满意了、我们是否达到了预期的产品目标,并且根据数据指标所反馈出的情况作为下一步迭代的依据。
此处的数据指标包括:
1)用户点击推荐线路的次数——即假设从A点到B点的推荐线路共有10条,那么用户共点了几条推荐线路的数据。若用户满意度越高,则点的次数越少(或不点击);
2)用户点击的推荐路线的排序——用户点击的推荐线路的排名位置,点击的线路排名越靠前越好。
二、排序策略的原理概述
根据用户的出发地、目的地、公交线路图、路况、运营时间等,我们可以得出从A地到B地的路线的客观集合。基于不同的需求,我们需要从这些线路的集合中筛选出符合用户需求的线路进行排序。
基于历史数据和用户调研,可了解到用户在考虑路线的优劣时,主要考虑总时长、准时率、价格、步行距离、换乘次数、交通方式偏好这几个维度的因素,我们可以称这几个维度为“路线特征”。因此,我们将考虑不同用户在不同场景下,对于路线特征的权重偏好,从而通过算法加权得到一个路线的“推荐得分”,并以“推荐得分”作为唯一的排序依据。
以下附上选择总时长/准时率/价格/步行距离/换成次数/交通方式偏好,作为主要路线特征衡量因素的分析过程。通过典型用户/场景的例子加以说明。
1. 总时长:用户赶去机场乘飞机,希望以最快的时间到达/ 不喜欢在交通工具上花太多时间,希望以最有效率的时间到达和朋友聚会的咖啡厅
2. 准时率:预定了8:00的会,希望路上不要有延误的风险/ 早上9:30要到公司打开,一般在固定时间出门,希望在预期的时间内到达(备注:这里所说的准时率,主要是考虑堵车风险)
3. 价格:王大妈每天都要乘公交出去买菜,路上时间长点没关系、但希望票价不要太贵/ 建筑工人小赵白天在市区干活、晚上回城郊住宿,路途较远嫌地铁贵,希望乘坐比较便宜的公交
4. 少步行:天气恶劣的时候,希望尽量减少户外步行的时间/ 在体力上不想太劳累,不希望走太多路/ 拿了比较多的行李,不想走太多路、不方便/ 带着病人去医院看病,不希望走太多路
5. 换乘次数:带老人坐公交、腿脚不太利索,希望少换乘、避免太折腾/ 和客户约了9:00减免,换乘多的话,对时间的预估会不准/ 小张上班路上喜欢看剧,换乘多了对时间不好预估,而且会经常中断她看剧
6. 交通方式偏好:小李不会骑单车,不希望看到采用单车的路线方案/ 孟大妈觉得坐地铁总觉得太闷,喜欢坐在公交车上看窗台外的风景/ 公交经常不准时,白领cathy喜欢高效、准时的出行方式
三、输入
根据前文所说,此处的输入即为路线特征权重的影响因素。
我们将影响因素主要分为了“用户特征”和“场景特征”类,以下举例说明这些因素如何影响排序。
CASE 1
用户特征-历史行为记录-收藏路线:譬如,小王总是喜欢收藏少换乘的路线,那么积累到数据,我们可以为小王打一个“偏向于少换乘”的标签,并作为推荐路线的依据。
CASE 2
场景特征-出发的时间段特征-白天/夜间:譬如,用户晚上11:30选择公共交通,处于安全性的考虑,晚上会少推荐需要步行比较长/在小巷道中步行的路线。
四、计算逻辑
每条线路都将计算一个“推荐分值”,将会以“推荐分值”作为唯一依据进行路线排序。
推荐分值计算逻辑:
1. 基础分值
基础分值在-10~10分之间,需要对各路线中的各特征的表现做出评分。基础分值是不考虑具体用户特征和场景特征的一个普适性评分,评分的依据为历史数据。
CASE:以总时长为例,从历史数据中我们可以看到一段10km的路在某个城市中的耗费总时长分布,假设历史数据反馈,80%的用户都选择了时长在30~50分钟的线路。若当前一个10km的路线推荐时间在1.5h,那么该路线“总时长”维度的基础分值应为负数。
2. 权重
权重的依据包括用户特征、场景特征、历史数据、PM的调研/判断,以下举例说明计算逻辑。
CASE 1
用户特征-用户历史行为:根据用户以往的行为记录,该用户偏向于点击/收藏换乘较少的路线,那么“换乘次数”的系数就应当在整体计算中加大;
CASE 2
场景特征-目的地特征:譬如用户输入的目的地为动车站,根据大量用户的历史数据来看。当用户输入了“高铁站”,其背后的诉求是“准时”和“用时少”,那么此时总时长和准时率的系数就应当增大;
3. 阈值
线路特征中的总时长、准时率、换乘次数、步行距离、价格、交通方式偏好都应当有一个阈值。若触发了阈值,那么这条路线便不用推荐(阈值代表了用户无法忍受的一个值)。
譬如,从A点到B点共10km,对于小李来说,他最多可以接受55min路程。若超出了55min这个阈值,在有其他一定数量路线推荐的基础上,那么这条超过阈值的路线就不推荐了。如果没有其他足够数量的路线推荐,那么这条超过阈值的路线就排序位于最后。
那么,如何来确定阈值呢?
1)对于一个用户的冷启动阶段,则以历史数据作为标准。即普罗大众的阈值标准。举例来说,从A点到B点,历史数据表明80%的用户都仅接受3次及以内的换乘,如果有超过4次的换乘则不用再推荐。
2)当用户使用APP一定时间之后,则根据该用户的特征和历史数据来进行综合判断。譬如,用户手动选择了“不坐地铁”,那么带有地铁推荐的线路则会被认为是超过了这个阈值,不予推荐。若用户总是选择步行少的路线,那么可以调低该用户对于步行的阈值,因为他对“步行”的忍耐限度比一般用户要低。
五、输出
输出的结果为每条推荐线路的“推荐分值”,按照推荐分值的高低从上到下依次排列。
衡量指标为用户点击推荐线路的次数和点击的推荐路线的排序,并可以以此作为效果评估的标准和迭代依据。