1 认识AOI
1.1 什么是AOI
AOI(Area of Interest),与POI(point of Interest)相对,一个表示兴趣点一个表示兴趣面(多边形)。每一个POI至少包含四项基本信息:名称、地址、类别、经纬度坐标,它可以是一栋房子、一个商铺、一个小区门口或一个公交站等;AOI(Area of Interest),顾名思义,指的是互联网电子地图中的兴趣面,同样包含四项基本信息,区别在于其经纬度坐标不是一个坐标点,而是形成一个封闭围栏坐标串组成,主要用于在地图中表达区域状的地理实体,如一个居民小区、一所大学、一个写字楼、一个产业园区、一个综合商场、一个医院、一个景区或一个体育馆等等;AOI相比POI,具有更好的空间表达力,更好的计算力,更好的稳定性(POI瞬息万变,而AOI所表达的地理实体变化频率低很多);相反,POI比AOI的抽象层次更高,万事万物都抽象为一个点,实现降维,回归本源。
随着云计算、IoT、5G等信息技术发展,人类正在快速推进地理空间到信息空间(基于ICT技术构建)的映射和关联,如目前的O2O模式。而AOI所表达的地理实体是所有社会经济活动的地理载体,因此,以AOI数据为载体,将组织的业务数据、生产材料、生产工具、运营策略、人等所有生产要素组织起来,能够有效的完成线上线下一体化、推进组织向信息空间进化。
1.2 AOI分类
AOI是POI的更进一步抽象,所以,一般AOI也可以由标准POI类目体系(高德POI类目分类表)进行划分,分为三级共约20+一级类目、200+二级类目和约1000个三级子类目,具体包括学校、医院、住宅区、商场、门店等等;当然也包括根据场景,区分为经营性POI、非经营性POI,导航点位POI、行业类POI(如医院类POI/学校类POI等)等;
此外,根据AOI生产方式,又可以分为人工AOI和全域AOI,人工AOI是指人工绘制采集的各类AOI,全域AOI一般是由各类地图数据通过算法生成的,是融合真实地理要素围栏,和路网加轨迹大数据挖掘的城市无缝全域覆盖的地址围栏分层体系。在很多城市末端O2O场景(快递、外卖及出行等)中,需要划分区域进行运营策略制定、服务人员(快递员)分区任务分配等,此时人工按热点采集绘制的AOI已无法满足业务需求,全域覆盖且划分合理的AOI网格是满足业务的基础单元。在菜鸟/蚂蚁,全域AOI目前已更新到第4版,除了越来越合理的空间划分,最新版城市市区内会有较全AOI类别及名称标注。
2 多模态AOI挖掘
传统的人工AOI采集通常成本较高(据测算约40元/个),且需要大量的人力及时间,越来越无法满足业务快速迭代的需求。所以,算法批量生成AOI成为首选。无论是基于POI辐射范围抽象生成的AOI,还是路网水系等划分的全域AOI,都是通过算法手段,利用各类时空多模态数据(路网、水系绿地、行政区、LBS轨迹、物流文本地址等)建模生成各类AOI资产。
2.1 多模态AOI挖掘数据准备
多模态AOI挖掘用到的相关数据包括轨迹数据、原有AOI数据、POI数据、用户/商家物流收货地址,也包括
中国行政区划数据+路网数据与高德山/水系数据等,如下图所示:
除此之外,如需通过遥感图像建模生成AOI,还需高清遥感数据,这里可采样Google Earth/Google Earth Pro等数据源。示例:
2.2 多模态AOI挖掘分段建模方案
本文相关是蚂蚁多模态AOI挖掘建模过程,主要可分为5个主要部分,也即AOI生成全链路算法方案。如下两图所示:
蚂蚁AOI资产实体生成主要分为3个阶段4个模块:
(0)主POI的精选--筛选出哪些POI类别是适合或者能被用于挖掘AOI的(第一轮主要优先筛选top50三级类目--业务高优先级且数量较大的);
(1)全域路网AOI围栏的生成--生成细粒度原子独立区块围栏实体,作为挖掘最终AOI参照边界;
(2)遥感AOI轮廓预测--利用高清遥感图像,预测生成各类目AOI的大致轮廓;
(3)AOI精细形态的生成拓扑空间建模--包括主POI与AOI的挂载建模+AOI形态的空间搜索拓扑重建;
(4)最终AOI整体可信度的预估建模--输出达到一定可信度的优质AOI与AOI分层(即此围栏范围内是##学校/小区的可信度)。
当然,AOI实体资产挖掘后,后续还包括AOI实体资产实际的准确性和覆盖率评估等,后文也将对AOI资产评测方案进行简介。
2.3 路网到AOI初始网格的算法方案
利用NLP与GIS技术,全域AOI即把一个城市切割为无缝或近似无缝的AOI组合。末端区域划分解决方案中,城市区域划分方式主要分为两类:一类是根据行政区域划分,但这类划分往往粒度太大,一般商业企业能获得准确的行政分级信息通常只到三级行政区粒度(地图管制原因),也就是省市区的区粒度,还是偏大;另一类是根据标准格网对城市地图进行切分,如geohash网格,或标准正多边形切分,滴滴打车的区域加价和排队机制的基础,就是对城市地图进行特定大小的正六边形的切分,以每个正六边形为单位,计算实时供需关系,以匹配相应的运营或计价机制。在打车场景中,司机乘客位置都是局限于路网中点的概念,而在外卖和快递配送场景中,配送范围是面的概念更多一些,且现实场景中道路两侧的通行成本往往高于一个小区或学校内,所以,在这些场景中,不得不考虑交通约束带来的配送成本,用标准格网模式切割划分城市地图就有可能把一个小区切成两块,而有明显通行障碍约束的道路两侧划分为一个区域,因此,有必要以现实约束的路网为界限的区域分隔就非常有必要。
(1)路网生成的全域AOI算法流程简图:
(2)路网全域AOI核心算法过程:
(3)全域AOI核心算法指标:
1)Scalable balanced st-rtree:单城市100w路网段,计算性能2小时-->0.5小时
2)Road closed-loop repair algo(启发式算法):路网网格数,相对已有AOI库正样本,IOU>0.85 的比例提升约5%(35%-->40%)。
2.4 遥感AOI轮廓预测建模
在解决路网切割AOI过大问题的解决方案中,主POI处于中心位置及其与AOI边界顶点的地理几何关系被重点考虑,进行AOI二次切割建模(https://yuque.antfin-inc.com/antlocation/cqwt85/br96pw/edit)。受此启发,在遥感AOI提取建模中,以POI为极坐标系原点, 每隔一特定弧度取一条射线,该射线和多边形的交点选为待预测点如下图所示:
通过深度网络来预测N个点的坐标来获得AOI轮廓
(1)算法方案:feature extracting backbone + transformer head
(2)遥感AOI预测结果示例:
目前,不同类目评价指标为预测多边形和原始多边形的mIoUIOU预测0.58~0.88。对接近矩形的多边形预测较好, 不规则多边形预测较差;边界清晰界限分明的AOI预测也会较好,反之较差。
2.5 AOI围栏的融合重建
在抽样评测完成1000个算法打标AOI的结果后发现,基于多级路网生成的围栏+主题提取后的AOI,准确率大约35~40%,在错误的部分中,约80%是过大,过大的原因来源于:该区域(一般偏郊区)没有外部路网,而AOI生成模型中一般会过滤内部路网,因为复杂性与非闭合性--断头。那怎么找到这些主POI的准确边界围栏呢?
(1)算法整体思路:
(2)实例分析
在我们作为线索的主POI,会发现其绝大部分处于其真实边界的中心,可利用该信息,进行围栏二次生成建模,提取其最可能的边界,如下图:
从地图中不难发现,该图中2个过大的路网AOI内含有多个真实的实体AOI,以右上角“浙江圣奥家具制造有限公司”为例,计算其主POI与路网AOI边各界距离(点到线段边的距离,且垂直点在线段内),设置合理阈值,提取1~3个有效边界(提取有效参考边的个数及距离阈值,则通过构造分AOI类别的正样本进行学习,输出2+个短距边界会更好)--此次根据类别距离阈值,提取东北2条有效边界,然后对称生成另外2条边界,最终组成四边形AOI围栏。
AOI二次围栏生成算法的核心是充分利用:原路网AOI的围栏部分边界+可信主POI中心性的特点。当然也会带来异常的围栏图形的问题,需要平滑处理,如下图会生成“锯齿”边界的问题--此问题可用改进的计算机图形学中的Douglas–Peucker算法处理。
(3)算法实现核心主代码:(入参中的poi_type对应limitDistance通过离线正样本学习得到)
public class AOIReBulidAlgo extends UDF {
double outAngleLimit=100.0;
String anceLimit="15";
String distanceLimit="0.0001";
smoothPolygon sp=new smoothPolygon();
PolygonSimpliy ps=new PolygonSimpliy();
polygonCleanAndFormat pcf=new polygonCleanAndFormat();
// poi_lng、poi_lat主POI的经纬度;rs_flag:0、1是否有遥感图参考;reference_wkt_or_distance:参考遥感图围栏;road_wkt:路网切割的AOI围栏
public String evaluate(String poi_lng,String poi_lat,String rs_flag,String road_wkt,String reference_wkt_or_distance) {
String resultWkt="";
try {
//参考围栏的拓扑修正
road_wkt=sp.evaluate(road_wkt, anceLimit, distanceLimit);
road_wkt=ps.evaluate(road_wkt, distanceLimit, "false");
Polygon polygon=JtsOdpsIO.inputPolygonWkt(road_wkt);
Point point =JtsOdpsIO.inputPointFormat(poi_lng+" "+poi_lat);
//(1)POI点到多边形每条边的距离列表
List<LineString> sideDistances=getPoiPolygonSideDistance(point,polygon);
List<LineString> effectLines=new ArrayList<LineString>();
//(2)AOI生成的参考围栏,初始为路网AOI
String reference_wkt=road_wkt;
if("0".equals(rs_flag)){
//(2)AOI有效边的提取
effectLines=computeEffectLines(sideDistances,polygon,point,reference_wkt_or_distance);
}else{
//(2.0)参考围栏变更+遥感AOI的轮廓格式修正
reference_wkt=pcf.evaluate(reference_wkt_or_distance, "false", "true");
//(2.1)AOI中心位置修正
point=poiCenterUpdate(point,reference_wkt);
//(2.2)中心边距计算
double dis[]=getReferenceDistance(point,reference_wkt);
//(2.3)AOI有效边的提取
sideDistances=getPoiPolygonSideDistance(point,polygon);
effectLines=computeEffectLinesWithRs(sideDistances,polygon,point,dis,reference_wkt);
}
//(3)AOI边界重绘(含拓扑优化补全)
resultWkt=AoiRebulid(point,effectLines,reference_wkt,rs_flag);
//resultWkt=resultPolygon.toText().replace("POLYGON ((","POLYGON((").replace(", ",",");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "Parms Error";
}
return resultWkt;
}
}
(4)算法核心指标:
1)第一版AOI生成时(无遥感特征),AOI测评整体准确率:35%-->59%;
2)第二版AOI生成时(融合遥感特征),AOI测评整体准确率:路网AOI 59%+遥感AOI65.4%-->70.5%。
2.6 AOI挖掘实体准确性预测建模
(1)AOI实体准确性评估预测模型:
(2)更详细的算法模块实现参考:
https://yuque.antfin-inc.com/antlocation/cqwt85/raz7vm
(3)最终算法指标:
80w挖掘AOI,整体70.5%准确率,经预测模型训练后整体auc约91%,输出算法预测平均86%的条件下,2次累计共产出高质量AOI资产18.2w,实际测评准确率85.7%。
3 多模态AOI End to End模型升级
在本文第二部分中,我们的多模态AOI生成是划分为多个阶段/模块进行建模的,后来我们又对遥感AOI预测生成模型进行了end to end升级改造,改造分为2个阶段,首先是融合路网和类别信息的多query AOI围栏预测,最后建立一个级联模型,让模型同时输出生成的AOI的准确率。
3.1 融合路网节点的AOI预测建模改造
(1)改造思路:新增AOI类目(即主POI类目)与road_nodes的2个decoder queries,分别进行transformer后,首先针对road_nodes与召回图像进行crop&filter,然后对3个queris的transformer outs进行add&norm,最后仍是接FFN。 (2)road_nodes选取:与AOI轮廓的36个点选择方式一样--根据主POI,等角取n(n=36)个边界交点(模型decoder后与召回图像进行crop,filter掉图像边缘部分参考意义小的nodes)
3.2 多模态AOI End to End预测建模最终方案
因LBS点位分布或地址等特征无法直接用于AOI轮廓的预测,所以,通过增加一个级联模型,来预测前序模型输出的AOI准确率,整体结构如下图:
(1)模型注释:
AOIRecall&Group:重新召回预测AOI范围的内的特征值; AOI flow spatial-Temporaldistribution(人流特征):早晚流量密度比、工作日与周末人流密度比、人流周稳定性----来源交易定位及wifi数据; AOI-POI topics area distribution(AOI内、附近POI类目/主题分布):POI的类目与主POI类目一致性,tf-idf特征,附近POI与主POI的相似性/类目(或父子)从属性。(物流地址首先解析出POI,计算POI动态密度特征); AOI-POI relation features:主poi中心度,POI绝对/相对边界距离; AOI-road relation features:rate of coverage。
(2)准确率级联模型的样本构造:
因AOI的负样本较少,除了让外包标记得到的少量正负样本,其他正样本则来源于AOI库原有AOI,而负样本来源于其对应的围栏进行内外buffer一定距离得到(会同步更新其他特征)。
4 AOI资产测评
随着高德引入AOI资产和我们自身挖掘AOI资产越来越多,但之前我们只有关于POI的质量评测,却没有AOI的质量评测,越来越多的业务在使用某些类别AOI资产时,无法给到业务方准确的关于数据准确性和覆盖度的预期;所以想初步建立第一版AOI资产质量的评测标准,建立标准后,利用现有外包资源,评测现有多个源的AOI(高德、蚂蚁及正在挖掘的AOI)整体质量情况,及分类的准确率和覆盖率,以给业务方更明确的指导。
4.1 AOI资产评测指标因子
- 核心指标因子:AOI覆盖率和准确率,关于覆盖率分母,考虑线上实操性,也因为AOI是基于POI之上一层抽象的产品,所以,覆盖率的分母为主POI数目--适合绘制AOI围栏且代表一定地理区域并存在”进场”概念的POI类别,如学校、医院、工业园区等,而经营门店类POI则为非主POI,至于未被采集的主POI,则认为已在评测POI覆盖率时已计算;AOI准确率因子是指AOI核心三要素--AOI名称、类别和围栏准确性均正确的,则为正确,否则为不正确。
(1)AOI覆盖率:--仅供分类目参考
1)AOI的整体覆盖率:被AOI化的主POI数量/总的主POI数量 (主POI细分为Top10、Top50等)
2)AOI的分类目覆盖率:特定类别被AOI化的主POI数量/特定类别总的主POI数量
特别说明:因主POI存在一定的重复率(单个真实AOI范围内存在多个别名或错误类别的主POI的现象),所以分母主POI数目可能偏大,所以该指标真实覆盖率会略高于计算的覆盖率--当前,不同类别主POI重复情况不一样,主POI需要经过明确规则筛选确定后,覆盖率的指标才是严谨客观的。
(2)AOI准确率:
1)AOI的整体准确率:被评测为准确的AOI数量/总的AOI数量 (亦可再细分+无法判别的比例)
2)AOI的分类目准确率:特定类别被评测为准确的AOI数量/特定类别总的AOI数量
(3)重复率:
1)AOI重复率:重复的AOI数量/总的AOI数量
2)AOI的分类目重复率:特定类别被评测为重复的AOI数量/特定类别总的AOI数量
4.2 AOI资产指标评测具体方案
4.2.1 覆盖率的评测
1)抽样实地调研--实地调研某片区域内的全部某类AOI,分类别计算AOI的覆盖率--需要线下地推/众包资源
2)通过POIID进行JOIN或空间索引召回匹配,可以直接计算整体AOI覆盖率及分类别覆盖率;
3)真实世界的AOI覆盖率=以上被AOI化的主POI的AOI覆盖率✖️POI覆盖率
4.2.2 准确率的评测
1,AOI准确率测评方案
- AOI准确的定义范围:AOI准确包括AOI名称、类别和围栏和地址的准确
- 方式:
1)抽样实地调研--随机选定特定区域,进行线下实际扫街,查看该片区域全部的AOI,与被评测AOI集进行对比,评测整体覆盖率及准确率--该方案需要线下地推/众包资源
2)在线地图/遥感图像验证--随机抽样5~20k(根据需要)AOI,通过在线高德、百度地图及最新遥感图像,参照AOI评测标准,为每个AOI进行质量打标。
- AOI简单评测标准及SOP:
(1)AOI的名称是否正确--通过高德地图/百度地图/腾讯地图搜索,是否可找到该AOI名称,任一找到即可;若找到后与地图上名称不一致,则进一步通过百度搜索验证名称的正确性(多个别名任一均算正确)
(2)AOI的类别是否正确--首先名称与类别是否矛盾(如##东门--小区类别),及是否与地图显示图像的地块明显不符(如体育馆类别,实际地图上却是河流)
(3)AOI的围栏是否正确--打开高德/百度地图遥感图像,及AOI围栏可视化工具地图,判断AOI围栏是否过大或过小
1)AOI是否过大--AOI围栏内含有其他非AOI名称的其他主POI(门店或独栋楼POI除外,附50类或其他明显有较大区域的类别);或除了主poi建筑及其附属设施区外有过大的空白/非同质区域(超20%面积等--市区AOI严格、郊区可适当宽松)。
2)AOI是否过小--AOI覆盖区域明显小于实际该主POI应覆盖的区域(超10%没有覆盖)。
(4)AOI地址是否正确--复制AOI地址到高德地图/百度地图,定位该地址后,若能找到该AOI,则正确,否则错误;无地址的AOI标不确定。
注1:每个AOI进行质量打标结果:0--错误(以上前3条任一错误)、1--正确(以上前3条均正确)、2--不确定(以上前3条任一无法确认)
注2:因部分AOI无地址,且AOI地址亦可通过解析映射到四级行政区划中,故认为AOI地址为非核心要素,单独打标。
附1:AOI围栏可视化地图工具:通用时空数据可视化工具(把AOI WKT格式围栏坐标复制到方框内,点击“draw it”键即可)
附2:AOI围栏遥感图可视化工具:https://m2.alipay.com/aidesk/share/lbsvisualization(用法同上,但需要公司内网权限)
4.2.3 重复率的评测
1,AOI重复率测评方案
通过围栏经纬度召回所有面域重叠的两两AOI之间IOU的Pair group;筛选IOU超过20%的,然后判别是否为子父AOI关系,若非子父AOI,则认为是重复。
- AOI重复率评测标准及SOP:
(1)样本准备--召回所有AOI面域重叠(iou20%+)的AOI group 组
(2)针对每个AOI group组,判定重复AOI的数量--打开高德/百度在线+AOI围栏可视化工具地图首先判定是否别名重复,然后排除子父AOI关系的AOI,最后计算重复AOI的数量(N个AOI相互重复,需剔除一个正确的,重复个数为N-1)--外包打标
4.2.4 典型标注case分析
case0:上城体育中心 体育场--体育场所 :名称具体所指与实际围栏范围不符(名称指定是体育场,而围栏实际包括体育场、体育馆和网球中心等多个场所)
case1:蚂蚁元空间--写字楼/工业园区:判断建筑同质性及周边附属设施
case2:七贤郡二期--标准建筑小区:判断建筑同质性
case3:横沥文化体育广场--可延伸到道路的情况
case4:玉岩书院--郊区/绿地覆盖区AOI:郊区可适当扩大召回
case5:北京杨镇工业开发中心--郊区/空白覆盖区AOI:郊区空白地可适当扩大框选
5 参考文献
[1] Discovering Regions of Different Functions in a City Using Human Mobility and POIs(2013).
[2] Discovering Urban Functional Zones Using Latent Activity Trajectories(2015).
[3] Exploring Urban Region-of-Interest through the Analysis of Online Map Search Queries(2018).
[4] Learning Graph-based POI Embedding for Location-based Recommendation(2016).
[5]https://yuque.antfin-inc.com/antlocation/cqwt85/br96pw
[6]兴趣面_百度百科