问题标签 [markov-chains]

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.

0 投票
2 回答
3269 浏览

python - 左特征向量在 scipy 中没有给出正确的(马尔科夫)平稳概率

给定以下马尔可夫矩阵:

平稳概率存在且等于[.6, .4]。这很容易通过矩阵的大幂来验证:

在这里B[0] = [0.6, 0.4]。到现在为止还挺好。根据维基百科

平稳概率向量被定义为在转移矩阵的应用下不改变的向量;也就是说,它被定义为概率矩阵的左特征向量,与特征值 1 相关联:

所以我应该能够计算特征值为 1 的特征向量A,这也应该给我平稳概率。Scipy 的实现eig有一个 left 关键字:

给出:

这说明主要的左特征向量是:[0.83205029, 0.5547002]。我读错了吗?如何[0.6, 0.4]使用特征值分解获得?

0 投票
5 回答
28801 浏览

hidden-markov-models - 马尔可夫链和隐马尔可夫模型有什么区别?

马尔可夫链模型和隐马尔可夫模型有什么区别?我在维基百科中阅读过,但无法理解其中的差异。

0 投票
1 回答
686 浏览

machine-learning - Gibbs 采样代码

这里有没有人使用一些测试实现了吉布斯抽样。我必须实施 Gibbs 抽样,但我在将其确定为实施级别时遇到了问题。

----如何以及从哪里选择测试数据?
----如何根据该数据创建贝叶斯网络?(据我了解,您应该有一些贝叶斯网络可供采样。)

如果有人能在这方面指导我,那将是很大的帮助....

0 投票
1 回答
95 浏览

statistics - Given measurements from a event series as input, how do I generate an infinite input series with the same profile?

I'm currently working with a system that makes scheduling decisions based on a series of requests and the state of the system.

I would like to take the stream of real inputs, mock out some of the components, and run simulations against the rest. The idea is to use it for planning with respect to system capacity (i.e. when to scale certain components), tracking down certain failure modes, and analyzing the effects of changes to the codebase (i.e. simulations with version A compared to simulations with version B).

I can do everything related to this, except generate a suitable input stream. Replaying the exact input from production hasn't been very helpful because it's hard to get a long enough data stream to tease out some of the behavior that I'm trying to find. In other words, if production falls over at 300 days of input, I don't have enough data to find out until after it fell over. Repeating the same input set has been considered; but after a few initial tries, the developers all agree that the simulation seems to "need more random".

