马尔可夫模型

马尔可夫

安德雷·马尔可夫(Andrey Markov),俄国数学家,在概率论、数理统计和随机过程等领域做出了重要贡献,20世纪初期提出了一种数学模型,即马尔可夫过程Markov Process),用于描述具有“无记忆性”的随机过程。

马尔可夫性质

马尔可夫性质(Markov Property)是概率论中的一个概念,它是指一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态,而与过去状态(即该过程的历史路径)是条件独立的。

简单来说,马尔可夫性质是指一个系统的状态转移概率只与当前状态有关,而与过去的状态无关。这意味着,无论过去的状态如何,系统的未来状态只取决于当前状态,而不受过去状态的影响。

马尔可夫过程/马尔科夫链

马尔可夫过程(Markov Process),也叫做马尔可夫链(Markov Chain),是一种随机过程,它具有“马尔可夫性质”,即当前状态的概率只取决于前一个状态而不受更早状态的影响。

在数学上,一个离散时间的马尔可夫过程可以由一个四元组 ( S , P , π 0 , T ) (S, \mathbf{P}, \pi_0, T) (S,P,π0​,T)来定义,其中:

  • S S S是状态空间,表示该过程可能处于哪些状态;
  • P \mathbf{P} P是转移概率矩阵,表示从一个状态转移到另一个状态的概率;
  • π 0 \pi_0 π0​是初始概率分布,表示该过程最初处于各种状态的概率分布;
  • T T T是时间集合,表示该过程所对应的时间轴。

假设 { X n } \{X_n\} {Xn​}表示一个随机过程,其中 X n X_n Xn​可以取值于状态集合 S S S中的某一个状态。若对于任意的 n ≥ 0 n\geq 0 n≥0和任意的状态 i 0 , i 1 , ⋯ , i n − 1 , i , j ∈ S i_0,i_1,\cdots,i_{n-1},i,j\in S i0​,i1​,⋯,in−1​,i,j∈S,都有:

P ( X n + 1 = j ∣ X 0 = i 0 , X 1 = i 1 , ⋯ , X n = i n ) = P ( X n + 1 = j ∣ X n = i ) P(X_{n+1}=j|X_0=i_0,X_1=i_1,\cdots,X_n=i_n)=P(X_{n+1}=j|X_n=i) P(Xn+1​=j∣X0​=i0​,X1​=i1​,⋯,Xn​=in​)=P(Xn+1​=j∣Xn​=i)

则称该随机过程为马尔可夫过程,其中 P ( X n + 1 = j ∣ X n = i ) P(X_{n+1}=j|X_n=i) P(Xn+1​=j∣Xn​=i)为从状态 i i i到状态 j j j的转移概率,并且该转移概率与时间 n n n无关。上述公式的状态转移概率只考虑前一个状态,也叫一阶马尔可夫链。

从一阶能够扩展到高阶马尔可夫过程,相应的计算复杂度也会增加,二阶马尔科夫链:

假设 { X n } \{X_n\} {Xn​}表示一个随机过程,其中 X n X_n Xn​可以取值于状态集合 S S S中的某一个状态。若对于任意的 n ≥ 2 n\geq 2 n≥2和任意的状态 i 0 , i 1 , ⋯ , i n − 1 , i , j , k ∈ S i_0,i_1,\cdots,i_{n-1},i,j,k\in S i0​,i1​,⋯,in−1​,i,j,k∈S,都有:

P ( X n + 1 = k ∣ X n = j , X n − 1 = i , X 0 = i 0 , X 1 = i 1 , ⋯ , X n − 2 = i n − 2 ) = P ( X n + 1 = k ∣ X n = j , X n − 1 = i ) P(X_{n+1}=k|X_n=j,X_{n-1}=i,X_0=i_0,X_1=i_1,\cdots,X_{n-2}=i_{n-2})=P(X_{n+1}=k|X_n=j,X_{n-1}=i) P(Xn+1​=k∣Xn​=j,Xn−1​=i,X0​=i0​,X1​=i1​,⋯,Xn−2​=in−2​)=P(Xn+1​=k∣Xn​=j,Xn−1​=i)

