地图匹配(隐马尔科夫,维特比算法(本质是动态规划))

 

地图Map-Matching流行算法及应用

http://www.semocean.com/lbs%E5%9C%B0%E5%9B%BEmap-matching%E6%B5%81%E8%A1%8C%E7%AE%97%E6%B3%95%E5%8F%8A%E5%BA%94%E7%94%A8/

从隐式马尔科夫模型到地图匹配(上)

https://mp.weixin.qq.com/s?__biz=MzI4MDAwMDY0OQ==&mid=2455399361&idx=1&sn=ed63070e65116e8addf939a4aed2d36c&chksm=fc11ea27cb6663310e524517e9aaecc97f99b099a4ebc7b56a18e0901b23fbcafc63ce3d5f29&scene=21#wechat_redirect

从隐式马尔科夫模型到地图匹配(下)

https://mp.weixin.qq.com/s/VY24VumqJI8N7yg62HAnvQ

假设我有三种类型的骰子:

 

  1. 正四面体的骰子,我们将其简称为 D4,可以随机投出 1,2,3,4 中的任意一个数字。

  2. 正六面体的骰子,也就是立方体的骰子,我们将其简称为 D6,可以随机投出 1,2,3,4,5,6 中的任意一个数字。

  3. 正八面体的骰子,我们将其简称为 D8,可以随机投出 1,2,3,4,5,6,7,8 中的任意一个数字。

 

由于骰子是均匀的,所以我们认为每次投出来每个数字的概率都是相等的。也就是说,D4 投出 1 到 4 中的每个数字的概率都是 1/4。D6 投出 1 到 6 中的每个数字的概率都是 1/6。D8 投出 1 到 8 中的每个数字的概率都是 1/8。

 

现在,我们要以一定的规则来投掷出一串数字,具体的规则如下:

 

  • 刚开始的时候,我随机选择任意一个骰子来投掷出一个数字,也就是说,每个骰子被选中的概率都是 1/3。

  • 以后的每一次投掷,我都以 1/2 的概率选择沿用上一次选择的骰子,或者分别以 1/4 的概率选择另外两个骰子。

 

那么,对应于这么一个场景,我们可以提出下面这三类问题:

 

  1. 已知我每次选用的骰子是哪一个,比如这个序列是 “D4-D6-D6-D8”,并且已知我投掷出的数字序列,比如是 “2-6-4-6”,那么我想知道,我投掷出这个序列的概率是多少?

  2. 已知我最终记录下来的数字序列,比如是 “2-6-4-6”,我想知道,投出这个序列的最大可能的骰子序列是哪一组?

  3. 问题可以更夸张一些,我不知道骰子是不是均匀的(意思就是,我不知道骰子投出每个数字的概率是多少),也不知道我每次投掷都是以什么样的概率去选择骰子的,但是我有很多组记录下来的数字序列,我想根据这些数字序列来反推出我所有不知道的概率值是多少?

上面的三个问题代表了隐式马尔科夫模型能解决的三大问题,每一类问题都有对应的算法。

为了规范后面的描述,我们先做一下术语定义:

  • 上面提到的骰子序列,我们称之为隐藏序列;

  • 上面提到的数字序列,我们称之为观测序列;

  • 上面提到的骰子的投掷概率,我们称之为观测概率;

  • 上面提到的骰子的选择概率,我们称之为转换概率;

  • 观测概率和转换概率我们将其称之为模型参数。

那么,上面提到的三类问题,可以抽象为:

  1. 已知隐藏序列和模型参数,求观测序列的概率。

  2. 已知观测序列和模型参数,求最大可能的隐藏序列。

  3. 已知大量的观测序列,确定模型参数。

现在,我们来确定下我们的地图匹配属于哪一类问题。很容易就能想到,我们的 GPS 轨迹就是我们实际的观测结果,而实际走过的路段,则类似于骰子一样,我选择了这条路段,然后我在这个路段上的 GPS 定位又有一定概率的观测误差。所以,轨迹就对应于我们说的观测序列,而要求解的实际走过的路段序列则对应于我们说的隐藏序列,我们要通过观测序列来求解隐藏序列,这就对应于我们上面说的第二类问题。而这一类问题的最常用求解方法就是维特比算法(Viterbi Algorithm)。

  • 初始化第一个观测点的所有可能状态(对应于骰子问题,状态就指选用哪个骰子)概率。

  • 从前往后遍历每一个状态,对于每一个状态,用以下方法计算当前观测点的所有可能状态的概率:

  1. 遍历当前观测可能对应的所有状态;

  2. 对每个状态,遍历所有上一状态,通过公式 P(当前状态) = P(上一状态) * P(上一状态转移到当前状态) * P(当前状态观测) 来计算当前状态的概率。

  • 当所有观测点都遍历完之后,查找概率值最大的那个状态,然后查找这个概率值对应的上一状态,就这样一路往回找,所找到的序列(倒序的)就是最大概率的隐藏序列。

实际中假设观测概率是均值为0的高斯分布,转移概率是负指数分布

