问题标签 [markov]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
markov-chains - 马尔可夫链的自由度
我有一组 5000 个长度为 4 的字符串,其中字符串中的每个字符可以是 A、B、C 或 D。
0 阶马尔可夫链(无依赖性),由 A、B、C、D 列组成一个 4*1 数组。
一阶马尔可夫链(pos j 取决于前一个 pos i),形成一个 4*4 行 Ai、Bi、Ci、Di 的矩阵;和 Aj、Bj、Cj、Dj 列。
2 阶马尔可夫链(pos k 取决于 pos j 和 pos i),构成一个 4*4*4 维数为 Ai、Bi、Ci、Di 的矩阵;Aj、Bj、Cj、Dj;和 Ak, Bk, Ck, Dk [或者这构成了一个 16*4 的矩阵 Aij, Bij, Cij, Dij;Ak、Bk、Ck、Dk]。
三阶马尔可夫链(pos l 取决于 pos k、pos j 和 pos i),构成一个 4*4*4*4 维数为 Ai、Bi、Ci、Di 的矩阵;Aj、Bj、Cj、Dj;Ak、Bk、Ck、Dk;Al, Bl, Cl, Dl [或者这构成了一个 64*4 的矩阵 Aijk, Bijk, Cijk, Dijk; Al、Bl、Cl、Dl]。
4 个订单的参数数量是多少?我有一些想法,但想看看其他人的想法。谢谢你的建议!!
r - 模拟马尔可夫链的概率数不正确
我的转移概率矩阵是这样的
并且从中模拟一阶MC的代码是
但由于这是一个非方阵,我得到一个概率不匹配的错误,知道如何解决这个问题
r - Gillespie Stochastic Simulation in Discrete Time using R
I'm simulating a Stochastic Simulation for Epidemiology. How do I simulate it in a discrete time? I managed to obtain for continuous time using the coding below.
How should I alter the coding to get discrete time? Thanking in advance.
matlab - MATLAB中矩阵的不精确幂
无聊时,我检查了重新分级 MARKOV 链的转移矩阵的平稳定理。所以我定义了一个简单的,例如:
平稳定理说,如果您将转移矩阵计算为非常高的幂,那么您将得到其主成分位于行的平稳矩阵。所以让我们试试:
到目前为止一切都很好。我们继续:
好的。让我们再取一个零:
???事情发生了变化......让我们尝试更多:
这里发生了什么,即使行的总和也不再是 1
Aaaand 没了。
我用 R2011a 试过这个。我想在后台有一些奇特的算法,它近似于矩阵的这种高功率。但这怎么会发生呢?哪种算法在此类计算上执行得如此之快,并在这种极端情况下做出这种行为不端?
machine-learning - 在强化学习中设置 gamma 和 lambda
在任何使用广义时间差分(例如 SARSA、Q 学习)的标准强化学习算法中,都会出现一个问题,即对于特定任务,lambda 和 gamma 超参数使用什么值。
我知道 lambda 与资格迹线的长度相关,而 gamma 可以解释为对未来奖励的折扣多少,但是我怎么知道我的 lambda 值对于给定任务何时太低,或者我的 gamma 太高?
我意识到这些问题没有明确的答案,但是了解一些具有不适当值的“危险信号”将非常有用。
以标准的推车杆或倒立摆任务为例。我应该将 gamma 设置为高,因为它需要许多步骤才能使任务失败,还是因为状态信息完全是马尔可夫而设置低?而且我什至无法理解 lambda 值的理性...
algorithm - 学习用户输入和提供建议的算法
我正在寻找一种算法,分别是一种在某个程序中学习用户操作(输入)的方法,并基于已完成的用户操作的构建信息库,为用户提供未来操作的建议。信息库应该由使用同一软件的多个用户的操作构建而成。用户操作取决于它们发生的顺序。这意味着,应该根据会话中已经完成的用户操作来提出建议。会话是一个抽象的时间段,用户在其中使用软件。
在我最初的方法中,我考虑在有向图中对用户操作进行建模,其中每个节点代表一个唯一的用户操作实例。第一次完成的用户操作会生成一个新节点。节点有一个计数器,表示用户执行此用户操作的频率。当用户操作在另一个节点之后完成时,存在从一个节点到另一个节点的转换(对用户操作序列建模)。对于每个转换,概率是基于后续节点(即,存在转换的节点)的计数器计算的。有一个根节点作为起点,指向所有初始节点(用户操作在会话中首先完成)。这可能是一个(隐藏的)马尔可夫模型,但我不确定。它绝对不是贝叶斯网络,因为它可以是循环图(可取)。
这个问题是否已经有方法、算法、库等?如果没有,我的方法如何?任何替代方案,更好的想法?
machine-learning - 使用隐藏马尔可夫模型进行预测
假设有一个观察序列,例如[1,2,3,5,5,5,2,3,2,3, ..., 3, 4]
。我正在尝试使用 Scikit-learn 中 HMM 的当前实现来预测这个观察序列的下一个值。我对此有两个问题。
给定一系列观察结果,我如何预测下一个观察结果(如上所述)?
给定n个观察的许多序列和这些序列的n+1个观察,HMM可以用来预测一个新的n个观察序列的第(n+1)个观察吗?如果有怎么办?
我无法从文档中掌握太多关于这一点的信息。
我发现了一个可能的重复,但它没有指定如何在 Scikit-learn 中使用 HMM 来预测序列中的下一个值。
algorithm - 这类 MDP 是否有有效的解决方案?
大约一个月以来,我一直致力于制作游戏求解器,尝试了各种策略,但大多数都以蛮力为导向。这适用于更简单的游戏情况,但不适用于更复杂的情况(更高的游戏树深度)。这是游戏的抽象表述:
1)有一组可能的动作要做,A。
2) 将动作应用于状态会产生可能状态的概率分布。应用(A, s) = [[s1, p1], [s2, p2], [s3, p3]]
3) 当达到目标状态时,游戏结束。
4) 每个状态都有一个与之相关的分数。
3) 有两种类型的目标状态,“成功”状态的得分是其前一状态的得分,“失败”状态的得分为 0。
5) 目标是制定一种策略,使游戏结束时的平均得分最大化。
6) 没有循环。所有路径的长度都是有限的。
我尽可能以最抽象的方式制定游戏,因为我认为这是人们最熟悉的游戏。我目前的策略是一个简单的深度优先搜索,它缓存独特的状态以防止工作重复。这一直有效到大约 2 亿个唯一状态,这是我内存不足的时候。在我开始分解较低级别的细节以找到优化之前,我想知道是否有任何巧妙的算法适用于游戏的一般情况。如果有人对如何生成状态转换的细节感兴趣,我可以提供。以下是我将问题减少为已知问题的一些方法。
1) 随机马尔可夫决策过程,其中状态奖励函数对于任何非目标状态为 0,否则为目标状态的得分。我知道 MDP 的通用算法不是很有效,但是某些类型的 MDP 有有效的解决方案。这个问题是否适合这些特定类别之一?
2) 具有负边权的有向无环图中的随机最长路径问题。
clojure - clojure 简单马尔可夫数据转换
如果我有一个单词向量,例如 ["john" "said"... "john" "walked"...] 并且我想制作每个单词的哈希映射以及下一个单词的出现次数,例如{“约翰”{“说”1“走”1“踢”3}}
我想出的最佳解决方案是按索引递归遍历列表并使用 assoc 不断更新哈希映射,但这看起来真的很混乱。有没有更惯用的方式来做到这一点?
python - PyMC:马尔可夫系统中的参数估计
一个简单的马尔可夫链
假设我们想要估计一个系统的参数,以便我们可以在给定时间步 t 的状态的情况下预测系统在时间步 t+1 的状态。PyMC 应该能够轻松处理这个问题。
让我们的玩具系统由一维世界中的移动物体组成。状态是对象的位置。我们要估计潜在变量,即物体的速度。下一个状态取决于前一个状态和潜变量速度。
我们假设我们的观察中有一些噪音(但这在这里无关紧要)。
问题是:如何对下一个状态对当前状态的依赖进行建模。我可以为转换函数提供一个参数 idx 来访问时间 t 的位置,然后预测时间 t+1 的位置。
但是,索引似乎是一个不适合索引的数组。可能有更好的方法来访问以前的状态。