上面的马尔科夫链考虑的都是在某一个状态经过固定时间间隔转移到下一个状态,定义的状态转移概率只与时间间隔有关,与起始状态无关,这种性质称为时齐性。需要注意的是,马尔可夫过程通常具有离散时间和连续时间两种形式。在离散时间马尔可夫过程中,状态变量的取值仅在离散的时间点上发生改变;而在连续时间马尔可夫过程中,状态变量可以在任意时刻随机转移。

状态转移矩阵

马尔可夫链的状态转移矩阵,通常也称为转移概率矩阵,是一个方阵,矩阵中的元素表示从当前状态到达下一状态的概率。假设该马尔可夫链具有N个状态,则其状态转移矩阵可以表示为:

P = [ p 11 p 12 ⋯ p 1 N p 21 p 22 ⋯ p 2 N ⋮ ⋮ ⋱ ⋮ p N 1 p N 2 ⋯ p N N ] P=\begin{bmatrix} p_{11} & p_{12} & \cdots & p_{1N} \\ p_{21} & p_{22} & \cdots & p_{2N} \\ \vdots & \vdots & \ddots & \vdots \\ p_{N1} & p_{N2} & \cdots & p_{NN} \end{bmatrix} P= ​p11​p21​⋮pN1​​p12​p22​⋮pN2​​⋯⋯⋱⋯​p1N​p2N​⋮pNN​​ ​

其中, p i j p_{ij} pij​表示从状态 i i i到状态 j j j的概率。

p i j p_{ij} pij​ 可以通过统计该过程在实际应用中从状态 i i i 到达状态 j j j 的频率来估计。具体地,假设我们在观察该过程时记录了 T T T 次状态转移,其中第 t t t 次状态转移时从状态 i t i_t it​ 转移到了状态 j t j_t jt​,则状态转移概率可以表示为:

p i j = ∑ t = 1 T I ( i t = i , j t = j ) ∑ t = 1 T I ( i t = i ) p_{ij}=\frac{\sum_{t=1}^{T} I(i_t=i, j_t=j)}{\sum_{t=1}^{T} I(i_t=i)} pij​=∑t=1T​I(it​=i)∑t=1T​I(it​=i,jt​=j)​

其中, I ( ⋅ ) I(\cdot) I(⋅) 是指示函数,当括号中的条件成立时为1,否则为0。

该公式的含义是:状态转移概率 p i j p_{ij} pij​ 等于在所有从状态 i i i 转移到其他状态的次数中,到达状态 j j j 的次数比例。分母表示了从状态 i i i 出发的总次数,分子则表示了从状态 i i i 到状态 j j j 的转移次数。

需要注意的是,当某个状态 i i i 从未出现过或从该状态无法转移到其他状态时,对应的行将全为0。此外,由于状态转移概率矩阵的每一行元素之和必须等于1,因此需要对每一行的各个元素进行归一化处理。

需要注意的是,对于一个马尔可夫链,其状态转移概率需要满足以下两个条件:

  1. 非负性:所有的状态转移概率 p i j p_{ij} pij​都必须大于等于0。
  2. 行和为1性:每一行元素之和必须等于1,即 ∑ j = 1 N p i j = 1 \sum_{j=1}^{N}p_{ij}=1 ∑j=1N​pij​=1。

这两个条件保证了状态转移矩阵的合理性,且使得该马尔可夫链具有无后效性和平稳性。同时,利用状态转移矩阵,我们可以求出该马尔可夫链的平稳分布向量,用于描述该过程在长期的状态分布。

其 m m m 步转移矩阵可以定义为 P m P^m Pm,表示从当前状态出发,经过 m m m 步后到达不同状态的概率矩阵。
具体地,假设该马尔可夫链共有 N N N 个状态,则其 m m m 步转移矩阵中第 i i i 行第 j j j 列表示从状态 i i i 出发经过 m m m 步到达状态 j j j 的概率,即:

