郑宇的文章对于论文入门者来说的确友好:1.论文技术难度不大;2.论文结构清晰,有层次;3.图文并茂,尤其在数据和实验结果展示方面做的相当美观。
总纲:
论文来源:ACM SIGSPATIAL 2016
作者:Yuhong Li、Jie Bao、Yanhua Li、Yingcai Wu、Zhiguo Gong、Yu Zheng
内容:主要是一个基本的贪婪算法,可以说很简单,不是关于机器学习。总篇幅四页,单页双排。
研究动机:
在一个空间范围内,我们可以找到前k个轨迹经过最多的顶点,用以作为“汽车加油站”、“电车充电站”等公共设施。
面对的挑战:
1)该问题可以转化为Max-k-Cover问题,这是一个NP-H的问题
2)不同的用户对K这个参数要求不同,可能是2、3、4或者更多,所以算法设计要考虑这一点
3)由于该算法和实际结合,比如第一次返回的点可能不符合实际(比如想建立一个候鸟观测点,但是推荐的的点在一个湖中央,显然这是不合理的),所以这需要多次计算,中间需要人类专家对结果评估,有交互过程。
内容细讲:
1)整体思路如下图
分为两个步骤,第一步做预处理。(1)建立空间网络,通俗来讲就是将轨迹映射到路网上,用路网表示。(2)建立轨迹节点索引,具体形式在2)算法讲解中有表示。(3)空间索引,这主要是为了能加速算法运行,这里是将地图的节点用R+树表示(老板说,主流的还有KD树...树)
第二步就是一个贪心算法,具体下节展示。
2)算法讲解
贪心算法可以描述如下:每次挑拥有“最大轨迹度的节点加入解集”,之后在轨迹集中删除已经包含在“解集”的轨迹,不断重复,直至挑出第k个解。
也就是说这个算法有两部分构成,挑选阶段和更新阶段。其中更新阶段需要遍历数据,所以需要设计合理。
作者设计出如下更新算法
看的懂吗?看不懂没事,我们跟着example来看。
其中左侧是v->tr的表,右侧是tr->v的表,中间是顶点的覆盖轨迹表。首先声明下,这个图我认为有问题,tr3那里缺一个v3
首先我们根据中间的节点覆盖轨迹表找出覆盖最大的节点,在左侧的v->tr表中找到v1一行,找出对应tr,删除这一行。然后再根据右侧的tr->v的依次更新中间的覆盖表。以此为例,首先我们找到度为5的v1作为第一个节点,找到tr1...tr5的轨迹,根据他们对应节点,依次对中间的顶点覆盖轨迹表更新,同时对v-tr表也进行跟新。
复杂度:选择阶段的复杂度很低为O(|Vs|),即和被挑选的定点数有关。更新阶段为O(coverage(V)*r),第一部分是被覆盖的轨迹总数,第二部分是轨迹的平均长度。
3)最后就是实验部分,一部分证明这个算法效率很高,以天津的某个地区的出租车数据为例当k为40是,时间小于15s。第二部分就是很花哨的具体结果部分。具体论文见https://www.microsoft.com/en-us/research/publication/mining-influential-k-location-set-massive-trajectories/
结果
网友评论