马尔可夫链与马尔可夫模型(附代码)

本文介绍了马尔可夫链的概念,作为描述依赖关系的随机过程,它在多个领域有广泛应用,如自然语言处理和城市规划。马尔可夫模型允许预测系统随时间的演变,例如通过分析锻炼计划来预测运动顺序。此外,文章还讨论了马尔可夫链的稳态和在信息论中的作用,如克劳德·香农如何使用它来建模语言。
摘要由CSDN通过智能技术生成

687d093824e61fdeefd6a853ee7c22b5.png

来源:我得学城
本文约5000字,建议阅读10+分钟
本文我们将介绍比较两个(或多个)分布以及评估它们之间差异的大小和显著性的不同方法。

马尔可夫链(有翻译为马尔科夫,英语:Markov chain),又称离散时间马尔可夫链(discrete-time Markov chain,缩写为DTMC,因俄国数学家安德烈·马尔可夫得名,为状态空间中经过从一个状态到另一个状态的转换的随机过程。 

马尔可夫链在各种领域都有广泛的应用,包括自然语言处理、机器学习、统计学和物理学等。在城市研究中,马尔可夫链也有诸多种应用,其中一些主要领域包括城市规划、交通流量建模和城市增长模拟等。 

本文来自:

https://towardsdatascience.com/markov-models-and-markov-chains-explained-in-real-life-probabilistic-workout-routine-65e47b5c9a73

作者:Carolina Bento

编辑:罗伯特

马尔可夫提出了一种表示现实世界随机系统和过程的方法,它能够编码依赖关系并随时间达到稳定状态。

当谈到大数定律的应用时,安德烈·马尔可夫(Andrei Markov)与帕维尔·涅克拉索夫(Pavel Nekrasov)并不一致,后者认为变量之间的独立性是必要的。

大数定律大致表述如下:当你收集独立样本时,随着样本数量的增加,这些样本的均值会收敛到总体的真实均值。

但是马尔可夫认为独立性并不是均值收敛的必要条件。因此,他着手定义了一个涉及依赖随机变量的过程中,随时间收敛于均值的方法。

1. 概念

1.1. 马尔可夫链:一种随机的依赖链

由于这种学术分歧,马尔可夫创造了一种描述随机系统或过程随时间演变的方法。

系统被建模为一系列状态,并且随着时间的推移,以特定的概率在状态之间转移。由于状态之间存在连接,它们形成了一个链条(chain)。

按照学术传统,将发现和新方法命名为开发或发现它们的人的名字,这种建模方法被称为马尔可夫链(Markov Chain)。

0d13eb42c43df6f84c4abdadd235d223.png

图1. 马尔可夫链的一个例子

马尔可夫链的特殊之处在于,当你沿着链条移动时,你所处的状态在任何给定的时间都是重要的。状态之间的转移是有条件的,也就是依赖于转移发生前所处的状态。

综合所有这些特点,马尔可夫能够证明,只要你能够到达链条中的所有状态,长期来看,移动到特定状态的概率将收敛到一个固定的值。

1.2. 马尔可夫模型

马尔可夫链是马尔可夫模型的最简单类型,其中所有状态都是可观察的,并且随时间收敛的概率。

但是还有其他类型的马尔可夫模型。例如,隐马尔可夫模型类似于马尔可夫链,但它们具有一些隐藏状态。由于它们是隐藏的,你不能直接在链条中看到它们,只能通过依赖于它的另一个过程的观察来间接地看到它们。

2. 马尔可夫模型可以做什么?

马尔可夫链在实际问题中的一个重要应用是由克劳德·香农(Claude Shannon)在贝尔实验室工作时进行的。

ccecd4769308a46834ef25e6c70fcb10.png

图2. 克劳德·香农

克劳德·香农被认为是信息论之父,因为在他的 1948 年的论文《通信的数学理论》(A Mathematical Theory of Communication)中,他创建了一个关于信息如何传输和接收的模型。

香农使用马尔可夫链来将英语语言建模为一系列具有一定随机性和彼此之间存在依赖关系的字母。

最终,这个马尔可夫模型能够生成类似英语的文本。

克劳德·香农的开创性工作推动了信息理论等科学领域的发展,也推动了自然语言处理和计算语言学等领域的发展,其中马尔可夫模型被广泛应用。

通过克劳德·香农及其后继者的工作,我们可以得出马尔可夫模型具有以下特点:

  • 以更真实的方式描述世界,

  • 是预测系统或过程的长期变化的有用工具。

描述世界的真实工具

大多数现实世界中的系统和现象涉及多个部分,这些部分很少是彼此独立的。创建一个能够编码这些依赖关系的模型是一种更真实地表示现实世界的方式。

克劳德·香农以英语语言为例,但让我们想一想你熟悉的其他事物,比如停车场的使用情况。

停车场有一定数量的停车位,但在任何给定的时间点上,可用停车位的数量可以描述为多个因素或变量的组合:

  • 星期几;

  • 一天中的时间;

  • 停车费;

  • 与交通的接近程度;

  • 与商业区的接近程度;

  • 附近的免费停车位数量;

  • 停车场内可用的停车位数量(满停车场可能会阻止一些人停在那里);

其中一些因素可能彼此独立,但也有些不是。例如,停车费通常取决于时间和星期几。

长期预测

由于马尔可夫模型描述了随时间变化的行为,因此可以利用它们提出关于系统未来状态的不同问题:

  • 随时间的演变:系统在   个时间步骤后会处于哪个状态?

  • 追踪过程中可能的序列:当系统在   步骤中从状态    转移到状态    时,按照特定路径  的概率有多大?

回到停车场的例子,你可以提出以下问题:

  • 3 小时后停车场的占用率是多少?

  • 停车场在 5 小时内以 50%的容量开始,然后降至 25%的容量的可能性有多大?


3. 马尔科夫链案例:锻炼计划

下面通过一个案例详细介绍马尔科夫链。

在过去的一年里,你已经确定了一个常用的锻炼计划。你已经根据你想要改善的区域和个人风格对其进行了优化。因此,在一个典型的锻炼日中,你会进行以下几组练习:

  • 跑步(3 英里)

  • 俯卧撑(20 个)

  • 划船(15 分钟)

  • 引体向上(20 个)

这些是你经常做的练习,但你注意到你并不总是按特定顺序进行。尽管每次不同,但有一种模式。你随机选择一项练习开始,然后根据之前做过的练习来选择下一组,但下一组并不是完全随机的,它通常取决于之前所做的练习。

你想更多地了解你的最佳锻炼计划,甚至根据你通常的结构来计划下一次锻炼。因此,你意识到你的锻炼计划可以被建模为一个马尔可夫链。

由于你选择下一个练习是基于之前做过的练习,所以你的锻炼计划符合马尔可夫假设。它假设每个状态之间的转移概率仅取决于当前所处的状态。

马尔可夫链具有短期记忆,它只记得你现在所在的位置和你想去的下一个位置。

这意味着你达到特定状态的路径不会影响到达另一个状态的概率。唯一能够影响从一个状态转移到另一个状态的可能性的是你当前所处的状态。

了解了所有这些,你可以对你的锻炼计划提出有趣的问题:

  • 如果我从跑步开始锻炼,我在第二组中做俯卧撑的可能性有多大?

  • 在一个包含 3 组的锻炼中,我做以下练习的可能性有多大?1)跑步,2)俯卧撑,3)引体向上。

  • 在第四组中做任何练习的可能性是多少?