( P m ) i j = P ( X n + m = j ∣ X n = i ) (P^m)_{ij}=P(X_{n+m}=j|X_n=i) (Pm)ij​=P(Xn+m​=j∣Xn​=i)

其中, X n X_n Xn​ 表示在时间点 n n n 的状态。

需要注意的是,通过 m m m 步转移矩阵,我们可以预测未来 m m m 个时间点内的状态分布。同时,对于一个平稳的马尔可夫链,当 m m m 趋向于无穷大时, P m P^m Pm 趋近于一个稳定分布 π \pi π,即:

lim ⁡ m → ∞ P m = [ π 1 π 2 ⋯ π N π 1 π 2 ⋯ π N ⋮ ⋮ ⋱ ⋮ π 1 π 2 ⋯ π N ] \lim_{m\to \infty} P^m = \begin{bmatrix}\pi_1 & \pi_2 & \cdots & \pi_N \\ \pi_1 & \pi_2 & \cdots & \pi_N \\ \vdots & \vdots & \ddots & \vdots \\ \pi_1 & \pi_2 & \cdots & \pi_N \end{bmatrix} m→∞lim​Pm= ​π1​π1​⋮π1​​π2​π2​⋮π2​​⋯⋯⋱⋯​πN​πN​⋮πN​​ ​

其中, π i \pi_i πi​ 表示该马尔可夫链在平稳状态下,处于状态 i i i 的概率。

因此,通过 m m m 步转移矩阵,我们不仅可以预测未来一定时间内的状态分布,还可以求出该马尔可夫链在长期平稳状态下的状态分布。

柯尔莫哥洛夫-开普曼定理

柯尔莫哥洛夫-开普曼定理(Kolmogorov-Chapman Theorem)是关于马尔可夫链的基本定理之一,它描述了该链在任意时刻的状态概率分布如何由其初始状态概率分布进行递推计算。

对于一个 N N N 状态的马尔可夫链,其状态转移矩阵可以表示为 P = { p i j } P = \{p_{ij}\} P={pij​}。同时假设该链在时刻 n n n 的状态概率分布为 π n = [ π n , 1 , π n , 2 , ⋯ , π n , N ] \boldsymbol{\pi}_n=[\pi_{n,1},\pi_{n,2},\cdots,\pi_{n,N}] πn​=[πn,1​,πn,2​,⋯,πn,N​],则柯尔莫哥洛夫-开普曼定理可以表示为:

π n + m = π n P m \boldsymbol{\pi}_{n+m}=\boldsymbol{\pi}_n P^m πn+m​=πn​Pm

其中, π n + m \boldsymbol{\pi}_{n+m} πn+m​ 表示在时刻 n + m n+m n+m 的状态概率分布, π n \boldsymbol{\pi}_n πn​ 表示在时刻 n n n 的状态概率分布, P m P^m Pm 表示 m m m 步转移矩阵,表示从当前状态出发,经过 m m m 步到达不同状态的概率矩阵。

该定理的含义是:在已知初始状态概率分布 π n \boldsymbol{\pi}_n πn​ 的情况下,可以通过连续应用 P P P 的幂次来求解该链在任意时刻的状态概率分布。具体地,假设我们已知该链在时刻 n n n 的状态概率分布 π n \boldsymbol{\pi}_n πn​,则可以利用转移矩阵 P P P 将其递推到时刻 n + 1 n+1 n+1 的状态概率分布:

π n + 1 = π n P \boldsymbol{\pi}_{n+1}=\boldsymbol{\pi}_n P πn+1​=πn​P

同理,可以继续递推得到时刻 n + m n+m n+m 的状态概率分布:

