马尔可夫链(Markov chain)的基本认识

本文深入解读马尔科夫链的定义、特性,包括离散与连续状态模型,通过天气预测和汽车租赁案例阐述其在统计学和实际问题中的应用。重点讲解转移概率、状态分布、平稳分布和连续状态下的概率转移核。

本文内容主要参考:李航老师的《统计学习方法》
还有看看马尔科夫链

一、马尔可夫链在统计学中的定义

在这里插入图片描述
马尔可夫链(Markov Chain),描述了一种状态序列,其每个状态值取决于前面有限个状态。
在这里插入图片描述

二、如何通俗理解马尔可夫链

马尔可夫链指的是在已知现在的条件下,过去的信息与未来是独立的,这个独立是条件独立性。
最简单的例子就是:
已知父母具有某项特长天赋的条件下,孩子也拥有的概率。与已知祖宗十八代和父母的信息的条件下,孩子拥有这项天赋的概率,是一样的。
若要用人生的例子来讲,已知你大学学习情况下和已知你在幼儿园小学初中高中大学的所有学习情况下,考研能不能考上的概率是一样的。
但是,也不一定有道理:
考研考不考得上取决于学习的能力,而这种能力,其实是从小学初中高中大学的一个知识和学习能力的积累,尤其是复试考察的素质教育方面。
所以要要弄清适用情况
一、连续性的
1)生活中,无数的人,都是通过改变现在而改变未来的啊,非常正确啊!
2)但是,实际中,没有你的过去,怎么又有你的现在呢。这是个相互因果的链条啊!
3)所谓“链”,就是一环扣一环,环环有关才能称其为“链”。如果仅与临近的环有关,还能有链的概念吗?如从这个角度来说,马尔科夫链(难道定义错了,请看第4点)的这个举例,就是准确的。
4)但是,马尔科夫链的概念就是:数学中具有马尔可夫性质的离散时间随机过程。描述了一种状态序列,其每个状态值只取决于该状态值的前面的有限个状态,与再之前的状态无关。显然,按照这个定义的内涵,上面“你的未来只与你现在有关,而无关你的过去”又是错误的。即拿持续诸如生命过程、事物发展的过程来描述马尔科夫链概念,是不准确的
上面,3与4的结合,似乎辩证法、相对论的哲学问题出现了,且悖论也似乎形成了!!!
二、离散型的
比如:
丢出一个骰子,确定了结果后,丢下一次骰子的结果和上一次骰子的结果没有关系,同样和之前任何一次丢骰子都没关系,每个点均是1/6。
一个小孩子,他正在学习,下一刻继续学习的概率是一个固定数值,因为他的日常行为习惯通常都会固定,正在学习,下一刻转而去玩手机的概率也是某个固定数值,那么,只要时间足够长,比如一个暑假,他总计花费在学习上的时间和玩手机上的时间比例就会固定。
上面的例子满足1.每次事件发生概率固定;2.相互独立

三、马尔可夫链简单来说

一句话描述
状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备无记忆的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。
也就是说,马尔可夫链是一个随机系统,它必须满足两个条件:

  • 系统任意时刻可以用有限个可能状态之一来描述
  • 系统无后效性,即某阶段的状态一旦确定,则此后过程的演变不再受此前各种状态及决策的影响

在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率随机漫步就是马尔可夫链的例子。随机漫步中每一步的状态是在图形中的点,每一步可以移动到任何一个相邻的点,在这里移动到每一个点的概率都是相同的(无论之前漫步路径是如何的)
数学模型——初步理解马尔可夫链(Markov chain)
以下是随机漫步程序的python语言实现:

from random import choice
import matplotlib.pyplot as plt

class RandomWork():
    def __init__(self, num_points=5000):
        self.num_points = num_points

        self.x_values = [0]
        self.y_values = [0]

    def fill_walk(self):
        while len(self.x_values) < self.num_points:
            x_direction = choice([1, -1])
            x_distance = choice([0, 1, 2, 3, 4])
            x_step = x_direction * x_distance

            y_direction = choice([1, -1])
            y_distance = choice([1, 2, 3, 4])
            y_step = y_direction * y_distance

            next_x = self.x_values[-1] + x_step
            next_y = self.y_values[-1] + y_step

            self.x_values.append(next_x)
            self.y_values.append(next_y)

rw = RandomWork()
rw.fill_walk()
plt.plot(rw.x_values, rw.y_values)
plt.show()

