FindHiddenMarkovStates

FindHiddenMarkovStates[data,hmm]

找出输出数据 data 对应的隐马尔可夫过程(HiddenMarkovProcesshmm 的最大似然隐状态.

FindHiddenMarkovStates[data,hmm,crit]

按给定的准则 crit 来找出隐状态.

更多信息

  • FindHiddenMarkovStates 也被称为隐状态破译或 Viterbi 破译.
  • 输出数据 data 可以是列表或 TemporalData 对象.
  • FindHiddenMarkovStates 以和输出数据 data 相同的形式返回隐状态路径. 若在 data 中有多条路径,则也会返回多条隐状态路径.
  • 准则 crit 可能的值包括:
  • "ViterbiDecoding"隐状态序列的最大似然(默认)
    "PosteriorDecoding"每个时间点隐状态的最大似然
  • 给定一个输出序列 "ViterbiDecoding" 最大化状态序列作为一个整体的概率 TemplateBox[{Probability, paclet:ref/Probability}, RefLink, BaseStyle -> {InlineFormula}][x(0)=i_0∧...∧x(n)=i_(n){y(0)=y_0,...,y(n)=y_(n)},...],而 "PosteriorDecoding" 最大化每个时刻状态值的概率 TemplateBox[{Probability, paclet:ref/Probability}, RefLink, BaseStyle -> {InlineFormula}][x(t)=i{y(0)=y_0,...,y(n)=y_(n)},...].

范例

打开所有单元关闭所有单元

基本范例  (1)

假设我们观察一枚公平硬币(状态 1)和一枚不公平硬币(状态 2)的输出:

从观察数据中找出硬币变化的最大似然序列:

范围  (7)

输入为列表时,FindHiddenMarkovStates 也把隐状态序列输出为列表:

TemporalData 形式的输入,输出也是和输入有同样类型的时间序列对象:

FindHiddenMarkovStates 映射到独立的路径上:

每个隐状态路径都是独立找到的:

在一些输出结果含有未知数据时破译状态序列:

为给定的观察序列破译隐状态:

用 Viterbi 破译来找出最大可能的序列:

用后验破译来找出独立的最大似然状态的序列:

用连续输出定义隐马尔可夫过程:

模拟这个过程,包括隐状态的值:

对给定输出找出最大似然状态序列:

比较破译的状态和实际状态:

给定多变量的输出,找出最大似然状态序列:

模拟它:

破译最大似然状态序列:

把结果和真实状态序列做比较:

定义隐状态和输出的联合对数似然:

Viterbi 破译的状态序列有着和实际序列相等或更高的对数似然:

对有静默状态的过程破译状态序列:

找出最大似然状态序列:

突出显示序列中的输出状态:

应用  (3)

一个偶尔不诚实的赌场提供了一种硬币博彩游戏,用一枚正面朝上概率三倍于反面朝上的偏差硬币来进行不公平的欺诈行为. 已知赌场庄家会以 10% 的概率在公平与偏差硬币之间秘密的切换:

得到正面或反面的概率:

作为结果的隐马尔可夫过程,假设选哪个作为起始硬币的概率相等:

给定一个抛掷结果的序列,猜测在哪些时间点庄家使用了有偏差的硬币:

可视化输出并颜色编码来显示隐状态序列:

定义随机过程并破译给定观察下的隐状态:

根据破译的状态值对有时间标记的输出分组:

一个玩具机器人在一个 4×4 的网格上移动,灰色的方格表示墙而机器人不能离开此地图. 机器人在四个方向中随机选一个然后试图移动. 如果不能按选定的方向移动则它会停留在原来的位置:

找出机器人可以访问的方块:

计算允许的转移:

把机器人的移动编码为一个图并覆盖展示在地图上:

为底层的隐状态建立 DiscreteMarkovProcess

机器人的光学感应器的精确度为 90%,当识别失败时会均匀选取用过的颜色:

用隐马尔可夫过程对机器人光学感应器的读取过程建模:

对给定的感应器读取结果序列,用该模型找出机器人在地图上的最大似然动作:

可视化用 "ViterbiDecoding""PosteriorDecoding" 准则破译的路径:

属性和关系  (3)

"ViterbiDecoding" 最大化状态和输出的联合对数似然:

定义状态和输出的联合对数似然:

计算所有可能的状态路径:

计算所有路径组合的联合对数似然:

FindHiddenMarkovStates 返回有最大联合对数似然的状态路径:

"PosteriorDecoding" 找出单独每个时间点的最大似然状态的序列:

定义在时间点 0、1 和 2 的隐状态值的分布:

定义给定隐状态值后输出的分布:

在时间点 0、1 和 2 的条件输出彼此独立:

定义时间点 0、1 和 2 的输出为状态值及条件输出值的函数:

定义输出随机变量等于观测值这一条件:

找出每个时间点的最大似然状态的序列:

与后验破译的结果作比较:

FindHiddenMarkovStates 返回确切的输出,即只有一条路径:

在这种情况下存在两条等概率的路径:

完全的搜索表明只有这两条路径:

可能存在的问题  (2)

若路径和给定的 HMM(隐马尔可夫模型)不一致则 FindHiddenMarkovStates 不求值:

这个输出序列的似然为零:

"PosteriorDecoding" 的结果状态序列可能和状态拓扑不一致:

下列输出序列和隐马尔可夫过程一致:

用后验破译寻找隐状态:

找到的状态序列和状态转移的模型不一致:

Wolfram Research (2014),FindHiddenMarkovStates,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FindHiddenMarkovStates.html.

文本

Wolfram Research (2014),FindHiddenMarkovStates,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FindHiddenMarkovStates.html.

CMS

Wolfram 语言. 2014. "FindHiddenMarkovStates." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/FindHiddenMarkovStates.html.

APA

Wolfram 语言. (2014). FindHiddenMarkovStates. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/FindHiddenMarkovStates.html 年

BibTeX

@misc{reference.wolfram_2024_findhiddenmarkovstates, author="Wolfram Research", title="{FindHiddenMarkovStates}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/FindHiddenMarkovStates.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_findhiddenmarkovstates, organization={Wolfram Research}, title={FindHiddenMarkovStates}, year={2014}, url={https://reference.wolfram.com/language/ref/FindHiddenMarkovStates.html}, note=[Accessed: 22-November-2024 ]}