π n + m = π n + m − 1 P = ⋯ = π n P m \boldsymbol{\pi}_{n+m}=\boldsymbol{\pi}_{n+m-1} P=\cdots=\boldsymbol{\pi}_n P^m πn+m​=πn+m−1​P=⋯=πn​Pm

因此,柯尔莫哥洛夫-开普曼定理提供了一种计算马尔可夫链状态概率分布的方法,对于很多实际应用都具有重要意义。

隐马尔可夫

隐马尔可夫模型(Hidden Markov Model,HMM),用于描述一个潜在的马尔可夫过程,其中系统的状态不能直接观测到(即隐蔽的),但可以通过某些可观测的特征(观测值)进行间接推断。

隐马尔可夫模型是一个可以描述随机过程的统计模型。它由状态和可观察值组成,其中状态是不可见或“隐藏”的,而每个可观察值依赖于相应时间的状态。

设 Q = { q 1 , q 2 , ⋯ , q N } Q=\{q_1,q_2,\cdots,q_N\} Q={q1​,q2​,⋯,qN​} 表示可能的状态集合, V = { v 1 , v 2 , ⋯ , v M } V=\{v_1,v_2,\cdots,v_M\} V={v1​,v2​,⋯,vM​} 表示观测值集合。在任意时刻 t t t,系统处于 Q Q Q 中的某一状态 i t i_t it​,但该状态对于观察者来说是不可见的,因此称之为“隐状态”。同时,系统会产生一个观测值 o t o_t ot​,它是可见的,并满足条件概率分布 B i ( o t ) B_i(o_t) Bi​(ot​),其中 i ∈ Q i \in Q i∈Q。

隐马尔可夫模型可以用一个五元组 ( Q , V , A , B , π ) (Q,V,A,B,\boldsymbol{\pi}) (Q,V,A,B,π) 来描述,其中:

  • Q Q Q:状态集合, ∣ Q ∣ = N |Q|=N ∣Q∣=N。
  • V V V:观测值集合, ∣ V ∣ = M |V|=M ∣V∣=M。
  • A A A:状态转移矩阵, A i j = P ( i t + 1 = j ∣ i t = i ) A_{ij}=P(i_{t+1}=j|i_t=i) Aij​=P(it+1​=j∣it​=i),表示从状态 i i i 转移到状态 j j j 的概率。
  • B B B:发射矩阵, B i ( o t ) = P ( o t ∣ i t = i ) B_i(o_t)=P(o_t| i_t=i) Bi​(ot​)=P(ot​∣it​=i),表示在状态 i i i 下观测到观测值 o t o_t ot​ 的概率。
  • π \boldsymbol{\pi} π:初始状态概率分布, π i = P ( i 1 = i ) \pi_i=P(i_1=i) πi​=P(i1​=i),表示在时刻 t = 1 t=1 t=1 系统处于状态 i i i 的概率。

隐马尔可夫模型的主要问题包括三个方面:

  • 概率计算问题(Probability Computation Problem):给定模型参数 λ \lambda λ 和观测值序列 O O O,计算出该观测序列的概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)。
  • 学习问题(Learning Problem):给定观测值序列 O O O,求解使得该序列出现概率最大的模型参数 λ \lambda λ。
  • 序列预测问题(Sequence Prediction Problem):给定模型参数 λ \lambda λ 和观测值序列 O O O,求解最可能的状态序列。

其中,概率计算问题和序列预测问题可以通过前向算法和后向算法来求解,学习问题则可以使用Baum-Welch算法(也称为EM算法)进行求解。通过这些算法,我们可以有效地应用隐马尔可夫模型来处理各种问题,例如语音识别、自然语言处理、生物信息学等领域。

在语音识别中,HMM被广泛用于将声音转换为文本。通常认为,一段语音信号是由许多不同的语音单元(音素)组成的。对于每个音素,我们可以建立一个对应的HMM,用于描述该音素的声学特征。随着语音信号的输入,我们可以使用序列预测问题来确定最可能的音素序列,并使用语言模型来转换为文本。类似地,在自然语言处理中,HMM也被应用于分词、词性标注等任务。

