五、马尔可夫链的两大应用方向
1. 自然系统建模
2. 马尔可夫链蒙特卡洛(MCMC)
六、历史起源
- 由 Markov(马尔可夫不等式提出者)于 1906 年提出
- 初衷:反驳 “大数定律需要 i.i.d.,因而否定自由意志” 的哲学争论
强化学习框架与应用



import matplotlib.pyplot as pltimport numpy as npfrom numpy.random import rand, seed# 1. 初始化状态向量和转移矩阵N_STATES = 2S = np.zeros((2, 1)) # 状态值P = np.zeros((2, 2)) # 转移矩阵S[0] = -1 # 状态1的值S[1] = 1 # 状态2的值# 设定转移概率(自身转移概率0.55,跨状态转移0.45)P[0, 0] = 0.55P[0, 1] = 1.0 - P[0, 0]P[1, 1] = 0.55P[1, 0] = 1.0 - P[1, 1]# 输出基础信息print("State vector:\n", S)print("Transition matrix:\n", P)print("Conditional mean vector:\n", np.dot(P, S))# 2. 模拟马尔可夫链序列(500个观测值)np.set_printoptions(precision=3, suppress=True)seed(12345) # 固定随机种子,保证可复现LEN_HIST = 500 # 模拟长度# 初始化存储矩阵states = np.zeros((LEN_HIST, 2), np.int8) # 存储状态索引和状态值Xarray = np.zeros(LEN_HIST) # 模拟的随机过程(如股票价格)Psim = np.zeros((2, 2)) # 模拟得到的转移矩阵# 状态映射字典S_DICT = {"1": 0, "2": 1} # 状态名称→索引S_VAL = {"1": -1, "2": 1} # 状态名称→值# 生成均匀随机数,用于状态转移判断randarray = rand(LEN_HIST)# 初始化:初始状态为1(索引0),初始价格为75states[0, :] = (S_DICT["1"], S_VAL["1"])Xarray[0] = 75# 模拟状态转移和随机过程for tt in range(1, LEN_HIST): # 判断是否留在当前状态 if P[states[tt - 1, 0], states[tt - 1, 0]] > randarray[tt]: states[tt, :] = states[tt - 1, :] else: # 转移到另一状态 if states[tt - 1, 0] == S_DICT["1"]: states[tt, :] = [S_DICT["2"], S_VAL["2"]] else: states[tt, :] = [S_DICT["1"], S_VAL["1"]] # 更新随机过程(如股票价格 = 前一期价格 + 当前状态值) Xarray[tt] = Xarray[tt - 1] + states[tt, 1] # 统计转移次数,用于后续估计转移矩阵 Psim[states[tt - 1, 0], states[tt, 0]] += 1


