马尔科夫过程中的状态转移

马尔科夫链

它假设了一个“随机冲浪者”模型,冲浪者从某张网页出发,根据 Web 图中的链接关系随机访问。在每个步骤中,冲浪者都会从当前网页的链出网页中,随机选取一张作为下一步访问的目标。
此外,PageRank 还引入了随机的跳转操作,这意味着冲浪者不是按 Web 图的拓扑结构走下去,只是随机挑选了一张网页进行跳转

PageRank 是基于马尔科夫链的。

PageRank

在这里插入图片描述
pi​ 表示第 i 张网页,Mi​ 是 pi​ 的入链接集合,pj​ 是 Mi​ 集合中的第 j 张网页。PR(pj​)​ 表示网页 pj​ 的 PageRank 得分,L(pj​)​ 表示网页 pj​ 的出链接数量,L(pj​)​1​ 就表示从网页 pj​ 跳转到 pi​ 的概率。α 是用户不进行随机跳转的概率,N 表示所有网页的数量.

简化 PageRank 公式

暂时不考虑随机跳转的情况,而只考虑用户按照网页间链接进行随机冲浪
在这里插入图片描述
点乘
在这里插入图片描述
所以,可拆分:
把的PageRank计算,分解为两个矩阵的点乘。一个矩阵是当前每张网页的 PageRank 得分,另一个矩阵就是邻接矩阵。所谓邻接矩阵,其实就是表示图结点相邻关系的矩阵。

在这里插入图片描述

基于行的归一化,指让所有元素加起来的和为 1。

考虑随机

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

在这里插入图片描述

在Python计算马尔可夫链的状态转移概率通常涉及构建一个状态转移矩阵,然后根据这个矩阵进行计算。马尔可夫链是一种随机过程,其下一个状态的概率只依赖于当前状态,与之前的状态无关。状态转移概率矩阵是一个方阵,其的元素表示从一个状态转移到另一个状态的概率。 以下是构建和计算马尔可夫链状态转移概率的基本步骤: 1. 定义状态空间和转移概率:首先确定系统的所有可能状态以及从每个状态转移到其他状态的概率。 2. 创建状态转移矩阵:将这些概率以矩阵的形式组织起来,矩阵的每一行对应一个状态,每一列也对应一个状态。矩阵的元素 \( P_{ij} \) 表示从状态 \( i \) 转移状态 \( j \) 的概率。 3. 确保矩阵符合马尔可夫链的特性:即矩阵的每一行的元素之和等于1,因为系统在任何状态之后必须转移到某个状态。 4. 使用矩阵进行计算:给定一个初始状态分布,可以通过矩阵乘法来计算系统的长期状态分布或其他时间步的分布。 在Python,我们可以使用NumPy库来处理矩阵运算,下面是一个简单的示例: ```python import numpy as np # 假设有三个状态,构建状态转移矩阵 transition_matrix = np.array([[0.9, 0.075, 0.025], [0.15, 0.8, 0.05], [0.25, 0.25, 0.5]]) # 确保每行之和为1 assert np.allclose(transition_matrix.sum(axis=1), np.ones(transition_matrix.shape[0])) # 假设初始状态分布为 [1, 0, 0] initial_state = np.array([1, 0, 0]) # 计算经过一次状态转移后的状态分布 next_state = np.dot(initial_state, transition_matrix) # 输出结果 print("状态转移后的状态分布为:", next_state) # 若要计算长期分布,可以多次进行矩阵乘法或使用矩阵的幂运算 # 这里是一个迭代的例子 for _ in range(5): initial_state = np.dot(initial_state, transition_matrix) print("经过多次转移后的长期状态分布为:", initial_state) ``` 请注意,上述代码的 `assert` 语句用于确保矩阵每行之和为1,这是一个马尔可夫链矩阵的基本要求。在实际使用时,你可能需要根据具体情况来构建状态转移矩阵,并计算不同的状态分布。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值