此外,隐马尔可夫模型还被广泛应用于基因序列分析、金融风险管理、图像和视频分析等领域。

马尔可夫随机场

马尔可夫随机场,也叫做马尔可夫网或无向图模型,是一个概率分布 P ( X ) P(X) P(X),其中 X = { X 1 , X 2 , ⋯ , X n } X=\{X_1,X_2,\cdots,X_n\} X={X1​,X2​,⋯,Xn​} 表示一组随机变量。这些随机变量之间构成了一个无向图 G = ( V , E ) G=(V,E) G=(V,E),其中 V V V 表示所有节点的集合, E E E 表示所有边的集合,每个节点 i ∈ V i\in V i∈V 对应着一个随机变量 X i X_i Xi​。

为了描述这个概率分布,我们需要定义势函数(Potential Function)。对于任意子集 C ⊆ V C\subseteq V C⊆V,其对应的势函数定义为 ψ C ( X C ) \psi_C(X_C) ψC​(XC​),其中 X C X_C XC​ 表示子集 C C C 中所有随机变量 X i X_i Xi​ 取值的一个特定组合。若 C C C 非空,则 ψ C ( X C ) \psi_C(X_C) ψC​(XC​) 一般是一个非负实数,反映了在观测到子集 C C C 的取值时,该组随机变量的相互作用关系;若 C C C 为空,则可以将其对应的势函数规定为常数。

基于定义的势函数和无向图,马尔可夫随机场的联合概率分布可以表示为:

P ( X ) = 1 Z ∏ C ∈ C ψ C ( X C ) P(X) = \frac{1}{Z} \prod_{C\in \mathcal{C}} \psi_C(X_C) P(X)=Z1​C∈C∏​ψC​(XC​)

其中 C \mathcal{C} C 表示无向图 G G G 中所有的团, Z Z Z 是归一化常数,保证概率分布的非负性和总和为1。

需要注意的是,在马尔可夫随机场中,任意两个不相邻的变量之间是条件独立的。即,对于任意子集 A , B A,B A,B,如果没有一条边连接 A A A 和 B B B 中的任何一个节点,则有:

P ( X A , X B ∣ X V − A − B ) = P ( X A ∣ X V − A − B ) P ( X B ∣ X V − A − B ) P(X_A,X_B|X_{V-A-B})=P(X_A|X_{V-A-B})P(X_B|X_{V-A-B}) P(XA​,XB​∣XV−A−B​)=P(XA​∣XV−A−B​)P(XB​∣XV−A−B​)

这种条件独立性质使得马尔可夫随机场成为了一种有效的概率模型,适用于图像处理、计算机视觉、自然语言处理等领域的各种问题。

马尔可夫聚类

马尔可夫聚类(Markov Clustering, MCL)是一种基于马尔可夫链的聚类算法,它可以用于发现复杂网络中的聚类结构。与传统的聚类算法不同,MCL基于马尔可夫链模型,将网络转化为一个矩阵,并通过迭代计算来刻画节点之间的相似性和聚类信息。

具体来说,MCL算法包含了以下两个主要步骤:

  1. 转移矩阵构建

首先,我们需要将网络表示为一个转移矩阵,其中每个元素 M i j M_{ij} Mij​ 表示从节点 i i i 到节点 j j j 的转移概率。在MCL中,通常采用随机游走策略来定义该转移矩阵。也就是说,我们假设从任意一个节点出发,等概率地随机到达相邻节点,并保证图的连通性。这样,在转移矩阵中,每一行的元素和均为1,即 ∑ j M i j = 1 \sum_j M_{ij}=1 ∑j​Mij​=1。

  1. 迭代计算

