我自己毕业后就去做了2年的POI,虽然不是很想在这条路上继续走下去。但是现在在网络上看到一些文章还是会忍不住点进去看看,看下别人是以怎么样的思路做的,当初自己遇到的难题别人又是怎么解决的,感觉还是收获颇丰。
我对这篇文章的整理大部分都是搬运自原文,只是原文中穿插较多我不关注的技术实现细节,这部分被我剔除了,且另外对原文内容做了些简单的整理。想看原文的小伙伴也可以直戳:https://mp.weixin.qq.com/s/e6htHPENjtO4tWTsmkegCg。
1、前言
所谓的POI全称是point of interest,即地理位置兴趣点,例如餐厅、电影院等。对于图商来说,POI就是核心,POI是C端业务发展的基石,毕竟要跟商家合作、要把用户导航到店的前提都是,首先你要知道有这家店存在。
那么知道POI是什么,以及它的重要性后,下一个我们要看的就是有什么维度可以去衡量POI做得好不好。这篇文章里提到的,图商高德对POI数据的评价维度包括现势性、准确性、完备性和丰富性。其中,现势性就是地图所提供的地理空间信息反映当前最新情况的程度,简而言之,增强现势性就是指尽可能快速地发现已停业、搬迁、更名、拆迁的过期冗余POI数据,并将其处理成下线状态的过程。
为什么要对POI做增强现势性呢?因为C端露出过期商户数据会伤害用户体验,比如用户搜到了附近一家美食店,去到了却发现店早就倒闭了,白跑了一趟。文章中也有指出:经过推算,头部在线数据的一个过期率百分点年度影响用户体验3亿次。因此,POI过期问题的解决势在必行,以增强现势性,减少用户伤害。
POI过期问题的解决分为发现和处理两个环节。1)发现环节 采用挖掘线主导,采集线和舆情线补位的方式。2)处理环节 有人工核实、自动化打标和自动化下线三种手段。
而这篇文章主要介绍挖掘的演进历程,作为过期发现的核心手段,挖掘在不同阶段分别面临不同的问题,这个过程可以分为三个阶段:
1)基于自身属性的POI过期挖掘 难题:缺资料
2)基于使用行为的POI过期挖掘 难题:提准难
3)基于人地关系的POI过期挖掘 难题:资料薄
高德利用策略、机器学习和深度学习等数据挖掘技术,从点到面、由粗到精地攻克POI过期挖掘业务,POI现势性增强的模式已经发生了深刻的变化。
2、数据挖掘的演进过程
2.1 阶段一 基于自身属性的POI过期挖掘
早期这个阶段的主要难点是缺少挖掘资料,所以这时期主要是以POI自身属性作为主要的挖掘资料。
针对不同的属性,我们设计不同的策略去挖掘过期POI。根据复杂程度,我们将策略主要分为:基于单POI的挖掘和基于多POI的挖掘。二者的最大区别在于是否使用POI间的关系信息。
Case1:评论过期语义挖掘。这是比较典型的基于单POI的挖掘策略。深度/动态信息中的评论是获取用户对POI反馈的有效途径之一,其中也包括对过期POI的反馈,我们通过匹配关键词很容易找到这种评论。技术实现过程中要注意,上、下文的语境会导致关键词的语义发生变化,为此,我们需要用算法进行消歧,筛选出真正表达POI过期的评论。如下所示:
Case2:“原”关系挖掘。这种挖掘方式使用的是POI间的引用关系,是一种基于多POI的挖掘策略。我们在含有“原”关键字的POI名称、别名或地址中通过实体抽取技术,得到“原”关系(新旧关系)的两个POI名称,通过聚合技术找到旧名称所对应的过期POI。我自己理解应该说的就是“这家一点点奶茶店从原来的A路搬到了B路”这类评论。
Case3:同地址策略。这种挖掘方式利用地址门牌冲突关系来挖掘。其逻辑是:相同的门牌号(包括室内水牌)上通常只有唯一的经营实体,若地址上存在两个或多个实体且不是聚集实体(商场、园区等),则应当存在过期POI(一般将更新时间较早的集合作为过期POI集合)。
Case4:同电话策略。取有相同电话的POI的集合,与同地址策略类似,通过亲子关系等,剔除掉聚集实体、连锁店、疑似重复数据等噪音,并根据名称相似性和距离关系,分辨出更名和搬迁现象。电话实际上代表着POI背后真正的人,通过人的行为变化可以判断一个POI过期与否,甚至可以推断出该POI具体的过期现象。
2.2 阶段二 基于使用行为的POI过期挖掘
步入阶段二,缺少挖掘资料已不再是解题的主要矛盾,人工核实率低、处理能力不足的问题凸显,从而迫切需要建立自动化打标/下线能力(提准)。过期挖掘的实质是感知伴随POI过期而发生的变化,进行事后观测式挖掘,比如,过期一般都会伴随着POI活跃度(运单量等)的下降。
前面也提到过,挖掘所依赖的观测资料不能提供过期的实锤证据(比如,运单消失并不是过期实锤);外加随着解题推进,在线POI数据现势性增强、过期率下降,在观测资料固定的前提下,过期挖掘的产量及精确率均随过期率的下降而自然下降,上述这些都会导致精确率难提高,因此,提准难成为该阶段的主要矛盾。
根据是否需要参考历史情况,我们将基于使用行为的POI过期挖掘划分为时序异常和事件异常两类。
2.2.1 时序异常
POI的存活状态可以通过关联的使用行为量活跃度间接反映出来,从使用行为量的趋势角度尝试迭代解题。主要思想是统计某个时间窗口关联的使用行为量活跃度来衡量POI的存活状态,并通过分析活跃度相对于历史情况的衰减程度来判断POI是否过期,其基本假设是时序趋势下降与POI过期正相关。
2.2.2 事件异常
现有的时序异常模型主要依赖于使用行为量的趋势特征做判断,存在挖掘资料覆盖上的天花板,以加油站、ATM、公共厕所等为例,这些类型的POI因自身属性的原因导致无挖掘资料,趋势模型无能为力。因而提出基于日志(Session)的异常事件模型,统计陌生群体到达过期POI后需求不满足引发的异常事件,补位时序异常模型的挖掘盲区,即无需参考历史情况,仅利用日志抽取POI关联的异常行为事件,累积近期异常事件衡量POI的存活状态是否正常。
日志挖掘难点
海量的日志行为。直接使用不仅消耗资源大,且有大量的冗余数据造成干扰。如何在海量行为中抽取与过期相关的特征是一个艰难的工程。
行为随机性大。例如,很多情景里快到终点前会提前结束导航从而无法判断是否到达目的地;有些情景是规划去一个目的地但从末端轨迹可以判断实际去的地点天差地别。
针对上述问题,主要通过实地评测的过期POI case分析来构建具体的异常事件场景,例如到达后试图报错、到达后快速发起二次同质化导航等,以上统计量作为特征输入,由此可聚焦相关日志片段并降低随机行为噪音。整体解题框架如下图所示。
挖掘效果
Session异常事件模型有效补充其他手段未能覆盖的解题集合,专攻汽车服务、生活服务、娱乐场所、金融保险服务等品类POI,是过期挖掘不可或缺的组成部分,且未来仍有较大的泛化提召回空间。
2.3 阶段三 基于人地关系的POI过期挖掘
趋势特征丰富(厚)的过期POI,容易被趋势模型挖出。而当趋势特征(使用行为)稀少(薄)时,模型发现能力较差。所以该阶段需要解决资料薄的问题,通过捕捉关键群体线索,降低对资料厚度的依赖。洞察POI的关键群体的行为,有可能找到发现甚至解释POI过期的特征。
因此,第一步我们需要建设人地关系,找出所谓的关键群体,称之为内部群体,是指:对POI有依赖的群体,这种人地关系,我们称之为内部关系,其它均为外部关系。
第二步基于内部群体的时空运动模式的变化发现过期POI,补位趋势特征稀疏时的召回问题,局限性:内部群体基本不变的POI更名等场景不可解。
3、总结
过期挖掘已经成为增强POI现势性的绝对主力手段。这条以大数据挖掘为主导的路线还远远没有达到终局,未来的演进方向至少有以下几个:内部群体时空转移本质化通盘解题,降低对资料厚度的依赖;面向过期现象的定向挖掘能力提升;POI生命力画像构建;生态探索,从逆向解题向逆向+正向解题渗透。我们将致力于为提供给用户更美好的出行服务体验而努力。
看完这篇文章后,真的是觉得不愧是图商高德,做POI的整套思路很系统很有方法。做事想法很好,加上牛逼的技术,自然POI是会越做越好的。看来自己的前任公司在做POI这条路上还有很长的路要走。