道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类、蚁群算法等)

  • 前言
  • 一、聚类算法是什么?
  • 二、道路匹配中常见聚类算法介绍
    • 1.K-Means算法
    • 2.基于时间和距离的算法
    • 3.蚁群算法
  • 总结

前言

实际观测过GPS轨迹的朋友知道,在一些红路灯路口或者车速较慢的道路上,采样频率较高的GPS采样设备往往会在同一个点附近记录大量的轨迹点,即出现了轨迹点大量聚集的现象。如果将这些大量聚集的轨迹点都加入到待匹配的序列中,不仅聚集的轨迹点得出的匹配结果绝大多数相同,对轨迹点匹配的意义较小;而且会极大的浪费时间和空间资源,影响匹配算法的运行效率。

图中可以看出在红绿灯路口容易出现轨迹点聚集现象:

因此,我们在对GPS轨迹点进行道路匹配之前,往往需要对轨迹点数据进行预处理,这其中就包括使用聚类算法对轨迹点数据进行聚类,以提高算法的运行效率。
本文介绍了轨迹数据预处理中常见的几种聚类算法,包含K-means等。


一、聚类算法是什么?

首先,我们需要明确聚类算法是什么。

聚类算法定义:聚类是按照某个指标(如样本之间的距离)把数据集分割成不同的类或者簇,使类内元素的相似性尽可能的大,类间元素的相似性尽可能小,通过这样来对相似的数据进行归簇,从而达到聚类的效果。

通俗来说:在道路匹配中,在进行GPS轨迹预处理时,在尽可能不影响最终匹配结果的前提下,将相似性较高(包括间隔距离较近、间隔时间较短等特点)的轨迹点进行聚类。即在一堆聚集的轨迹点中,选出一个最具代表性的点或者生成一个新的轨迹点来概括描述一堆聚集的点,以提高算法匹配的运行效率,降低时间和空间的消耗情况。

二、道路匹配中常见聚类算法介绍

1.K-Means算法

K-Means算法应该算是很有名的一个算法了,不仅仅在道路匹配中用到,在很多领域中都会用到。

K-means聚类算法一种常见的基于划分的聚类算法,其核心策略为贪心策略。经典K-means算法流程如下:

(1)随机选取K个对象,每个对象初始地代表一个簇的中心
(2)针对剩余的对象,根据其与各簇中心的距离,将其划分到最近的簇
(3)重新计算每个簇的中心值,更新簇的中心
(4)不断重复步骤2和3,直到达到某个终止条件

K-means常见终止条件为:没有(或最小数目)对象被重新分配给不同的簇,或者没有(或最小数目)聚类中心再发生变化。

过程示例图如下:

学习参考链接: 常用聚类算法综述

2.基于时间和距离的算法

尽管这种算法相对来说使用的范围不如K-Means算法广阔,但是这种算法很好的结合了GPS轨迹点的实际情况,实际使用效果不错。

很好结合GPS轨迹点的实际情况的原因在于:我们在GPS轨迹点数据中可以根据记录时间很容易得出相邻轨迹点的时间差,相邻轨迹点之间的距离也可以根据记录的经纬度算出。

可以采取时间和距离两种参数对轨迹点数据进行分析的原因在于:在城市中,考虑到道路限速、汽车数量、红绿灯等因素,车辆的行驶速度大部分在一个合理的区间,即不会过快或者过慢。

比如在一堆轨迹点中,相邻轨迹点之间的距离很小,算出来的结果只有0.1m或者0.2m这种,那我们就有较大把握认为此处轨迹点发生了聚集现象,对此处轨迹进行聚类往往有不错的效果。
同样的,如果两个轨迹点之间的时间过短,考虑到实际行驶速度,我们也可以进行轨迹点聚类。但是在限制轨迹点时间差聚类时,我们要注意,部分高采样类设备的采样频率很高,相邻轨迹点之间的时间差很小。此时我们可以设置滑动窗口,滑动窗口的大小可以自己按照实际情况设定。举例来说,可以设置每3个连续轨迹点进行一次聚类,这样就可以将实际需要匹配的轨迹点数量减少三分之二,这样可以导致实际运行时间优化效果显著。

当然,这种算法的缺点也显而易见,就是基于时间和距离聚类算法的最终效果极度依赖时间间隔和距离间隔的参数设置。时间间隔和距离间隔都不宜过大或过小,否则会极大的影响聚类算法的最终效果。
建议小伙伴们在使用这种聚类算法进行预处理时,可以多多进行聚类效果实验,或者找到可以达到优秀聚类效果的参数设置。这种算法实现起来很简单,主要是参数设置需要仔细调整。

3.蚁群算法