基于转移矩阵,我们可以使用幂迭代(Power Iteration)来计算其 k k k次方,得到一个新的矩阵 M k M^k Mk。这里, k k k 是一个大于1的整数,表示迭代的次数。通过不断迭代,矩阵中的元素会发生变化,从而刻画节点之间的相似性和聚类信息。具体来说,我们可以将矩阵中小于某个阈值的元素置为0,并将大于该阈值的元素视为聚类内部的连接。这样,我们就能够在网络中发现聚类结构,并将其可视化。

需要注意的是,MCL算法具有一定的参数敏感性,例如转移概率、迭代次数和阈值等。因此,在实际应用中,需要对参数进行调整,并进行多次试验来获得最优的聚类效果。同时,MCL算法也存在着一些局限性,例如对初始条件的依赖性、计算复杂度较高等问题,需要继续改进和优化。

一阶马尔可夫链预测例子

假设某个人在过去10天里的出行方式记录如下表所示:

步行 骑车 开车
3 4 3

这些数据可以用来估计每种出行方式的初始概率。根据上表,步行、骑车和开车的概率分别为0.3、0.4和0.3。

接着,我们还需要估计每对相邻出行方式之间的转移概率。假设我们再观察这个人在过去10天里相邻两天的出行方式,得到下面的转移情况:

前一天/后一天 步行 骑车 开车
步行 1 2 0
骑车 2 1 1
开车 0 1 2

我们可以将每个单元格中的数字除以该行的总和,来得到从前一天到后一天的转移概率,例如从步行到骑车的转移概率为2/3=0.6667。计算结果如下所示:

前一天/后一天 步行 骑车 开车
步行 0.3333 0.6667 0
骑车 0.5 0.25 0.25
开车 0 0.3333 0.6667

有了这些概率,我们可以用一阶马尔可夫模型来预测未来几天这个人可能的出行方式分布。例如,如果今天这个人的出行方式是步行,那么根据转移概率,明天他可能会骑车的概率为0.6667,开车的概率为0,继续步行的概率为0.3333。

假设我们希望预测未来3天这个人的出行方式,我们可以依次计算这三天后每种出行方式的概率分布。具体来说,我们可以将今天的状态作为初始状态,使用转移概率计算出明天的状态分布,再使用新的状态分布计算后天的状态分布,以此类推。

例如,我们可以先根据今天是步行,使用转移概率得到明天每种出行方式的概率分布:

步行 骑车 开车
0.3333 0.6667 0

接着,我们使用这个概率分布来估计后天每种出行方式的概率分布:

步行 骑车 开车
0.4444 0.3778 0.1778

最后,我们使用这个概率分布来估计大后天每种出行方式的概率分布:

步行 骑车 开车
0.3519 0.4222 0.2259

这样,我们就可以预测未来三天这个人可能的出行方式分布了。需要注意的是,在实践中,我们可能需要使用更多的历史数据和更复杂的模型来进行预测,以提高预测的准确率。

python编程

当涉及到马尔可夫模型时,Python提供了许多有用的工具和库。以下是一些常用于马尔可夫模型的Python库:

  1. NumPy:NumPy是Python中用于数值计算的基础库。使用NumPy,可以轻松地实现矩阵和向量的运算,这在计算状态转移矩阵和预测概率分布时非常有用。

  2. SciPy:SciPy是Python中用于科学计算的库。它包含许多有用的函数和数据结构,例如概率分布、最优化、插值和积分等。对于马尔可夫模型,SciPy中的概率分布函数和生成随机数的函数非常有用。

  3. Pandas:Pandas是Python中一个流行的数据处理库。使用Pandas,可以轻松地处理时间序列数据和表格数据,并进行数据聚合和转换。对于马尔可夫模型,Pandas中的shift和groupby函数非常有用。

  4. PyMC3:PyMC3是Python中一个用于贝叶斯统计建模和推断的库。它提供了广泛的随机变量和分布,并支持MCMC方法进行采样。对于马尔可夫模型,可以使用PyMC3构建和拟合模型,从而估计参数和预测未来状态分布。

  5. HMMlearn:HMMlearn是Python中一个用于隐马尔可夫模型的库。它提供了多种隐马尔可夫模型的实现,包括高斯混合模型、离散模型和连续模型等。对于马尔可夫模型,可以使用HMMlearn来实现一些更复杂的模型。

  6. TensorFlow Probability:TensorFlow Probability是TensorFlow的扩展库之一,用于概率编程和贝叶斯推断。它支持各种分布和随机过程,并提供了强大的梯度计算和优化功能。对于马尔可夫模型,可以使用TensorFlow Probability来构建和拟合复杂的模型,并进行预测和推断。