为了找到回答这些问题的方法,首先你需要查看你的锻炼记录。幸运的是,你有很好的记录你的锻炼组数,查看最近 62 天的记录,你的锻炼计划如下:

680d27cd3c80dcdae9251cb60e4d145e.png

图3. 过去的62次锻炼中的锻炼记录‍

查看锻炼记录,你会发现在过去的 62 天中,20 次锻炼中有 8 次在完成 15 分钟划船后进行,返回是3 英里的跑步。

将每个锻炼组看作锻炼马尔可夫链中的一个状态,接下来要做的是编码状态之间的依赖关系,使用条件概率。

在马尔可夫模型的背景下,这些条件概率被称为转移概率。

转移概率描述链中状态之间的转移,是一种条件概率。

经过计算,你的转移概率如下所示:

c1ada38db8eb4080c9bb678d6340c83e.png

图4. 转移概率‍

因此,在刚完成 3 英里跑步后做 20 个俯卧撑的概率是   。这是因为: 

f02b3daa5e229436c6b74a6040a0cdde.png

用数学表示法来说,这些概率可以表示为一个转移矩阵。

0d4065a59a350d9688c62e6797f797c3.png

图5. 转移矩阵图

为了更好地可视化状态之间的转移,你可以将锻炼马尔可夫链表示为一个有向图。