结果:
在这里插入图片描述

四、离散状态马尔可夫链

4.1、转移概率矩阵和状态分布

离散状态马尔可夫链X = {X0,X1,……,Xt,……},随机变量Xt(t = 0,1,2,……)定义在离散空间S,转移概率分布可以由矩阵表示。
在这里插入图片描述
马尔可夫链的转移概率矩阵:
在这里插入图片描述
考虑马尔可夫链X = {X0,X1,……,Xt,……}在时刻t(t = 0,1,2,……)的概率分布,称为时刻t的状态分布,记作:
在这里插入图片描述
特别地,马尔可夫链的初始状态分布可以表示为:
在这里插入图片描述
有限离散状态的马尔可夫链可以由有向图表示。结点表示状态,边表示状态之间的转移,边上的数值表示转移概率。从一个初始状态出发,根据有向边上定义的概率在状态之间随机跳转(或随机转移),就可以产生状态的序列。马尔可夫链实际上是刻画随时间在状态之间转移的模型,假设未来的转移状态只依赖于现在的状态,而与过去的状态无关。
在这里插入图片描述
在这里插入图片描述
下面看一个马尔可夫链应用的例子。
自然语言处理、语音处理中经常用到语言模型(language model),是建立在词表上的n阶马尔可夫链。比如,在英语语音识别中,语音模型产生出两个候选:“How to recognize speech”与“How to wreck a nice beach”,要判断哪个可能性更大。显然从语义的角度前者的可能性更大,语言模型可以帮助做出这个判断。
在这里插入图片描述
在这里插入图片描述
语言模型的学习等价于确定马尔可夫链中的转移概率值,如果有充分的语料,转移概率可以直接从语料中估计。直观上,“wreck a nice”出现之后,下面出现“beach”的概率极低,所以第二个语句的概率应该更小,从语言模型的角度看第一个语句的可能性更大。
在这里插入图片描述
这是因为
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用python写这个晴雨天模型

概率:
在这里插入图片描述
转移矩阵P:
在这里插入图片描述
初始状态分布:
在这里插入图片描述
根据这个马尔可夫链模型,用Python计算出第二天、第三天甚至一个月后的天气概率分布(状态分布):

#离散状态马尔可夫链
from numpy import *

#今天是晴天,那么明天是晴天的概率是0.9,雨天的概率是0.1。
#今天是雨天,那么明天是晴天的概率是0.5,雨天的概率是0.5。

P = array([[0.9, 0.5], [0.1, 0.5]])    #转移矩阵

#假设第一天是晴天
Init_State = array([[1], [0]])   #初始状态分布

n = 30    #预测n天的事件发生概率
for i in range(n):
    S = dot(P, Init_State)    #dot()是点乘函数
    print(f'第{i+2}天天气概率分布:{S.T}')    #T的作用是将矩阵转置,将n*1变为1*n
    Init_State = S

结果:

2天天气概率分布:[[0.9 0.1]]3天天气概率分布:[[0.86 0.14]]4天天气概率分布:[[0.844 0.156]]5天天气概率分布:[[0.8376 0.1624]]6天天气概率分布:[[0.83504 0.16496]]7天天气概率分布:[[0.834016 0.165984]]8天天气概率分布:[[0.8336064 0.1663936]]9天天气概率分布:[[0.83344256 0.16655744]]10天天气概率分布:[[0.83337702 0.16662298]]11天天气概率分布:[[0.83335081 0.16664919]]12天天气概率分布:[[0.83334032 0.16665968]]13天天气概率分布:[[0.83333613 0.16666387]]14天天气概率分布:[[0.83333445 0.16666555]]15天天气概率分布:[[0.83333378 0.16666622]]16天天气概率分布:[[0.83333351 0.16666649]]17天天气概率分布:[[0.8333334 0.1666666]]18天天气概率分布:[[0.83333336 0.16666664]]19天天气概率分布:[[0.83333334 0.16666666]]20天天气概率分布:[[0.83333334 0.16666666]]21天天气概率分布:[[0.83333334 0.16666666]]22天天气概率分布:[[0.83333333 0.16666667]]23天天气概率分布:[[0.83333333 0.16666667]]24天天气概率分布:[[0.83333333 0.16666667]]25天天气概率分布:[[0.83333333 0.16666667]]26天天气概率分布:[[0.83333333 0.16666667]]27天天气概率分布:[[0.83333333 0.16666667]]28天天气概率分布:[[0.83333333 0.16666667]]29天天气概率分布:[[0.83333333 0.16666667]]30天天气概率分布:[[0.83333333 0.16666667]]31天天气概率分布:[[0.83333333 0.16666667]]