例子:

import numpy as np# 定义状态空间,这里假设有3种不同的状态
states = ['Sunny', 'Cloudy', 'Rainy']# 定义状态转移矩阵,这里假设在晴天下一天有40%的可能性仍然是晴天,30%的可能性变成多云,30%的可能性变成雨天
trans_matrix = np.array([[0.4, 0.3, 0.3], [0.2, 0.6, 0.2], [0.1, 0.3, 0.6]])# 定义初始状态概率分布,这里假设初始状态为晴天的概率为50%,多云和雨天的概率均为25%
init_dist = np.array([0.5, 0.25, 0.25])# 定义观测序列,这里假设观测到的天气情况是Sunny、Sunny、Cloudy
observations = ['Sunny', 'Sunny', 'Cloudy']# 计算前向概率矩阵
alpha = np.zeros((len(observations), len(states)))
for i in range(len(states)):alpha[0][i] = init_dist[i] * (trans_matrix[i][states.index(observations[0])])
for t in range(1, len(observations)):for j in range(len(states)):alpha[t][j] = np.sum(alpha[t-1] * trans_matrix[:,j]) * (trans_matrix[j][states.index(observations[t])])# 计算预测概率分布
predict_dist = alpha[-1] / np.sum(alpha[-1])
print("One-step-ahead prediction:", predict_dist)

在这个例子中,我们定义了一个包含3种不同状态的马尔可夫模型,即Sunny、Cloudy和Rainy。我们假设初始状态为晴天的概率为50%,多云和雨天的概率均为25%。我们还定义了状态转移矩阵,用于描述状态之间的转移关系。最后,我们定义了一个观测序列,即Sunny、Sunny、Cloudy。通过计算前向概率矩阵和预测概率分布,我们可以估计在观测到这个序列后,下一天的天气情况的概率分布。

参考书籍:
司守奎,孙玺菁 《数学建模算法与应用》(第3版)

参考文章:

学习笔记——详解马尔可夫,马尔可夫链,马尔可夫模型,隐马

【算法学习】马尔可夫过程及经典例题讲解(含代码实现)

注:上述内容部分来自chatgpt、文心一言。