6bbadfb826f2db4e252b8fe7faf999e9.png

图6. 锻炼马尔可夫链的图示

现在,你已经分析了数据并为你的锻炼计划创建了一个马尔可夫模型,你拥有了所有必要的构建模块,可以开始回答你之前提出的问题。


3.1. 如果我以跑步开始锻炼,那么在第二个锻炼组中做俯卧撑的概率有多大?

要了解锻炼计划如何随时间演变,需要考虑三个组成部分:

  • 起始状态。‍

  • 结束状态。‍

  • 时间框架,即模型从起始状态到结束状态所需的时间。

在这种情况下,起始状态是跑 3 英里,因为你选择以跑步开始锻炼,而结束状态是做 20 个俯卧撑。由于你在预测第二个锻炼组,所以时间框架为两个时间步。

接下来,你将计算总概率。将在马尔可夫链中所有可能的方式或路径组合起来,这些方式从跑步开始,经过两个时间步后进行俯卧撑。

根据这个条件,你有以下路径:

路径 1:在完成跑步后进行跑步,然后做一组俯卧撑。 

8c347b8149a7a1a82114f4ed10164bcc.png

路径 2:在完成跑步后进行 20 个俯卧撑,然后再做一组俯卧撑。

b076e5016b275746fa4fdac13e8d12a8.png

路径 3:在完成跑步后进行 15 分钟划船,然后做 20 个俯卧撑。 

438a2cc8854140213bff0f841f0db61e.png

路径 4:在完成跑步后进行 20 个引体向上,然后做 20 个俯卧撑。 

8b5e43c0a3c766d864d2abdbe344f4e5.png

将所有这些路径汇总在一起,以从跑步开始、以俯卧撑结束的两组锻炼的概率为 25%。

10f5f3a1870f73309767bcef1c7f8e7e.png

采用矩阵表示法,可以将两组锻炼的概率扩展到所有其他起始和结束状态的组合。

由于这对应于链在两个时间步中的形态,这个矩阵被称为转移矩阵的二次幂。

5fa41ee65211e51e44dec519a770adf3.png

图7. 过渡矩阵的二次方,即马尔科夫链在时间步2的状态‍

85338dbb31e49fb34ec1c4188d0d5243.png

未来状态使用递归计算

未来状态受到每次转换之前所处状态的影响。因此,要计算未来状态,需要将转移矩阵的前一个幂与模型的转移矩阵相乘。

在这种情况下,对于两个时间步,你将转移矩阵乘以自身。但是,如果你想知道链在第 3 步时的状态,你将取上面的 P2 矩阵,并将其乘以转移矩阵。

在这种情况下,对于两个时间步,将转移矩阵乘以自身。但是,如果要查看链条在第 3 步时的位置,将矩阵 P2 与转移矩阵相乘。

使用先前计算的矩阵进行的这种乘法序列称为递归。在一般形式上,它可以定义为:

058c38417a2c52f0622a681629b31668.png

图8. 马尔可夫链的 n 个时间步的递归‍

因此,每次递归产生的矩阵称为转移矩阵的幂。

稳态概率

所谓正则马尔可夫链的一个特征是,在足够多的迭代次数后,所有的转移概率都会收敛到一个值并保持不变。这意味着,在经过足够多的迭代后,无论你从哪个状态开始,最终到达链条中的任何给定状态的可能性是相同的

因此,当链条达到这一点时,我们可以说转移概率达到了稳态

这正是马尔可夫最终想要证明的内容!

链条达到稳态的时间步取决于状态之间可能的转换及其概率。

但是我们可以编写一个 Python 方法,对给定的马尔可夫链进行运算,直到达到特定的时间步或稳态。

f29a14c9f50ad1721cedf505645244c5.png

只需将给定的训练转移矩阵插入即可。

713c1bae8ead2cea517958cfa2e20a16.png

如上,马尔可夫链在第 5 个时间步达到稳态。