例子

参考这篇文章马尔科夫链(Markov chain)5分钟简单入门中的例子

有一个大的汽车租赁公司,有三家门店,你租的时候可以选择任何一个门店,还的时候也可以选择任何一家门店, 从不同门店借出和归还的概率如下:
在这里插入图片描述
假设用户最开始从2号店借出车,十五次借还以后,这辆车最可能在哪个门店呢?
用python实现15次借还后的预测:

#离散状态马尔可夫链
from numpy import *

P = array([[0.5, 0.3, 0.3], [0.2, 0.1, 0.6], [0.3, 0.6, 0.1]])    #转移矩阵

Init_State = array([[0], [1], [0]])   #初始状态分布

n = 15    #预测n天的事件发生概率
for i in range(1,n):
    S = dot(P, Init_State)    #dot()是点乘函数
    print(f'第{i}次借还后该车在某号店的概率分布:{S.T}')    #T的作用是将矩阵转置,将n*1变为1*n
    Init_State = S

结果:

1次借还后该车在某号店的概率分布:[[0.3 0.1 0.6]]2次借还后该车在某号店的概率分布:[[0.36 0.43 0.21]]3次借还后该车在某号店的概率分布:[[0.372 0.241 0.387]]4次借还后该车在某号店的概率分布:[[0.3744 0.3307 0.2949]]5次借还后该车在某号店的概率分布:[[0.37488 0.28489 0.34023]]6次借还后该车在某号店的概率分布:[[0.374976 0.307603 0.317421]]7次借还后该车在某号店的概率分布:[[0.3749952 0.2962081 0.3287967]]8次借还后该车在某号店的概率分布:[[0.37499904 0.30189787 0.32310309]]9次借还后该车在某号店的概率分布:[[0.37499981 0.29905145 0.32594874]]10次借还后该车在某号店的概率分布:[[0.37499996 0.30047435 0.32452569]]11次借还后该车在某号店的概率分布:[[0.37499999 0.29976284 0.32523717]]12次借还后该车在某号店的概率分布:[[0.375      0.30011858 0.32488142]]13次借还后该车在某号店的概率分布:[[0.375      0.29994071 0.32505929]]14次借还后该车在某号店的概率分布:[[0.375      0.30002965 0.32497035]]15次借还后该车在某号店的概率分布:[[0.375      0.29998518 0.32501482]]

4.2 平稳分布

在这里插入图片描述
直观上,如果马尔可夫链的平稳分布存在,那么以该平稳分布作为初始分布,面向未来进行随机状态转移,之后任何一个时刻的状态分布都是该平稳分布。
在这里插入图片描述
在这里插入图片描述
引理19.1给出一个求马尔可夫链平稳分布的方法。

例题

在这里插入图片描述
在这里插入图片描述

from sympy import *
x1, x2, x3 = symbols('x1, x2, x3')
I = x1 + x2 + x3 -1
P = Matrix([[1/2, 1/2, 1/4], [1/4, 0, 1/4], [1/4, 1/2, 1/2]])
S = Matrix([[x1], [x2], [x3]])

print(solve([P*S-S, I],[x1,x2,x3]))

结果:

{x3: 0.400000000000000, x2: 0.200000000000000, x1: 0.400000000000000}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

from sympy import *
x1, x2, x3 = symbols('x1, x2, x3')
I = x1 + x2 + x3 -1
P = Matrix([[1, 1/3, 0], [0, 1/3, 0], [0, 1/3, 1]])
S = Matrix([[x1], [x2], [x3]])

print(solve([P*S-S, I],[x1,x2,x3]))

结果:

{x2: 0.0, x1: 1.0 - x3}

由上面这个例子可知:
马尔可夫链可能存在唯一平稳分布,无穷多个平稳分布,或不存在平稳分布。

五、连续状态马尔可夫链

