【学术】马尔可夫链的详细介绍及其工作原理

2018-03-27 15:54:28 浏览数 (1)

AiTechYun

编辑:xiaoshan

马尔可夫链是一种相当常见的、相对简单的统计模型随机过程的方法。它们已经被应用于许多不同的领域,从文本生成到金融建模。一个常见的例子是r/SubredditSimulator,它使用马尔可夫链来自动创建整个subreddit的内容。总的来说,马尔可夫链在概念上是相当直观的,并且非常容易理解,因为它们可以在不使用任何高级统计或数学概念的情况下实现。它们是学习概率建模和数据科学技术的好方法。

(来自http://setosa.io/ev/markov-chains/)

  • r/SubredditSimulator地址:https://www.reddit.com/r/SubredditSimulator/

场景

首先,我将用一个非常常见的例子来描述它们:

代码语言:javascript复制
假设天气有两种可能的状态:晴天或阴天。

你可以直接观察当前的天气状态,并且保证始终是前面提到的两个状态之一。

现在,你想要预测明天的天气。直觉上,你假设在这个过程中有一个内在的转移,因为
当前的天气对第二天的天气有一定的影响。所以,作为尽职尽责的人,你收集了数年的
天气数据,并计算出在阴天之后的晴天的概率是0.25。你还注意到,通过类推,可以得
出在阴天之后出现阴天的概率必须是0.75,因为天气只有两个可能的状态。

你现在可以利用这个分布,根据当时的天气状况来预测未来几天的天气。

这个例子说明了马尔可夫链的许多关键概念。马尔可夫链本质上由一组转移组成,这些转移由一些满足马尔可夫性质的概率分布决定。

在这个例子中,通过观察从当前的一天到下一天的过渡,得到的概率分布。这说明了马尔可夫属性,马尔可夫过程的独特特征,使它们无记忆。这通常会使他们无法成功地产生一些潜在趋势可能会发生的序列。例如,虽然马尔可夫链可以基于单词频率来模仿作者的写作风格,但是由于这些是经过更长的文本序列开发的,因此无法产生包含深层含义或主题意义的文本。它们缺乏产生与上下文相关的内容的能力,因为他们无法将之前的所有状态考虑在内。

天气可视化的例子

模型

马尔可夫链是一种概率自动机。状态转移的概率分布通常表示为马尔可夫链的转移矩阵(transition matrix)。如果马尔可夫链有N个可能状态,矩阵将是一个N * N矩阵,例如条目【entry】(I,J)从状态I转移到状态J的概率。此外,转移矩阵必须是一个随机矩阵,矩阵的每一行中的条目必须加起来为1。这是完全合理的,因为每一行代表它自己的概率分布。

示例:马尔可夫链的一般视图

示例:转移矩阵有3个可能的状态

此外,马尔可夫链也有一个初始状态向量,表示为一个N×1矩阵(一个向量),它描述了在N个可能状态中的每一个状态下开始的概率分布。向量的条目I从状态I开始描述链状态的概率。

初始状态向量有4个可能的状态

模型和场景通常是表示马尔可夫链所需的全部。

我们现在知道了如何获得从一个状态转移到另一个状态的机会,但是如何找到在多个步骤中找到转移的机会呢?为了使它正式化,我们现在想要确定在M步中从状态I转移到状态J的概率。事实证明,这其实很简单。给定一个转移矩阵P,这可以通过提高PM次幂来计算矩阵条目(I,J)的值来确定,对于M的小值,可以通过重复的乘法运算手动实现。然而,对于M的大值,如果你熟悉简单的线性代数,将矩阵对角化是更有效的方法。

结论

现在你已经了解了马尔可夫链的基本知识,现在你应该能够轻松地用你选择的语言实现它们。如果编码不是你的强项,那么还有很多更高级的马尔可夫链和马尔可夫过程的特征可以去深入研究。在我看来,沿着理论路线的自然前进方向是隐藏的马尔可夫过程或MCMC。简单的马尔可夫链是其他更复杂的建模技术的构建模块,因此,通过这些知识,你现在可以在诸如信念建模和取样等主题中使用各种技术。

0 人点赞