如果想查看每个时间步的转移矩阵,只需将 print_transitions 设置为 True。

a0862636baa33126deae64bcdfb73820.png

3.2. 如果链条无法达到稳态会怎么样?

只有正则马尔可夫链会随着时间的推移收敛。如果你的马尔可夫链不收敛,那么它具有周期性模式。

在具有周期性的马尔可夫链中,与最终以给定状态结束的可能性达到稳态值不同,你会从时间到时间获得相同的转移概率。

但是你可以测试你的马尔可夫链是否最终会收敛。

如果某个转移矩阵的某个幂次仅包含正值且非零值,则将该马尔可夫链视为正则的。

对于任何    的转移矩阵,你可以检查所有幂次的转移矩阵是否都包含全部正值且非零值,直到幂次为止: 

刚刚我们看到,训练马尔可夫链在第 5 个时间步达到了稳态。但是,如果你想测试链条是否正则,你需要检查转移矩阵的所有幂次,直到幂次为 10。 

3.3. 在 3 个动作的训练中,我做1)跑步,2)俯卧撑,3)引体向上的概率分别是多少?

进行一组由跑步开始,然后 20 个俯卧撑,最后 20 个引体向上的训练的概率,取决于在马尔可夫链中遵循特定路径。

由于链条中的每一步都对应一个条件概率,遵循特定路径的概率是构成该路径的所有条件概率的总和。 

4c4769e98ea8b3f66dea258bf6d85c8e.png

在这种情况下,进行跑步 → 俯卧撑 → 引体向上的训练的概率是   。

3.4. 第四组中进行任何一项训练的概率是多少?

在第一个问题中,你找到了一种预测未来特定时间会进行哪种训练的方法,使用了转移矩阵的幂。那里的重要细节是你知道它以跑步开始。

但是,如果你可以从任何一项训练开始,会怎样呢?

如果你选择开始训练时的任何一项训练的可能性相等,可以说训练马尔可夫链的起始状态遵循离散均匀分布。

假设你有 4 个可能的训练,且起始状态分布是均匀的,那么开始训练的概率可以用一个概率向量来描述,138f0e6faa53e47a5132d31533d2db97.png

然后,要知道到第四组时进行任何一项训练的概率,你需要计算起始概率向量的第四个元素。

只需将起始概率向量乘以转移矩阵的四次幂即可。

a168c02c60930a184d460e3f75b586df.png

到第四组时,你更有可能做 20 个俯卧撑或进行跑步训练。

4. 结语

在城市研究中,马尔可夫链也有诸多种应用,其中一些主要领域包括城市规划、交通流量建模和城市增长模拟。

城市规划:马尔可夫链可以用于城市土地使用和发展规划。通过分析城市不同地区之间的转变过程,可以建立土地使用类型之间的转移概率模型。这样的模型可以帮助规划者理解土地使用的演变趋势,预测未来的土地使用模式,并为城市规划决策提供支持。 

交通流量建模:马尔可夫链可以用于建模城市中的交通流量。通过将路段划分为不同的状态(例如,畅通、拥堵、事故等),可以建立马尔可夫链模型来描述不同状态之间的转移概率。这样的模型可以帮助交通规划者预测不同路段的交通流量变化,并评估不同交通管理策略的效果。 

城市增长模拟:马尔可夫链可以用于模拟城市的增长和扩展过程。通过将城市划分为不同的状态(例如,住宅区、商业区、工业区等),可以建立状态之间的转移概率模型。这样的模型可以用来模拟城市的发展轨迹,预测城市的未来增长方向和模式,从而为城市规划和可持续发展提供指导。

犯罪分析:马尔可夫链可以用于犯罪行为的建模和分析。通过将不同的犯罪类型定义为状态,并分析犯罪类型之间的转移概率,可以建立犯罪行为的马尔可夫链模型。这样的模型可以帮助警方预测犯罪的发生概率和犯罪类型的演变趋势,从而指导警力部署和犯罪预防措施。

希望你喜欢学习马尔可夫链和马尔可夫模型的知识。

代码链接: 

https://pan.baidu.com/s/1EWrYhTWYFWZRSuhFo4kkCg 

提取码: xs84 

编辑:黄继彦

b151a5d3504296c7fe44f0745b79bb28.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值