连续状态马尔可夫链 X = {X0,X1,……,Xt,……},随机变量Xt(t=0,1,2,……)定义在连续状态空间S,转移概率分布由概率转移核或转移核(transition kernel)表示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<think> 首先,用户的问题是:“我想了解马尔科夫链(Markov Chain)和马尔可夫模型的相关信息 请问马尔科夫链(Markov Chain)和马尔可夫模型的介绍、原理、应用等相关信息”。所以,我需要提供一个全面的概述,包括介绍、原理、应用等。 关键点是: - 马尔科夫链(Markov Chain):这是核心概念,通常指的是一种随机过程,其中未来状态只依赖于当前状态,而不依赖于过去的状态序列(马尔科夫性质)。 - 马尔可夫模型:这是一个更广泛的术语,泛指基于马尔科夫性质的模型。马尔科夫链是其中的一个子集。常见的模型包括隐马尔可夫模型(HMM)、马尔可夫决策过程(MDP)等。 用户引用了站内引用[1],这是关于MCMC中的混合和收敛的。引用讨论了混合(良好探索状态空间)和收敛(稳定在目标分布)的区别,以及相关术语如burn-in、trace plot等。但用户说“上述引用仅供参考,并不是用户真正的需求”,所以我不能直接依赖它作为主要来源。相反,我需要专注于回答用户的问题。 我的回答应该: - 使用系统级指令:所有行内数学表达式用$...$,独立公式用$$...$$并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 结构清晰,逐步解决问题。 - 保证真实可靠。 - 生成相关问题(在末尾添加§§相关问题§§部分)。 - 如果在回答中引用段落,末尾添加引用标识如[^1],但用户提供了引用[1],我需要谨慎使用。用户说“参考站内引用”,所以我可能需要在回答中融入相关知识,但不直接复制。 组织回答结构: 1. **介绍**:定义马尔科夫链和马尔可夫模型。 2. **原理**: - 马尔科夫性质:$P(X_{t+1} = x | X_t = x_t, X_{t-1} = x_{t-1}, \dots) = P(X_{t+1} = x | X_t = x_t)$ - 状态空间、转移矩阵等。 - 扩展到马尔可夫模型,如HMM的基本原理。 3. **应用**:列出常见应用领域。 4. **相关概念**:简要提及收敛、混合等,结合用户提供的引用。 5. **生成相关问题**:在末尾添加相关问题。 确保使用LaTeX: - 行内数学:例如,转移概率$P_{ij}$。 - 独立公式:例如,定义马尔科夫性质:$$P(X_{t+1} = j | X_t = i) = P_{ij}$$ 参考用户提供的引用: - 引用[1]是关于MCMC的,涉及马尔科夫链的应用之一(在MCMC中,马尔科夫链用于采样)。 - 所以,在应用中,我可以提到MCMC作为马尔科夫链的应用实例。 - 在讨论收敛和混合时,可以简要提及,如:在马尔科夫链蒙特卡罗(MCMC)方法中,混合和收敛是重要概念... 然后引用[^1],但这个引用是用户提供的,所以我需要标注。 引用标识:用户说“参考站内引用[1]”,并提供了内容。我应该使用引用标识,如[^1],在相关内容后添加。 最终输出结构: - 开头:清晰分段。 - 主体:分部分回答。 - 结尾:添加相关问题。 生成相关问题:(根据系统指令) - 在末尾添加§§相关问题§§部分,列出2-3个相关问题。 内容大纲: 1. **介绍**: - 马尔科夫链:定义、基本性质。 - 马尔可夫模型:概述,包括HMM等。 2. **原理**: - 马尔科夫性质。 - 转移概率和矩阵。 - 状态分类(如瞬态、常返)。 - 对于马尔可夫模型,如HMM:隐藏状态和观测序列。 3. **应用**: - 马尔科夫链:队列系统、随机游走。 - HMM:语音识别、生物信息学。 - MCMC:贝叶斯统计(引用用户提供的)。 4. **相关概念**: - 简要讨论收敛:如马尔科夫链达到平稳分布。 - 结合引用[1],提到混合和收敛的区别。 5. **相关问题**:例如: 1. 如何计算马尔科夫链的平稳分布? 2. 隐马尔可夫模型的训练算法有哪些? 3. MCMC中的收敛诊断方法是什么? 确保回答真实可靠:基于标准概率论和机器学习知识。 </think> ### 马尔科夫链和马尔可夫模型概述 马尔科夫链(Markov Chain)和马尔可夫模型是基于马尔科夫性质的随机过程模型,广泛应用于统计学、计算机科学、物理学和工程等领域。马尔科夫链是一种离散时间随机过程,其核心思想是“无记忆性”:未来状态只依赖于当前状态,而与过去状态无关。马尔可夫模型(Markov Model)则是一个更广泛的概念,涵盖基于马尔科夫性质的各种模型,如隐马尔可夫模型(Hidden Markov Model, HMM)。本回答将从介绍、原理、应用和相关概念几个方面进行系统阐述。 #### 1. 介绍 马尔科夫链描述一个系统在状态空间中的转移过程。例如,考虑一个天气系统,状态为“晴天”或“雨天”,其未来状态仅由当前状态决定,不依赖于历史序列。马尔可夫模型扩展了这一思想,其中HMM引入了“隐藏状态”的概念:系统内部状态不可直接观测,只能通过可观测的输出序列推断。马尔科夫链是马尔可夫模型的基础形式,常用于模拟序列数据的动态变化。 #### 2. 原理 马尔科夫性质是核心原理,定义为:给定当前状态,未来状态与过去状态独立。数学上,对于一个离散时间马尔科夫链,状态序列为$X_1, X_2, \dots, X_t$,其性质可表示为: $$ P(X_{t+1} = j \mid X_t = i, X_{t-1} = i_{t-1}, \dots, X_1 = i_1) = P(X_{t+1} = j \mid X_t = i) $$ 其中,$i$ 和 $j$ 表示状态,$P(X_{t+1} = j \mid X_t = i)$ 称为转移概率。 - **状态空间和转移矩阵**:马尔科夫链的状态空间是所有可能状态的集合(如有限状态集 $\{s_1, s_2, \dots, s_n\}$)。转移概率可组织为转移矩阵 $P$,其中元素 $P_{ij}$ 表示从状态 $i$ 转移到状态 $j$ 的概率。矩阵满足行和为1: $\sum_j P_{ij} = 1$。 - **收敛和平稳分布**:如果马尔科夫链满足一定条件(如不可约和非周期性),它最终会收敛到一个平稳分布 $\pi$。平稳分布定义为:当 $t \to \infty$ 时,$P(X_t = j) \to \pi_j$,且 $\pi$ 满足方程 $\pi P = \pi$。 - **扩展到马尔可夫模型**:例如,隐马尔可夫模型(HMM)包括隐藏状态序列 $Q_t$ 和观测序列 $O_t$。其原理基于两个概率:转移概率 $P(Q_{t+1} \mid Q_t)$ 和发射概率 $P(O_t \mid Q_t)$。HMM的训练通常使用向前-向后算法(Baum-Welch算法)。 马尔科夫链的收敛依赖于混合(mixing)特性:良好的混合确保链能高效探索状态空间(避免陷入局部区域),而收敛则要求链稳定在目标分布。[^1] 在马尔可夫链蒙特卡罗(MCMC)方法中,混合不佳会导致样本自相关性过强,影响估计精度,因此常通过预烧(burn-in)和多链诊断来评估。[^1] #### 3. 应用 马尔科夫链和马尔可夫模型在多个领域有广泛应用: - **队列系统和随机过程**:马尔科夫链用于建模排队理论(如客户到达和服务时间),其中状态表示系统队列长度。例如,电话呼叫中心的流量分析。 - **自然语言处理**:HMM用于语音识别和词性标注。隐藏状态对应语言结构(如词类),观测序列是音频信号或单词序列。 - **生物信息学**:HMM应用于基因序列分析,隐藏状态代表编码区或非编码区序列。 - **金融和经济学**:马尔科夫链模拟资产价格波动或经济周期变化(如牛市/熊市状态转移)。 - **机器学习中的采样**:在MCMC算法(如Gibbs抽样)中,马尔科夫链用于从复杂分布(如贝叶斯后验分布)采样。混合良好的链可生成代表性样本,加速收敛。[^1] #### 4. 相关概念 - **收敛诊断**:在MCMC中,常用轨迹图(trace plot)检查链的收敛性,自相关性图评估样本依赖性。[^1] 多链方法通过不同初值运行短链,识别多峰分布问题。[^1] - **混合与收敛的关系**:混合是收敛的必要条件(良好的探索能力确保覆盖状态空间),但需足够迭代次数才能稳定到平稳分布。[^1] - **局限性**:马尔科夫假设忽略长期依赖,有时需用高阶马尔可夫模型或其他扩展(如马尔可夫决策过程处理强化学习问题)。 总之,马尔科夫链提供了一种简约高效的序列建模框架,而马尔可夫模型(如HMM)进一步处理了部分可观测场景。理解其原理和应用有助于在数据分析中构建更鲁棒的随机模型。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值