About this particular system:

  • The input is a series of irregularly spaced events (i.e. a stochastic process with discrete time and continuous state space).
  • Properties are not independent of each other.
  • Even the more independent of the properties are composites of other properties that will always be, by nature, invisible to me (leading to a multi-modal distribution).
  • Request interval is not independent of other properties (i.e. lots of requests for small amounts of resources come through in a batch, large requests don't).
  • There are feedback loops in it.
  • It's provably chaotic.

So:

Given a stream of input events with a certain distribution of various properties (including interval), how do I generate an infinite stream of events with the same distribution across a number of non-independent properties?

Having looked around, I think I need to do a Markov-Chain Monte-Carlo Simulation. My problem is figuring out how to build the Markov-Chain from the existing input data.

0 投票
1 回答
11793 浏览

matlab - MATLAB中的隐马尔可夫模型

我有 11 个状态和一个转移概率矩阵,但我没有排放,因为我的模型没有隐藏。它仅包含状态 (1,2,3, ..., 11)
我想根据我的转移概率矩阵生成随机状态,但 HMM 工具箱需要一个发射概率矩阵。我应该怎么办?

0 投票
1 回答
6564 浏览

matlab - 在Matlab中构造一个多阶马尔可夫链式转移矩阵

6个状态的一阶转移矩阵可以非常优雅地构造如下

所以这是我的问题,如何优雅地构造一个二阶转换矩阵?我想出的解决方案如下

是否有单线/双线、无环替代方案?

--

编辑:我尝试将我的解决方案与 Amro 的解决方案与“x=round(5*rand([1,1000])+1);”进行比较

有什么不同!仅供参考,grp2idx可在线获得。

0 投票
1 回答
289 浏览

r - 如果状态空间大小超过 27,R 封装 VLMC 就会死掉

我正在使用 VLMC 来拟合一些马尔可夫模型,一旦字母大小达到 28,它就会消失。我认为这是由于默认情况下在字母表中使用了一个字母,但它与“code1char = FALSE”具有相同的行为。这对我来说是真实的数据以及这个假的例子。

有任何想法吗?

段错误看起来像这样 BTW。在我看来,z 映射到 NA 后的字母表会导致数组绑定问题。

0 投票
2 回答
3339 浏览

c# - C# 中的马尔可夫决策过程库

我正在开发一个创建 AI 引擎的项目,其中机器人正在探索 2D 网格世界,并且必须决定接下来要移动到哪个方格。是否有可以使用的现有马尔可夫库(即我只是更改参数)或存在的样本?

0 投票
1 回答
1845 浏览

python - 安排 Celery 任务以最大限度地提高工人生产力的正确方法是什么?

我正在开发一个系统,该系统将为 AI 项目构建一个巨大的 n-gram 模型。
我的管道如下:
资源输入-->获取数据-->解析器-->培训师
资源输入(基本上是必须解析的 URL)不是恒定的,这意味着我可以一次引入大量数千个资源,后来又一大堆几十个等等。

我的想法是将管道的每一步都实现为 Celery 任务并将其部署在云上(例如,使用 Heroku 的 worker dynos)。但是我是 Celery 的新手,我对如何将这些任务排队以使我的工人 100% 工作并同时保持系统的完整性有疑问。
直接的方法是在前一个任务完成后立即开始排队任务,例如,如果我得到 1000 个项目的资源输入,我会安排 1000 个“获取数据”任务,每个任务都会排队一个“解析”任务完成后等等。但这会导致一个巨大的队列,因为在这些任务完成之前会有更多的资源进入,而且我知道构建模型需要几个月的时间(如果它完成的话!)。

所以我不确定 Celery 是否可以在不陷入内存问题(Heroku 有其限制)或我现在无法想象的任何其他问题的情况下处理所有这些问题。或者,也许我应该使用更复杂的技术,例如每 X 分钟调度一次任务块,将部分结果存储在数据库中等。这可能会避免其中一些问题,但我不会得到 100% 的工作时间。

有什么想法吗?
谢谢!


编辑

我的问题的答案实际上在接受答案的评论中

0 投票
2 回答
6293 浏览

python - 计算吸收马尔可夫链的基本矩阵的最佳方法?

我有一个非常大的吸收马尔可夫链(扩展到问题规模——从 10 个状态到数百万个)非常稀疏(大多数状态只能对 4 或 5 个其他状态做出反应)。

我需要计算该链的基本矩阵的一行(给定一个起始状态的每个状态的平均频率)。

通常,我会通过计算来做到这一点(I - Q)^(-1),但我一直无法找到一个实现稀疏矩阵逆算法的好库!我看过一些关于它的论文,其中大多数是博士水平的工作。

我的大部分谷歌结果都指向我的帖子,这些帖子讨论了在求解线性(或非线性)方程组时如何不应该使用矩阵逆......我觉得这不是特别有用。基本矩阵的计算是否类似于求解方程组,而我根本不知道如何以另一种形式表示?

所以,我提出两个具体问题:

计算稀疏矩阵逆矩阵的一行(或所有行)的最佳方法是什么?

或者

计算大型吸收马尔可夫链的基本矩阵行的最佳方法是什么?

Python 解决方案会很棒(因为我的项目目前仍然是一个概念验证),但是如果我不得不用一些好的 Fortran 或 C 来弄脏我的手,那不是问题。

编辑:我刚刚意识到矩阵 A 的逆 B 可以定义为 AB=I,其中 I 是单位矩阵。这可能允许我使用一些标准的稀疏矩阵求解器来计算逆......我必须跑掉,所以请随意完成我的思路,我开始认为这可能只需要一个真正的基本矩阵财产...