标签: markov-models

值迭代和策略迭代之间有什么区别?

在强化学习中,策略迭代值迭代之间有什么区别?

根据我的理解,在价值迭代中,您使用Bellman方程来求解最优策略,而在策略迭代中,您随机选择策略π,并找到该策略的奖励.

我怀疑的是,如果你在PI中选择随机策略π,即使我们选择了几个随机策略,它如何保证成为最优策略.

machine-learning reinforcement-learning markov-models value-iteration

65
推荐指数
3
解决办法
4万
查看次数

解码GaussianHMM中的序列

我正在玩Hidden Markov模型来解决股市预测问题.我的数据矩阵包含特定安全性的各种功能:

01-01-2001, .025, .012, .01
01-02-2001, -.005, -.023, .02
Run Code Online (Sandbox Code Playgroud)

我适合一个简单的GaussianHMM:

from hmmlearn import GaussianHMM
mdl = GaussianHMM(n_components=3,covariance_type='diag',n_iter=1000)
mdl.fit(train[:,1:])
Run Code Online (Sandbox Code Playgroud)

使用模型(λ),我可以解码观察向量以找到对应于观察向量的最可能的隐藏状态序列:

print mdl.decode(test[0:5,1:])
(72.75, array([2, 1, 2, 0, 0]))
Run Code Online (Sandbox Code Playgroud)

在上面,我已经解码了观察向量O t =(O 1,O 2,...,O d)的隐藏状态序列,其包含测试集中的前五个实例.我想估计测试集中第六个实例的隐藏状态.想法是迭代第六个实例的一组离散的可能特征值,并选择具有最高似然性的观测序列O t + 1 argmax = P(O 1,O 2,...,O d + 1 |λ ).一旦我们观察到O d + 1的真实特征值,我们就可以将序列(长度为5)移动一次并重新执行:

    l = 5
    for i in xrange(len(test)-l):
        values = []
        for a in arange(-0.05,0.05,.01):
            for b in arange(-0.05,0.05,.01):
                for c in arange(-0.05,0.05,.01):
                    values.append(mdl.decode(vstack((test[i:i+l,1:],array([a,b,c])))))
     print …
Run Code Online (Sandbox Code Playgroud)

python markov-chains markov-models hidden-markov-models hmmlearn

16
推荐指数
1
解决办法
1157
查看次数

隐马尔可夫模型

我想开始使用HMM,但不知道如何去做.人们可以在这里给我一些基本的指示,在哪里看?

不仅仅是理论,我喜欢做很多实践.所以,我更喜欢资源,我可以编写小代码片段来检查我的学习,而不仅仅是干文本.

statistics state-machine markov-models hidden-markov-models

13
推荐指数
1
解决办法
2561
查看次数

在Python中生成马尔可夫转移矩阵

想象一下,我有一系列4种可能的马尔可夫状态(A,B,C,D):

X = [A, B, B, C, B, A, D, D, A, B, A, D, ....]
Run Code Online (Sandbox Code Playgroud)

如何使用Python生成马尔可夫变换矩阵?矩阵必须是4乘4,表示从每个状态移动到其他3个状态的概率.我一直在网上查看很多例子,但是在所有这些例子中,给出了矩阵,而不是基于数据计算的.我也研究了hmmlearn,但我没有读到如何让它吐出过渡矩阵.有没有我可以用于此目的的图书馆?

这是我在Python中尝试做的确切事情的R代码:https: //stats.stackexchange.com/questions/26722/calculate-transition-matrix-markov-in-r

markov-chains markov-models python-3.x

12
推荐指数
2
解决办法
1万
查看次数

如何实现一个简单的马尔可夫模型来为作者分配匿名文本?

假设我已从论坛中收集了帖子.然后我删除了所有用户名和签名,所以现在我只知道哪个帖子在哪个帖子中但不是谁发布了什么,甚至有多少作者(尽管作者的数量明显不能大于文本的数量) .

我想使用马尔可夫模型(看看哪些单词/字母跟随哪些)来弄清楚有多少人使用过这个论坛,哪些帖子是由同一个人写的.为了大大简化,也许一个人倾向于说"他是",而另一个人倾向于说"他是" - 我说的是模型与这种基本逻辑一起工作.