以下部分内容来自:
蚁群算法原理及其实现(python)
蚁群算法简介

蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的可能性。蚁群算法最早是由意大利学者Colorni A., Dorigo M. 等于1991年提出。经过20多年的发展,蚁群算法在理论以及应用研究上已经得到巨大的进步。

蚁群算法是一种仿生学算法,是由自然界中蚂蚁觅食的行为而启发的。在自然界中,蚂蚁觅食过程中,蚁群总能够按照寻找到一条从蚁巢和食物源的最优路径。


蚁群算法我接触的比较少,所以这里引用别人的内容,大家可以去参考链接中具体学习一下。


总结

本文介绍了道路匹配(MapMatching)中,几种GPS轨迹点常用聚类算法,包含经典的K-means聚类、蚁群聚类等,也包括了简单容易上手的基于时间和距离的聚类算法。
希望对大家有用!

道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类、蚁群算法等)相关推荐

  1. 算法杂货铺——k均值聚类(K-means)

    算法杂货铺--k均值聚类(K-means) 2010-09-20 20:05 by T2噬菌体, 57998 阅读, 48 评论, 收藏, 编辑 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法 ...

  2. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  3. Kmeans++、Mini-Batch Kmeans、Bisecting Kmeans、K中心点(K-Medoids)算法、K众数聚类、核K均值聚类

    Kmeans++.Mini-Batch Kmeans.Bisecting Kmeans.K中心点(K-Medoids)算法.K众数聚类.核K均值聚类 目录 Kmeans++.Mini-Batch Km ...

  4. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  5. 聚类算法中 K均值聚类(KMeans)的python实现

    ** 聚类算法中 K均值聚类(KMeans)的python实现 ** import numpy as np import matplotlib.pyplot as plt from sklearn.d ...

  6. 机器学习算法之 K 均值聚类

    机器学习算法之 K 均值聚类 本文我们来学习一下另一种经常听到的机器学习算法-- K 均值聚类. 这个名字确实跟"K 近邻"有些相像,但是要明确的是,"K 近邻" ...

  7. pythonk均值实现_python实现k均值算法示例(k均值聚类算法)

    简易完成平面图的点K平均值剖析,应用欧几里得间距,并且用pylab展现. 编码以下: import pylab as pl #calc Euclid squire def calc_e_squire( ...

  8. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  9. 聚类算法之K均值聚类

    K-Means聚类方法 1. 介绍 k均值聚类是基于样本集合划分的聚类算法.由于每个样本在划分的过程中只能属于一个类别,所以k-Means算法属于硬聚类. 2. 算法过程 k均值聚类算法是一个迭代的过 ...

最新文章

  1. 分块的单点修改查询区间和_树状数组的区间修改与单点查询与区间查询
  2. 不要指望未来科学的发展会改变元素周期表的形式
  3. Excel的vlookup函数的用法
  4. Ubuntu下添加定时任务执行php文件
  5. wxWidgets:wxLocale类用法
  6. Docker与自动化测试及其测试实践
  7. 记一次TCP连接异常故障解决
  8. android 时间应用程序,Android在首次启动时需要更多时间启动应用程序
  9. mysql 修改字段长度_面试官:InnoDB记录存储结构都不知道,你敢说你懂MySQL?
  10. jquery学习--对象
  11. python多进程控制gui界面_Python优雅地终止了多进程和gui进程
  12. canvas实现抽奖插件—大转盘和九宫格
  13. 【恋上数据结构】递归(函数调用过程、斐波那契数列、上楼梯、汉诺塔、递归转非递归、尾调用)
  14. linux函数 取值溢出,Linux eCryptfs工具parse_tag_3_packet()函数堆溢出漏洞
  15. 根据ip地址查找本地时区
  16. excel2016 android,新编Excel 2016应用大全(实战精华版)
  17. 大学选修计算机课程内容,《大学计算机基础》学大纲(公共课).doc
  18. 基于Arduino开发的智能小车
  19. pdf打印去掉页眉页脚(兼容ie)
  20. 图片加载oom以及photoView缩放崩溃问题

热门文章

  1. android lcd,国产安卓机:LCD屏幕,正式再见
  2. 为什么用virtualbox 安装ghost 系统总是出现错误而导致无法安装?怎么解决?
  3. 万字长文:读懂微服务编排利器Zeebe
  4. 服务器端包含SSI(Server Side Include)简介
  5. URIError: URI malformed
  6. 我竟然被淘口令骗了500大洋...
  7. DDoS攻击流量检测方法
  8. java企业排班系统企业考勤人脸识别考勤系统源码企业批量排班网站
  9. InstallShield自定义对话框浅谈(转)
  10. 一小时搭建实时数据分析平台