数据库 频道

关于POI处理用到的算法

电子地图中POI已经过亿,面对这些过亿的POI,每天都要对他们进行维护。例如今天这里新增了一家烧烤店,明天那里倒闭了一家火锅店,无法单纯的依靠人工来对POI完成维护。依赖人工,成本较高,且修改时间较长。为了提高POI的生产效率,通过算法去自动化甄别POI且完成自动化维护,成为了必需要做的事。

笔主所在的部门为POI工艺,内在会分为常规线和功能线。常规线负责批处理日常POI,功能线负责零散处理POI。笔主所在的方向为功能线。功能线按照POI的属性会分为过期、坐标、用户反馈、商家等,每条功能线都有自己的业务流程,去完成POI属性的维护。

笔主遇见的难题在于众多业务流程、众多分散的业务场景中如何去对零散POI进行批处理。每个功能线都有自己的业务流程,通过什么样的算法可以实现全功能线提效,业务应该怎么去使用算法才能发挥算法的最大作用。以下是在POI处理过程中,简单用单的算法。希望能给希望算法辅助业务提升的伙伴一些思路。

内容会分为4个点,逐一说明算法是怎样落地业务的。包含北极星指标、算法测评工具、设计算法功能、算法监控。

第一:北极星指标

做事之前不管是对内,还是对外都要对自己所做的事具有目标赶,未来才能更好的衡量自所做的事的价值。这个或许就是北极星指标的价值。在开始学习算法前,先要搞清楚算法与业务的关系,同时找到衡量算法和业务的核心因子,我们称之为北极星指标。笔主所在的功能线会较多,优先挑选已经上线的算法去了解功能点,做算法能力,业务能力拆解。

如图所示,笔主现在过期图像车间调研了图像检索的用法。(过期图像:即通过图像判定POI是否过期。一个POI会存在多张老图,多张新图,将新图与老图进行对比,如果新图中不存在POI,则判定为POI过期。)从两个角度进行分析,得到了算法和业务的交互流程。从过期图像任务角度,需要依赖图像检索挖掘图像过期的特征,方便快捷的选出图像。从算法角度,需要对比两张图的相似性,对于高相似的按照高置信分给出。过期图像车间的任务大体可以分为两类,一类是正常、一类是真正过期,正常的则为新图和旧图基本相似,反之不正常的是新图与旧图差异很大。图图检索主要对比两张图的相似性,因此图图检索可以对相似图进行过滤,进而对过期图像车间的正常任务进行过滤。通过算法计算出图片的相似度,将高相似度的图片进行打标,从而实现图像检索算法融入到过期图像车间。

因此,北极星指标为:

有召回任务数:新图和旧图对比,由于算法能力差异,可能存在部分图不能被召回

有召回高置信任务数:新图和旧图对比,算法召回后,图片有局部相似性和整体相似性,导致置信分与真实值有差异,高置信可被召回,低置信会被过滤

有召回高置信推荐任务数:整体过期图像车间任务有积压,不是所有的高置信任务都能被顺利推荐出来

高置信采纳任务数:当推荐图被推荐后,由于算法和人工考核标注存在差异,即人工更在意局部相似性导致高置信图片未被用户采纳。

以上指标可以组成一个漏斗,方便我们看算法在和业务交互的过程中出现了什么样的问题。

通过以上指标我们可以衡量算法能给业务带来的价值。即解题率。

第二:算法评测工具(这部分伙伴们自己探索吧,每家的工具都不一致,笔主提供思路)

上述方法只是随机挑选了一个算法功能,对算法和业务建立关联关系。现实中还有很多算法,可能涉及到多个算法混合去解决业务问题。因此,设计到如何组合算法,来计算算法的最大效益。这里着重说两种方式,一种是单一调用算法,一种是批量调用算法。

单一调用算法:可以使用百度的飞桨,也可以使用apipost,重点关注输入和输出

https://console.bce.baidu.com/tools/#/api?product=AI&project=%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86&parent=%E8%AF%AD%E8%A8%80%E7%90%86%E8%A7%A3&api=rpc%2F2.0%2Fnlp%2Fv1%2Fsentiment_classify&method=post

批量调用算法:python连接数据库,批量拼接json,然后批量获取结果

整体来说的话,注意内容的输入项和输出项,json的格式等,做到首尾呼应,就能自己拼接算法了

第三:设计算法功能融入业务

笔主经过调研后发现,所有的产线都有一个共同的流程,即会以一个定点为圆心,以200为半径,去周边搜图,完成POI的确认。同样的在组装算法时发现,我只要以同样的范围框选可能的图,并且通过一些机制选出高置信的图就可以解决问题。那么算法就会使用ocr+silimity 算法,即通过ocr识别有poiname的图,再通过silimity对比poiname和原始poinamede 相似度,即可获得周边有高置信且命中poinamed的图。在这一点上,笔主建议大家多看算法的输入输出文档,看他们的参数设置逻辑,寻找业务与参数间的关系,再结合第二步自主调用办法去尝试,就能找到每个算法和业务的关联关系。

总结除了设计算法组合外,需要额外关心算法置信度的问题,需要对检索结果进行排序,对于算法产出的结果需要按照对业务价值最大且不干扰业务的前提去做推荐。如图所示,笔主尽量参照原来人员的操作模式,只是添加了推荐列,来解决业务的交互问题。

第四:算法监控,确保功能正常运行

这个部分就是对第一部分的指标进行可视化展示,我们需要拉长时间周期去看数据的波动性。同时呢,也可以侧向证明功能对于业务的价值。

以上内容呢,是把算法融入到业务中的完整流程。此过程不仅仅保证了算法能够良好的融入业务中,同时通过漏斗也能反馈算法运行中的不足,同时还能反馈策略设计机制是否合理,从多个角度衡量算法与业务的关系,相辅相成实现算法和业务共同进步。

笔主希望这个案例可以给各位带来启发,写的不全面的地方还请见谅。

作者介绍:@阿泱,一个热爱数据产品的工具人。“数据人创作者联盟”成员。

0
相关文章