作者:路生
链接:https://www.zhihu.com/question/20136144/answer/763021768
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

如下图,假如你从S和E之间找一条最短的路径,除了遍历完所有路径,还有什么更好的方法?

维特比算法解决的是栅栏图的最短路径问题,图的节点按列组织,每一列的节点只能和相邻的列的节点相连,不能跨列相连,节点之间有着不同的距离,距离的值就不在图上全部标注出来了,大家自行脑补。

答案:维特比算法。

过程非常简单:

为了找出S到E之间的最短路径,我们先从S开始从左到右一列一列地来看。

首先从S到A列的路径,有三种可能:S-A1、S-A2、S-A3,如下图:

 

 

我们不能武断的说S-A1、S-A2、S-A3中的哪一段肯定是最短路径中的一部分。

我们接下来在看B列,B列的B1、B2、B3一个个地来分析。

先看B1:

 

 

如上图,经过B1的路径有3条:

S-A1-B1

S-A2-B1

S-A3-B1

这三条路径中我们肯定可以知道其中哪一条是最短的,假如S-A3-B1是最短的,那么我们就得出了,经过B1的所有路径当中S-A3-B1是最短的,其它两条路径路径S-A1-B1和S-A2-B1可以删掉了。

 

 

接下来,我们继续看B2:

 

 

如上图,经过B2的路径有3条:

S-A1-B2

S-A2-B2

S-A3-B2

这三条路径中我们肯定可以知道其中哪一条是最短的,假如S-A1-B2是最短的,那么我们就得出了,经过B2的所有路径当中S-A1-B2是最短的,其它两条路径路径S-A2-B2和S-A3-B1可以删掉了。

 

 

接下来我们继续看B3:

 

 

如上图,经过B3的路径有3条:

S-A1-B3

S-A2-B3

S-A3-B3

这三条路径中我们肯定可以知道其中哪一条是最短的,假如S-A2-B3是最短的,那么我们就得出了,经过B3的所有路径当中S-A2-B3是最短的,其它两条路径路径S-A1-B3和S-A3-B3可以删掉了。

 

 

现在对于B列的所有节点我们都过了一遍,看看我们找到多少条最短路径:

 

 

上图是我们我们删掉了其它不可能是最短路径的情况,留下了三个可能的最短路径:S-A3-B1、S-A1-B2、S-A2-B3,现在我们汇总到下图:

 

 

S-A3-B1、S-A1-B2、S-A2-B3都有可能是全局的最短路径,我们不能武断地说哪一条一定是全局最短路径的一部分。

如果我们你认为没毛病就继续往下看C列,如果不理解,回头再看一遍。

讲到C列了,类似B列,我们从C1、C2、C3一个个节点分析。

经过C1节点的路径有:

S-A3-B1-C1、

S-A1-B2-C1、

S-A2-B3-C1

 

 

我们肯定能从这三条路径中找到最短的那条,例如:S-A3-B1-C1,其它两天就删掉好了。

 

 

同理,我们可以找到经过C2和C3节点的最短路径,汇总一下:

 

 

在C列也只剩3条备选的最短路径,我们仍然不能武断地断定哪条最短。

我们继续看E了。

到E也只有3种可能性:

 

 

我稍微对比一下这三条路径的总长度就能知道哪条是最短路径了

 

 

在效率方面相对于粗暴地遍历所有路径,维特比算法到达每一列的时候都会删除不符合最短路径要求的路径,大大降低时间复杂度。

一时兴起画的图,略显粗糙,将就看吧。

如果看的懂就去点赞吧!

  • 20
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
马尔科模型(HMM)是一种统计模型,用于描述一个由藏状态和可观察状态组成的序列,并通过计算概率来对藏状态进行推断。HMM算法可以应用于许多领域,包括地图匹配地图匹配是将移动对象的轨迹数据与预先定义的地图进行对应的过程。HMM算法可以用于实现地图匹配,以下是实现地图匹配的基本步骤: 1. 数据预处理:将原始轨迹数据进行清洗和处理,包括去除噪声、填充缺失值等。 2. 地图建模:将地图划分为一系列的离散区域,例如网格或路段,并给每个区域分配一个藏状态。 3. 初始化HMM模型:定义HMM模型的初始状态概率矩阵、转移概率矩阵和观测概率矩阵。 4. 观测生成:将轨迹数据中的观测状态映射到地图的区域。 5. 动态规划:利用前向算法或维算法计算给定观测序列条件下的最优藏状态序列。 6. 地图匹配结果:通过最优藏状态序列映射到地图的区域,得到地图匹配结果。 7. 评估与优化:对地图匹配结果进行评估和优化,比较匹配结果与真实轨迹数据的差异,并可能采取进一步的优化措施。 HMM算法地图匹配中的优势是可以处理观测数据中的噪声和不确定性,并且具有较好的鲁棒性。然而,HMM算法也有一些限制,例如对初始参数的依赖和计算复杂度较高等。 综上所述,HMM算法可以实现地图匹配,通过对观测数据进行概率计算来推断藏状态序列,从而映射轨迹数据到地图上的区域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值