(2)吸收状态(Absorbing States)
三、核心总结
马尔可夫性:未来仅依赖当前状态/动作,与历史无关,是RL和马尔可夫链的核心假设。
时齐马尔可夫链:转移概率不随时间变化,转移矩阵为随机矩阵(行和为1)。
多步转移:可通过转移矩阵的幂计算,$P^n$ 对应 n 步转移概率。
概率估计:基于观测数据,用极大似然估计转移概率,模拟长度越长,估计越精准。
平稳分布:长期稳态下的概率分布,满足 $\pi = \pi P$,需满足遍历性才唯一。
吸收状态:$p_{ii}=1$,核心应用于金融违约建模。
衔接:本节课为后续“强化学习复杂方法”和“金融违约模型”奠定基础。
LESSON 2 - 马尔可夫链与信用评级、债券估值- 模型价值:马尔可夫链完美适配信用评级的无后效性特征,可量化评级动态变化、违约时间、长期违约风险
- 实践应用:转移矩阵是信用风险建模与债券定价的核心工具,连接评级变动与资产价值
- 行业痛点
- 后续学习:隐马尔可夫模型(HMM),解决未知转移概率的估计问题
Hidden Markov Model (HMM) 隐马尔可夫模型核心总结
- 马尔可夫链:状态完全可观测;隐马尔可夫模型:状态隐藏、结果可观测。
- 三大核心组件:隐藏状态序列、状态转移概率、观测发射概率。
- 核心逻辑:借助马尔可夫性 + 贝叶斯定理,由可观测时序数据,反推不可观测的内在状态。
- 拓展:暴力枚举仅适用于少量状态;真实场景使用 Viterbi 算法快速求解最优隐藏路径。
Hidden Markov Model(HMM)隐马尔可夫模型 进阶一、HMM 定位与核心优势
- 适用场景:时序 / 序列数据(sequential & temporal data) 经典基准模型。
- 行业通用:是序列任务的 baseline 基础模型。
关键总结
- 马尔可夫链:状态完全可观测;HMM:状态隐藏、输出可观测,在马尔可夫链基础上增加发射过程。
- 三层依赖:初始分布 → 状态时序转移 → 隐状态生成观测。
- 模型本质:用不可观测的离散时序隐状态,解释可观测序列数据的生成规律。
- 后续方向:基于三大参数完整写出联合分布、常用发射分布选择、HMM 三大经典问题(评估、解码、参数估计)。
Hidden Markov Model(HMM)隐马尔可夫模型 进阶补充
四、HMM 核心本质
- 区别于传统概率模型
- 朴素贝叶斯、贝叶斯线性回归:高度依赖概率分布具体形式(如共轭先验)。
- HMM:不依赖单一分布形式,高斯、离散分布均可适配。
- 核心关键模型有效性的核心是概率的因式分解结构+图模型依赖关系,该结构保证推理计算可求解、可高效运算(易处理推断)。
- Hidden Markov Model (HMM):隐马尔可夫模型
- Transition probability:转移概率
- Emission probability:发射概率
- Conditionally independent:条件独立
- Forward-Backward algorithm:前向 - 后向算法
LESSON 3 - Hidden Markov Models(HMM)与Hamilton滤波HMM的提出背景
马尔可夫链在资产估值中已展现出处理“状态”变化(如评级调整)的能力,但该过程需要已知转移矩阵,而转移矩阵的获取难度较大。隐马尔可夫模型(Hidden Markov Models, HMM)作为一种工具,可解决这一问题,适用于通过含噪声的观测值推断不可观测的马尔可夫状态。
二、隐马尔可夫模型(HMM)基础
2.1 定义
HMM是一种分为两个部分的马尔可夫过程:可观测部分和遵循马尔可夫过程的不可观测(“隐藏”)部分。其核心场景是:随机系统通过含噪声的观测值(如股票价格)体现,观测值受不可观测的经济因素影响,广泛应用于语音识别、热力学等多个领域,在金融领域也有重要应用。
3.3.1 定义负对数似然函数(用于优化)
def negative_log_likelihood(params, y): """ Negative log likelihood function for optimization We MINIMIZE this function to MAXIMIZE the likelihood Parameters format: [mu1, mu2, sigma1, sigma2, p11, p22, pi1] """ mu1, mu2, sigma1, sigma2, p11, p22, pi1 = params # Basic constraints to avoid crazy results if sigma1 <= 0 or sigma2 <= 0: return 1e10 if sigma1 >= 1 or sigma2 >= 1: return 1e10 if not (0 <= p11 <= 1) or not (0 <= p22 <= 1): return 1e10 if not (0 <= pi1 <= 1): return 1e10 # Build parameter arrays mu = np.array([mu1, mu2]) sigma = np.array([sigma1, sigma2]) P = np.array([[p11, 1-p11], [1-p22, p22]]) pi = np.array([pi1, 1-pi1]) # Run Hamilton filter to get log-likelihood try: _, _, log_likelihood, _ = hamilton_filter(y, mu, sigma, P, pi) return -log_likelihood except: return 1e10
3.3.2 定义MLE估计函数
def estimate_mle(y, initial_guess=None): """ Maximum Likelihood Estimation using Hamilton Filter We find: θ* = argmax ℒ(θ) = argmin(-ℒ(θ)) Note that maximizing log-likelihood is equivalent to minimizing negative-log-likelihood """ if initial_guess is None: initial_guess = [-1.0, 1.0, 0.8, 0.8, 0.8, 0.8, 0.2] print(f"Initial guess: {initial_guess}") # Try optimization result = minimize(negative_log_likelihood, initial_guess, args=(y,), method='BFGS') print(f"Optimization result: {result.success}") if not result.success: print(f"Warning: {result.message}") print("Results may be unreliable with only 3 observations!") # Extract estimated parameters mu1, mu2, sigma1, sigma2, p11, p22, pi1 = result.x mu_est = np.array([mu1, mu2]) sigma_est = np.array([sigma1, sigma2]) P_est = np.array([[p11, 1-p11], [1-p22, p22]]) pi_est = np.array([pi1, 1-pi1]) # Maximum log-likelihood is negative of minimized value max_log_likelihood = -result.fun return mu_est, sigma_est, P_est, pi_est, max_log_likelihood
.3.3 注意事项
示例中仅用3个观测值,样本量过小,可能导致优化失败或估计结果不可靠;实际应用中需增加观测值数量以提升估计准确性。
四、结论与后续方向
4.1 核心总结
HMM解决了马尔可夫链需已知转移矩阵的痛点,通过可观测值推断不可观测的隐藏状态。
Hamilton滤波是HMM实践的核心,通过“初始化-边际似然-滤波-预测”四步流程,实现隐藏状态概率的推断和似然函数的计算。
Python代码可高效实现Hamilton滤波和参数的极大似然估计,解决手动计算的繁琐问题。
4.2 后续方向
Hamilton滤波是推断机制转换概率的基础,其在股票市场预测中具有重要应用,后续将学习如何利用HMM进行市场预测。
Expectation Maximization (EM) Algorithm
一、EM算法的核心定位
EM算法(Expectation Maximization Algorithm)并非单一算法,而是一类算法的框架/思路,核心用途是:当数据存在缺失(或存在潜在变量)时,近似求解参数的极大似然估计(Maximum Likelihood Estimate, MLE)或最大后验估计(Maximum A Posteriori, MAP)。
核心背景:实际建模中,常存在“观测不到的变量”(潜在变量,记为Z),仅能观测到部分数据(记为X),直接对观测数据的边际似然进行优化难度极大,EM算法通过利用问题结构,提供了一种迭代式的参数估计方法。
二、EM算法的适用场景(含典型示例)
EM算法的核心适用场景:存在缺失数据或潜在变量(Latent Variables)的参数估计问题,以下是两个典型示例:
2.1 隐马尔可夫模型(Hidden Markov Model, HMM)
在HMM中,可观测变量为X(如股票价格、观测序列),潜在变量为Z(隐藏状态,如经济衰退/扩张状态)。Z无法直接观测,属于“缺失数据”,EM算法可用于估计HMM的参数(如转移概率矩阵、观测似然参数等)。
2.2 混合模型(以高斯混合模型为例)
高斯混合模型(Gaussian Mixture Model, GMM)是聚类的常用方法,其中潜在变量Z表示“样本所属的聚类类别”。Z无法直接观测,EM算法可用于估计混合模型的参数(如每个高斯分量的均值、方差、混合权重等)。
2.3 适用场景的共性
LESSON 4 - 期望最大化算法与机制转换模型(基于 VIX 波动率指数的 HMM 实战应用)
马尔可夫链与隐马尔可夫模型(HMM)学习笔记
(基于课程 Lesson 1-4 核心考点整理)