请注意数据有一些明显的问题:有些帖子可能很短(一个单词答案).它们可能是重复的(引用彼此或使用流行的论坛流行语).个别文本不是很长.

有人可能会怀疑一个人连续发帖很少,或者很可能人们更有可能在他们已发布的帖子中发帖.利用这个是可选的.

我们假设帖子是明文,没有标记,论坛上的每个人都使用英语.

我想获得的所有文本的距离矩阵T_i,从而D_ij是文字的可能性T_i和文字T_j是由同一作者写的,基于文字/字符模式.我打算使用这个距离矩阵来聚类文本,并提出诸如"撰写本文的人撰写了哪些其他文本?"之类的问题.

我将如何实际实现这一目标?我需要隐藏的MM吗?如果是这样,隐藏的状态是什么?我理解如何在文本上训练MM然后生成类似的文本(例如,在仙境中生成爱丽丝)但是在我训练频率树之后,我如何用它检查文本以获得它生成的概率那棵树?在构建树时,我应该看一下字母或单词吗?

language-agnostic statistics text-mining markov-models

7
推荐指数
1
解决办法
174
查看次数

用R中的MSwM包复制汉密尔顿马尔可夫切换模型的例子

我试图估计汉密尔顿(1989)的基本马尔可夫转换模型,如电子观点网页中的帖子.该模型本身就是RATS中现有的精确复制.

这是示例的时间序列:

gnp <- 
structure(c(2.59316410021381, 2.20217123302681, 0.458275619103479, 
0.968743815568942, -0.241307564718414, 0.896474791426144, 2.05393216767198, 
1.73353647046698, 0.938712869506845, -0.464778333117193, -0.809834082445603, 
-1.39763692441103, -0.398860927649558, 1.1918415768741, 1.4562004729396, 
2.1180822079447, 1.08957867423914, 1.32390272784813, 0.87296368144358, 
-0.197732729861307, 0.45420214345009, 0.0722187603196887, 1.10303634435563, 
0.820974907499614, -0.0579579499110212, 0.584477722838197, -1.56192668045796, 
-2.05041027007508, 0.536371845140342, 2.3367684244086, 2.34014568267516, 
1.23392627573662, 1.88696478737248, -0.459207909351867, 0.84940472194713, 
1.70139850766727, -0.287563102546191, 0.095946277449187, -0.860802907461483, 
1.03447124467041, 1.23685943797014, 1.42004498680119, 2.22410642769683, 
1.3021017302965, 1.0351769691057, 0.925342521818, -0.165599507925585, 
1.3444381723048, 1.37500136316918, 1.73222186043569, 0.716056342342333, 
2.21032138350616, 0.853330335823775, 1.00238777849592, 0.427254413549543, 
2.14368353713136, 1.4378918561536, 1.5795993028646, 2.27469837381376, 
1.95962653201067, 0.2599239932111, 1.01946919515563, 0.490163994319276, 
0.563633789161385, 0.595954621290765, 1.43082852218349, 0.562301244017229, 
1.15388388887095, 1.68722847001462, 0.774382052478202, -0.0964704476805431, 
1.39600141863966, 0.136467982223878, 0.552237133917267, …
Run Code Online (Sandbox Code Playgroud)

r time-series markov-models hidden-markov-models eviews

6
推荐指数
1
解决办法
3650
查看次数

Java中的马尔可夫模型决策过程

我正在用Java编写辅助学习算法.

我遇到了一个我可以解决的数学问题,但由于处理过程很重,我需要一个最佳解决方案.

话虽这么说,如果有人知道一个非常棒的优化库,但语言是Java所以需要考虑.

这个想法很简单:

对象将存储变量的组合,例如ABDC,ACDE,DE,AE.

组合的最大数量将取决于我可以在不减慢程序速度的情况下运行的数量,因此理论上可以说100.

决策过程将每次迭代生成一个随机变量.如果生成的变量是其中一个组合的一部分,例如.'A'是ABDC和ACDE的一部分,而不是C和B(或存储的组合中的任何后续字母)的倾向将增加.

为了使事情更加清晰,我们假设'A','B','C','D'和'E'是唯一可能的变量.事实是,会有更多像12或14,但这个最大值还取决于我可以处理多少没有滞后.

由于有五个可能的变量,它将为第一次迭代生成加权1/5随机滚动.如果该滚动结果为'A',则在下一次迭代中'B'和'C'现在将具有2/5倾向而不是1/5.

如果下一次迭代产生'B','D'倾向将增加到3/5.注意:关系是指数关系; 实际上,它不会是1/5,而是像10%那样略微提升,如果它达到序列中的第4个变量,它将滚雪球说50%.

现在,在Java中,我可以通过跟踪每个对象的所有存储组合来实现此功能.我在想通过在每次迭代中以小步骤分配跟踪过程,它不应该太慢.

另一种解决方案是绘制所有可能的组合及其潜在的倾向.这当然只需要一个搜索功能,但也会在计算所有可能性和存储在某个地方时出现问题,可能在文件中.

有人建议我应该使用Markov模型和/或库,尽管我对这种类型的数学并不太熟悉.

如何在Java中快速计算此过程?
.

示例>>>

只有一个序列ABC.

对于三个数字,机会开始相等所以它看起来像兰特(1,3)

如果A是结果,我们增加B的可能性,因为它是序列中的下一个字母.让我们说它加倍.

所以现在机会是:A = 1/4,C = 1/4,B = 2/4

该函数现在看起来像rand(1,4),其中3和4的结果都代表选项B.

如果下一个结果是B,我们希望增加C的可能性,因为它是序列中的下一个字符,但是它是上次增加的两倍(指数)

机会现在类似于:A = 1/6,C = 1/6,B = 4/6

该函数现在为rand(1/6),其中值3,4,5,6表示C.

java performance artificial-intelligence reinforcement-learning markov-models

6
推荐指数
1
解决办法
419
查看次数

使用马尔可夫模型将全部大写字母转换为混合大小写和相关问题

我一直在考虑使用马尔可夫技术将缺失的信息恢复为自然语言文本.

  • 将全部大写文本恢复为大小写混合.
  • 将重音符号/变音符号恢复为应具有它们但已转换为纯ASCII的语言.
  • 将粗略的拼音转换回原生字母.

这似乎是最难困难的顺序.基本上,问题在于解决基于上下文的歧义.

我可以使用维基词典和维基百科作为语料库,使用n-gram和隐马尔可夫模型来解决模糊问题.

我是在正确的轨道上吗?是否已经有一些服务,库或工具用于此类事情?

例子

  • 乔治在公共汽车里丢失了他的SIM卡⇨乔治在灌木丛中丢失了他的SIM卡
  • tantot il rit a gorgedeployee⇨antanttilritàgorgedéployée

unicode nlp ambiguity n-gram markov-models

5
推荐指数
1
解决办法
272
查看次数

n-gram 马尔可夫链转移表

我正在尝试从给定的一段文本构建一个 n-gram 马尔可夫模型,然后访问它的转换表,以便我可以计算每个长度为 n(克)的单词序列的条件熵。例如,在 2-gram 模型中,在阅读文本语料库后

“狗追猫狗追猫狗追猫狗追猫狗追猫狗追猫狗追猫狗追猫狗追猫狗追人”

并建立内部转换表,状态“狗追逐”可能以0.9的概率过渡到“追逐猫”状态,以0.1的概率变为“追逐人”状态。如果我知道可能的转换,我就可以计算条件熵。

有没有什么好的python库可以做到这一点?我检查了 NLTK、SRILM 和其他人,但没有找到太多。

python nlp entropy nltk markov-models

5
推荐指数
1
解决办法
1034
查看次数

Morkov Chain如何运作,什么是无记忆?

马尔可夫链如何工作?我已经阅读了马尔可夫链的维基百科,但我没有得到的是无记忆.无记忆状态表明:

下一个状态仅取决于当前状态,而不取决于它之前的事件序列.

如果马尔可夫链具有这种属性,那么马尔可夫模型中链的用途是什么?
解释这个属性.

markov-chains markov markov-models

4
推荐指数
1
解决办法
1572
查看次数