学习笔记:马尔可夫模型相关推荐

  1. 机器学习笔记 增强学习与马尔科夫模型(1)

    本文根据博客以及课堂老师讲授内容整理而来. 吐槽: 继上周介绍了Minimax和Expectimax后,外教这周又给我们介绍了马尔科夫模型,上周兴高采烈的感觉对Optimal Policy有点理解了但 ...

  2. MCMC学习笔记-马尔科夫链概述

    参考文章:MCMC(二)马尔科夫链 - 刘建平Pinard - 博客园 写给小白看的马尔科夫链(Markov Chain)最佳入门教程_许进进的博客-CSDN博客_markov链 目录 1.马尔科夫链 ...

  3. 用hmmlearn学习隐马尔科夫模型HMM

    1. hmmlearn概述 hmmlearn安装很简单,"pip install hmmlearn"即可完成. hmmlearn实现了三种HMM模型类,按照观测状态是连续状态还是离 ...

  4. 机器学习:《统计学习方法》笔记(一)—— 隐马尔可夫模型

    参考:<统计学习方法>--李航:隐马尔可夫模型--码农场 摘要 介绍隐马尔可夫模型的基本概念.概率计算.学习方法.预测方法等内容. 正文 1. 基本概念 隐马尔可夫模型是关于时序的模型,描 ...

  5. 统计学习方法笔记-隐马尔可夫模型(内含Python代码实现)

    一 马尔可夫模型 我们通过一个具体的例子来介绍一下什么是马尔可夫模型 我们假设天气有3种情况,阴天,雨天,晴天,它们之间的转换关系如下: (稍微解释一下这个图,我们可以这样认为,已知第一天是阴天,那第 ...

  6. 隐马尔可夫模型之Baum-Welch算法详解

    隐马尔可夫模型之Baum-Welch算法详解 前言 在上篇博文中,我们学习了隐马尔可夫模型的概率计算问题和预测问题,但正当要准备理解学习问题时,发现学习问题中需要EM算法的相关知识,因此,上一周转而学 ...

  7. 全面理解隐马尔可夫模型

    文章目录 隐马尔可夫模型的基本概念 隐马尔可夫模型的定义 观测序列的生成 隐马尔可夫模型的三个基本问题 概率计算算法 直接计算法 前向算法 后向算法 一些概率与期望值的计算 学习算法 监督学习方法 转 ...

  8. 隐马尔可夫模型(《统计学习方法》、python实现)

    转载地址:http://www.hankcs.com/ml/hidden-markov-model.html 本文是<统计学习方法>第10章的笔记,用一段167行的Python代码实现了隐 ...

  9. hmm 求隐藏序列_隐马尔可夫模型HMM

    以下内容来自刘建平Pinard-博客园的学习笔记,总结如下: 1 隐马尔可夫模型HMM 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别 ...

  10. 10_隐马尔科夫模型HMM2_统计学习方法

    文章目录 四.学习算法 1.监督学习方法 2.非监督学习方法(Baum-Welch算法) 五.预测算法 1.近似算法 2.维特比算法 (1)最优路径特性 (2)两个变量 (3)维特比算法流程 隐马尔科 ...

最新文章

  1. matlab语言中的assert断言函数
  2. ajax获取shiroehcache,Shiro – 使用EhCache缓存
  3. eclipse链接mycat报数据源初始化失败
  4. bzoj5108 数据_成都day3t3
  5. org.jeecgframework.core.common.exception.MyExceptionHandler]java.lang.NullPointerException
  6. 前端跨域,nginx反向代理的解决方案
  7. “弃用 Google AMP!”
  8. 事在四方,要在中央。圣人执要,四方来效
  9. Unicode和UTF编码转换
  10. 如何将CAD转换成黑白的PDF文档?
  11. 关于LinkList和LNode*
  12. 千字文(粱敕员外散骑侍郎周兴嗣撰)
  13. 实现直播带货系统推流,你进行推流监控了吗?
  14. Python基础_Day04
  15. 如何在windows 10或11下制作外接便携式可移植启动盘(以安装最新的ubuntu 22.04为例)
  16. 自动跟圈,不要来回编辑的偷懒小技巧
  17. 在uni-app中使用element-ui
  18. 进一步认识Deepchem的分子特征化: 将化学分子结构作为到随机森林\CNN\RNN\GNN等机器学习模型输入的三种方法
  19. Vue项目清理本地缓存并删除node_modules (清除不掉揍我)
  20. Pic16f1828 1829串口收发

热门文章

  1. Facebook将投资1000万欧元在法国建立AI中心
  2. 微博开启开发者中心——python代码
  3. 论文总结——情感对话
  4. FullMask-MPW
  5. linux 串口波特率的修改与sdma的设置
  6. 拒绝低效丨只需十分钟,提升十倍3D点云连续帧标注效率
  7. CentOS8.4 Samba服务配置
  8. C语言如何表示“真”和“假”,系统如何判断一个量的“真”和“假”?
  9. 札记:如何理解计算机里的卷积——把周围关联信息加权求和,更新本节点的值
  10. 计算机毕业设计SSM儿童绘本租赁网站【附源码数据库】